Практична робота 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 балів: Практична робота виконана згідно навчально-методичних вимог за запропонованим завданням у розрізі окремого варіанту.
Матеріал опрацьовано фрагментарно, представлено не у повному обсязі і викладено з помилками у розрахунках. Неакуратне оформлення.
Студент формулює суперечливі, неправильні висновки або ті, які не відповідають запропонованій темі.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання