Практична робота 6. Технології нейронних мереж та генетичні алгоритми
Практична робота №5. ТЕХНОЛОГІЇ НЕЙРОННИХ МЕРЕЖ ТА ГЕНЕТИЧНІ АЛГОРИТМИ
Тема 5. ТЕХНОЛОГІЇ НЕЙРОННИХ МЕРЕЖ ТА ГЕНЕТИЧНІ АЛГОРИТМИ
Мета роботи: Розглянути особливості побудови нейронних мереж в середовищі R
Завдання. Побудувати нейронну мережу (або багатошаровий персептрон в залежності від умов іменування), який зможе взяти число і обчислити квадратний корінь (або максимально наблизитися).
Бібліотека «neuralnet» R буде використовуватися для навчання та побудови нейронної мережі. Похибка не може бути більшою 4%.
Методичні вказівки.
install.packages('neuralnet')
library("neuralnet")
# Перейдіть, щоб створити нейронну мережу, щоб знайти корінь квадратний
#Виберіть? Neuralnet для отримання додаткової інформації про бібліотеку neuralnet
#Згенеруйте 50 випадкових чисел, рівномірно розподілених між 0 і 100
# І збережіть їх як датафрейм
traininginput <- as.data.frame(runif(50, min=0, max=100))
trainingoutput <- sqrt(traininginput)
#Функція «Column» пов'язує дані в одну змінну
trainingdata <- cbind(traininginput,trainingoutput)
colnames(trainingdata) <- c("Input","Output")
# Протестуйте нейронну мережу
#Threshold - числове значення, що визначає поріг часткового
# Похідні помилки функціонують як критерії зупинки.
net.sqrt <- neuralnet(Output~Input,trainingdata, hidden=10, threshold=0.01)
print(net.sqrt)
#Побудуйте графік the neural network
plot(net.sqrt)
# Протестуйте нейронну мережу на деяких навчальних даних
testdata <- as.data.frame((1:10)^2) #Зробити деякі квадратичні числа
net.results <- compute(net.sqrt, testdata) # Виконуйте їх через нейронну мережу
# Подивіться, які властивості має net.sqrt
ls (net.results)
#Дозволяє переглянути результати
print (net.results $ net.result)
#Lets відображає кращу версію результатів
cleanoutput <- cbind (testdata, sqrt (testdata),
as.data.frame (net.results $ net.result))
colnames(cleanoutput) <- c("Input","Expected Output","Neural Net Output")
print(cleanoutput)
Завдання. Деталі набору даних наведено за наступним посиланням: http://lib.stat.cmu.edu/DASL/Datafiles/Cereals.html. Дані у форматі .csv можна завантажити з прикріпленого файлу.
Методичні вказівки.
Встановіть робочу область в R за допомогою функції setwd () і збережіть cereal.csv у робочому каталозі. Ми використовуємо рейтинг як залежну змінну і калорії, білки, жир, натрій і клітковину як незалежні змінні. Розділяємо дані на навчальний і тестовий набір. Навчальний набір використовується для пошуку взаємозв'язку між залежними і незалежними змінними, а тестовий набір оцінює продуктивність моделі. Ми використовуємо 60% набору даних як навчальний набір. Призначення даних тренувальному і тестовому наборам здійснюється за допомогою випадкової вибірки. Ми виконуємо випадкову вибірку на R за допомогою функції sample (). Ми використали set.seed () для створення кожного випадкового зразка кожного разу і підтримуємо узгодженість. Ми будемо використовувати змінні індексу під час встановлення нейронної мережі для створення наборів даних навчання та тестування. Сценарій R такий:
## Створення змінної індексу
# Зчитування даних
data = read.csv("cereals.csv", header=T)
# Випадкова вибірка
samplesize = 0.60 * nrow(data)
set.seed(80)
index = sample( seq_len ( nrow ( data ) ), size = samplesize )
# Створіть навчальний і тестовий набір
datatrain = data[ index, ]
datatest = data[ -index, ]
Тепер ми вмістимо нейронну мережу на наших даних. Для аналізу використовується бібліотека neuralnet. Перший крок полягає в масштабі набору даних для зернових. Масштабування даних є важливим, оскільки в іншому випадку змінна може мати великий вплив на змінну передбачення тільки через її масштаб. Використання немасштабних результатів може призвести до безглуздих результатів. Загальними методами масштабування даних є: нормалізація мінімальних значень, нормалізація Z-балів, медіана і MAD, і оцінки tan-h. Нормалізація min-max перетворює дані в загальний діапазон, таким чином видаляючи ефект масштабування з усіх змінних. На відміну від Z-score нормалізації та медіани та методу MAD, метод min-max зберігає початковий розподіл змінних. Ми використовуємо нормалізацію min-max для масштабування даних. Сценарій R для масштабування даних полягає в наступному.
## Масштаб для нейронної мережі
max = apply(data , 2 , max)
min = apply(data, 2 , min)
scaled = as.data.frame(scale(data, center = min, scale = max - min))
Масштабовані дані використовуються для підгонки нейронної мережі. Ми візуалізуємо нейронну мережу з вагами для кожної змінної. Сценарій R виглядає наступним чином.
## Створити нейронну мережу
# встановити бібліотеку
install.packages("neuralnet ")
# загрузити бібліотеку
library(neuralnet)
# створити навчальний та тренувальний тест
trainNN = scaled[index , ]
testNN = scaled[-index , ]
# вивести занчення нейронної мережі
set.seed(2)
NN = neuralnet(rating ~ calories + protein + fat + sodium + fiber, trainNN, hidden = 3 , linear.output = T )
# побувати графік нейронної мережі
plot(NN)
# Прогнозування з використанням нейронної мережі
predict_testNN = compute(NN, testNN[,c(1:5)])
predict_testNN = (predict_testNN$net.result * (max(data$rating) - min(data$rating))) + min(data$rating)
lot(datatest$rating, predict_testNN, col='blue', pch=16, ylab = "predicted rating NN", xlab = "real rating")
bline(0,1)
# Розрахувати середню квадратичну похибку (RMSE)
RMSE.NN = (sum((datatest$rating - predict_testNN)^2) / nrow(datatest)) ^ 0.5
Форма подання: виконана робота надсилається на сайт у форматі Word.
Критерії оцінювання: за правильно і вчасно виконану роботу максимальна оцінка - 11 балів. Оцінюються правильність розрахунків і зроблених висновків.
11 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано у повному обсязі і викладено правильно, логічно і послідовно, немає зауважень щодо змісту.
Під час захисту роботи на парі студент вправно формулює висновки за темою дослідження.
10 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано у повному обсязі і викладено правильно і послідовно, немає суттєвих зауважень щодо змісту.
Під час захисту роботи на парі студент формулює висновки за темою дослідження.
9 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано у повному обсязі і викладено правильно і послідовно, немає суттєвих зауважень щодо змісту.
Студент формулює висновки з певними неточностями або ті, які не відповідають запропонованій темі.
8 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано у повному обсязі і викладено з певними помилками у розрахунках, немає суттєвих зауважень щодо змісту. Неакуратне оформлення.
Студент формулює висновки з певними неточностями або ті, які не відповідають запропонованій темі.
7 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано у певному обсязі і викладено з помилками у розрахунках. Неакуратне оформлення.
Студент формулює суперечливі, неправильні висновки або ті, які не відповідають запропонованій темі.
1-6 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано фрагментарно, представлено не у повному обсязі і викладено з помилками у розрахунках. Неакуратне оформлення.
Студент формулює суперечливі, неправильні висновки або ті, які не відповідають запропонованій темі.
Шрифти
Розмір шрифта
Колір тексту
Колір тла