Однослойные нейронные сети в R-программировании
Нейронные сети, также известные как нейронные сети, представляют собой тип алгоритма машинного обучения и искусственного интеллекта, который работает так же, как человеческий мозг. Искусственные нейроны в нейронной сети демонстрируют то же поведение нейронов в человеческом мозгу. Нейронные сети используются для анализа рисков бизнеса, прогнозирования продаж и многого другого. Нейронные сети адаптируются к изменению входных данных, поэтому нет необходимости снова разрабатывать алгоритм на основе входных данных. В этой статье мы обсудим однослойную нейронную сеть с ее синтаксисом и реализацию функции neuralnet()
в R-программировании. Для следующей функции требуется пакет neuralnet
Типы нейронных сетей
Нейронные сети можно разделить на несколько типов в зависимости от их фильтров активации глубины, структуры, используемых нейронов, плотности нейронов, потока данных и т. Д. Типы нейронных сетей следующие:
- Перцептрон
- Нейронные сети с прямой связью
- Сверточные нейронные сети
- Нейронные сети с радиальной базисной функцией
- Рекуррентные нейронные сети
- От последовательности к модели последовательности
- Модульная нейронная сеть
В зависимости от количества слоев различают два типа нейронных сетей:
- Однослойная нейронная сеть: однослойная нейронная сеть содержит входной и выходной уровни. Входной слой принимает входные сигналы, а выходной слой соответственно генерирует выходные сигналы.
- Многослойная нейронная сеть: многослойная нейронная сеть содержит ввод, вывод и один или несколько скрытых слоев. Скрытые слои выполняют промежуточные вычисления перед направлением ввода на выходной слой.
Однослойная нейронная сеть
Однослойная нейронная сеть, которую часто называют персептронами, представляет собой тип нейронной сети с прямой связью, состоящей из входных и выходных слоев. Предоставленные входные данные многомерны. Персептроны по своей природе ациклические. Сумма произведения весов и входных данных вычисляется в каждом узле. Входной слой передает сигналы выходному слою. Выходной слой выполняет вычисления. Персептрон может изучать только линейную функцию и требует меньшего количества обучающих данных. Выход может быть представлен одним или двумя значениями (0 или 1).
Реализация в R
Язык R предоставляет neuralnet()
которая доступна в neuralnet
для выполнения одноуровневой нейронной сети.
Syntax:
neuralnet(formula, data, hidden)Parameters:
formula: represents formula on which model has to be fitted
data: represents dataframe
hidden: represents number of neurons in hidden layersTo know about more optional parameters of the function, use below command in console: help(“neuralnet”)
Пример 1:
В этом примере давайте создадим однослойную нейронную сеть или перцептрон ирисов видов растений setosa и versicolor на основе длины и ширины чашелистиков.
Шаг 1. Установите необходимый пакет.
# Install the required package install.packages ( "neuralnet" ) |
Шаг 2: Загрузите пакет
# Load the package library (neuralnet) |
Шаг 3. Загрузите набор данных
# Load dataset df <- iris[1:100, ] |
Шаг 4: настройка нейронной сети
nn = neuralnet (Species ~ Sepal.Length + Sepal.Width, data = df, hidden = 0, linear.output = TRUE ) |
Шаг 5: Постройте нейронную сеть
# Output to be present as PNG file png (file = "neuralNetworkGFG.png" ) # Plot plot (nn) # Saving the file dev.off () |
Выход:
Пример 2:
В этом примере давайте создадим более надежную нейронную сеть с использованием многослойной нейронной сети и сделаем прогнозы на основе набора данных.
Шаг 1. Установите необходимый пакет.
# Install the required package install.packages ( "neuralnet" ) |
Шаг 2: Загрузите пакет
# Load the package library (neuralnet) |
Шаг 3. Загрузите набор данных
# Load dataset df <- mtcars |
Шаг 4: настройка нейронной сети
nn <- neuralnet (am ~ vs + cyl + disp + hp + gear + carb + wt + drat, data = df, hidden = 3, linear.output = TRUE ) |
Шаг 5: Постройте нейронную сеть
# Output to be present as PNG file png (file = "neuralNetwork2GFG.png" ) # Plot plot (nn) # Saving the file dev.off () |
Шаг 6. Создайте тестовый набор данных
# Create test dataset vs = c (0, 1, 1) cyl = c (6, 8, 8) disp = c (170, 250, 350) hp = c (120, 240, 300) gear = c (4, 5, 4) carb = c (4, 3, 3) wt = c (2.780, 3.210, 3.425) drat = c (3.05, 4.02, 3.95) test <- data.frame (vs, cyl, disp, hp, gear, carb, wt, drat) |
Шаг 7. Сделайте прогноз для тестового набора данных
Predict <- compute (nn, test) cat ( "Predicted values:
" ) print (Predict$net.result) |
Шаг 8: преобразовать прогноз в двоичные значения
probability <- Predict$net.result pred <- ifelse (probability > 0.5, 1, 0) cat ( "Result in binary values:
" ) print (pred) |
Выход:
Прогнозируемые значения: [, 1] [1,] 0,3681382 [2,] 0,9909768 [3,] 0,9909768 Результат в двоичных значениях: [, 1] [1,] 0 [2,] 1 [3,] 1
Объяснение:
В приведенных выше выходных данных значение «am» для каждой строки набора тестовых данных прогнозируется с использованием многослойной нейронной сети. Как и в нейронной сети, созданной функцией, прогнозируемые значения больше 0,49 делают значение «am» автомобиля равным 1.
Преимущества однослойной нейронной сети
- Однослойные нейронные сети легко настраивать и обучать, поскольку отсутствуют скрытые слои.
- Имеет явные ссылки на статистические модели.
Недостатки однослойной нейронной сети
- Он может работать лучше только для линейно разделяемых данных.
- Однослойная нейронная сеть имеет низкую точность по сравнению с многослойной нейронной сетью.