Однослойные нейронные сети в R-программировании

Опубликовано: 19 Июля, 2021

Нейронные сети, также известные как нейронные сети, представляют собой тип алгоритма машинного обучения и искусственного интеллекта, который работает так же, как человеческий мозг. Искусственные нейроны в нейронной сети демонстрируют то же поведение нейронов в человеческом мозгу. Нейронные сети используются для анализа рисков бизнеса, прогнозирования продаж и многого другого. Нейронные сети адаптируются к изменению входных данных, поэтому нет необходимости снова разрабатывать алгоритм на основе входных данных. В этой статье мы обсудим однослойную нейронную сеть с ее синтаксисом и реализацию функции neuralnet() в R-программировании. Для следующей функции требуется пакет neuralnet

Типы нейронных сетей

Нейронные сети можно разделить на несколько типов в зависимости от их фильтров активации глубины, структуры, используемых нейронов, плотности нейронов, потока данных и т. Д. Типы нейронных сетей следующие:

  1. Перцептрон
  2. Нейронные сети с прямой связью
  3. Сверточные нейронные сети
  4. Нейронные сети с радиальной базисной функцией
  5. Рекуррентные нейронные сети
  6. От последовательности к модели последовательности
  7. Модульная нейронная сеть

В зависимости от количества слоев различают два типа нейронных сетей:

  1. Однослойная нейронная сеть: однослойная нейронная сеть содержит входной и выходной уровни. Входной слой принимает входные сигналы, а выходной слой соответственно генерирует выходные сигналы.
  2. Многослойная нейронная сеть: многослойная нейронная сеть содержит ввод, вывод и один или несколько скрытых слоев. Скрытые слои выполняют промежуточные вычисления перед направлением ввода на выходной слой.

Однослойная нейронная сеть

Однослойная нейронная сеть, которую часто называют персептронами, представляет собой тип нейронной сети с прямой связью, состоящей из входных и выходных слоев. Предоставленные входные данные многомерны. Персептроны по своей природе ациклические. Сумма произведения весов и входных данных вычисляется в каждом узле. Входной слой передает сигналы выходному слою. Выходной слой выполняет вычисления. Персептрон может изучать только линейную функцию и требует меньшего количества обучающих данных. Выход может быть представлен одним или двумя значениями (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 layers

To 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.

Преимущества однослойной нейронной сети

  • Однослойные нейронные сети легко настраивать и обучать, поскольку отсутствуют скрытые слои.
  • Имеет явные ссылки на статистические модели.

Недостатки однослойной нейронной сети

  • Он может работать лучше только для линейно разделяемых данных.
  • Однослойная нейронная сеть имеет низкую точность по сравнению с многослойной нейронной сетью.