Глубокое обучение в программировании на R

Опубликовано: 17 Февраля, 2022

Глубокое обучение - это тип искусственного интеллекта или функции ИИ, который пытается имитировать или имитировать принцип работы человеческого мозга для обработки данных и создания шаблонов для целей принятия решений. Это подмножество машинного обучения или машинного обучения в искусственном интеллекте, который владеет или имеет сети, способные к неконтролируемому обучению на основе немаркированных или неструктурированных данных. Глубокое обучение также можно назвать глубоким нейронным обучением или глубокой нейронной сетью. Искусственный интеллект с глубоким обучением способен обучаться без участия человека, используя любые данные. Будучи подмножеством машинного обучения, глубокое обучение использует искусственную нейронную сеть иерархического уровня для выполнения процедур или процессов машинного обучения. С помощью глубокого обучения мы можем распутать огромное количество неструктурированных данных. Обычно людям требуются десятилетия, чтобы понять и обработать это.

Реализация в R

Со временем R Language был дополнен множеством пакетов глубокого обучения в CRAN. Вот некоторые из этих пакетов:

Имя пакета R

Описание

nnet

Используется для NN с прямой связью, имеющей единственный скрытый слой

или для полиномиальной лог-линейной модели.

нейронная сеть Используется при обучении нейронной сети с использованием обратного распространения.
H2O Это функциональность сценариев R для H2O.
RSNNS Интерфейс к Stuttgart NN Simulator.
тензорный поток Интерфейс для TensorFlow.
глубокая сеть Это набор инструментов на языке R для глубокого обучения.
черпать

Это пакет для глубинных архитектур и

Ограниченные машины Больцмана.

rnn Пакет для реализации Recurrent NN.
FCNN4R Интерфейс для библиотеки FCNN, позволяющий создавать ИНС, расширяемые пользователем.
rcppdl Используется для реализации машинного обучения.
глубже

Основанный на darch и deepnet, это пакет для

повысить эффективность обучения, прогнозирования процесса

и тонкая настройка для глубокого обучения.

В последнее время Keras, kerasR и keras также используются для целей глубокого обучения. Здесь мы будем использовать пакет deepnet для реализации глубокого обучения. Приступим к пошаговой процедуре реализации. Весь процесс внедрения можно разделить на следующие этапы:

Шаг 1: установка и загрузка пакетов

Before proceeding with the implementations, install the required packages. For our implementation, we will require the deepnet and mlbench packages. To install these packages from the R Console use the install.packages() command. On successful installation of these packages, load them in the R Script using the library() command as follows:

R

# Deep Learning in R
# loading the required packages
library(mlbench)
library(deepnet)

Шаг 2: выбор набора данных

Now the task is to select a proper dataset for the implementation. Here let’s work with the Breast Cancer Dataset under the mlbench package. Include the data set in the R Script as follows:

R

# Deep learning in R
# loading the required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
head(BreastCancer)
names(BreastCancer)

Выход:

 > голова (BreastCancer)
       Id Толщина клетки Размер клетки Форма клетки Маржа адгезии Размер эпит.ц. Голые ядра Бл. Хроматин Нормальные ядра Класс митозов
1 1000025 5 1 1 1 2 1 3 1 1 доброкачественный
2 1002945 5 4 4 5 7 10 3 2 1 доброкачественный
3 1015425 3 1 1 1 2 2 3 1 1 доброкачественный
4 1016277 6 8 8 1 3 4 3 7 1 доброкачественный
5 1017023 4 1 1 3 2 1 3 1 1 доброкачественный
6 1017122 8 10 10 8 7 10 9 7 1 злокачественный
> имена (BreastCancer)
 [1] «Id» «Cl.thickness» «Cell.size» «Cell.shape» «Marg.adhesion» «Epith.c.size» «Bare.nuclei»    
 [8] «Бл. Хроматин» «Нормальные ядра» «Митозы» «Класс» 

Шаг 3. Применение пакета deepnet к набору данных

Apply the deep learning package on the chosen dataset. Here, create a set of features for independent variables, and create the dependent variable.

R

# Deep learning in R
# Loading the required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)

Шаг 4: Моделирование NN

Apply nn.train() function under the deepnet package in order to model the neural network.

R

# Deep learning in R
# Loading packages in R
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)
  
# Applying nn.train() function
nn <- nn.train(x, y, hidden = c(5))
yy = nn.predict(nn, x)
print(head(yy))

Выход:

 > печать (голова (гг))
          [, 1]
[1,] 0,2743838
[2,] 0,4130857
[3,] 0,2892783
[4,] 0,4232022
[5,] 0,2817078
[6,] 0,4526502

Шаг 5: Создание матрицы путаницы

Retrieve the neural network’s output and then convert it into class. In order to create a confusion matrix, use the table() function. Also check the accuracy of the confusion matrix by dividing the sum of the diagonal elements with the total count or sum of all the numbers.

R

# Deep Learning in R
# Loading required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)
  
# Applying nn.train() method
nn <- nn.train(x, y, hidden = c(5))
yy = nn.predict(nn, x)
print(head(yy))
yhat = matrix(0,length(yy), 1)
yhat[which(yy > mean(yy))] = 1
yhat[which(yy <= mean(yy))] = 0
  
# Applying table() function
cm = table(y, yhat)
print(cm)
print(sum(diag(cm))/sum(cm))

Выход:

 > печать (см)
   yhat
г 0 1
  0 425 19
  1 4 235
> печать (сумма (диаг (см)) / сумма (см))
[1] 0,966325