原文链接:tecdat.cn/?p=19936

在本教程中,您将学习如何在R中创立神经网络模型 点击文末“阅读原文”获取完好代码数据)。**

神经网络(或人工神经网络)具有经过样本进行学习的能力。人工神经网络是一种受生物神经元体系启发的信息处理模型。它由很多高度互连的处理元件(称为神经元)组成,以解决问题。它遵从非线性途径,并在整个节点中并行处理信息。神经网络是一个杂乱的自适应体系。自适应意味着它能够经过调整输入权重来更改其内部结构。

该神经网络旨在解决人类容易遇到的问题和机器难以解决的问题,例如辨认猫和狗的图片,辨认编号的图片。这些问题通常称为形式辨认。它的运用范围从光学字符辨认到目标检测。

本教程将包括以下主题:

  • 神经网络概论
  • 正向传达和反向传达
  • 激活函数
  • R中神经网络的完成
  • 案例
  • 利害
  • 结论

神经网络概论

神经网络是受人脑启发执行特定使命的算法。它是一组衔接的输入/输出单元,其间每个衔接都具有与之关联的权重。在学习阶段,网络经过调整权重进行学习,来猜测给定输入的正确类别标签。

人脑由数十亿个处理信息的神经细胞组成。每个神经细胞都认为是一个简略的处理体系。被称为生物神经网络的神经元经过电信号传输信息。这种并行的交互体系使大脑能够考虑和处理信息。一个神经元的树突接收来自另一个神经元的输入信号,并依据这些输入将输出响应到某个其他神经元的轴突。

R语言中的BP神经网络模型分析学生成绩|附代码数据

树突接收来自其他神经元的信号。单元体将一切输入信号求和以生成输出。当总和到达阈值时经过轴突输出。突触是神经元相互作用的一个点。它将电化学信号传输到另一个神经元。

R语言中的BP神经网络模型分析学生成绩|附代码数据

R语言中的BP神经网络模型分析学生成绩|附代码数据

x1,x2 …. xn是输入变量。w1,w2 …. wn是各个输入的权重。b是差错,将其与加权输入相加即可构成输入。差错和权重都是神经元的可调整参数。运用一些学习规则来调整参数。神经元的输出范围能够从-inf到+ inf。神经元不知道边界。因而,咱们需求神经元的输入和输出之间的映射机制。将输入映射到输出的这种机制称为激活函数。

前馈和反应人工神经网络

人工神经网络主要有两种类型:前馈和反应人工神经网络。前馈神经网络是非递归网络。该层中的神经元仅与下一层中的神经元相连,并且它们不构成循环。在前馈中,信号仅在一个方向上流向输出层。

反应神经网络包括循环。经过在网络中引入环路,信号能够双向传达。反应周期会导致网络行为依据其输入随时刻改变。反应神经网络也称为递归神经网络。

R语言中的BP神经网络模型分析学生成绩|附代码数据

激活函数

激活函数界说神经元的输出。激活函数使神经网络具有非线性和可表达性。有许多激活函数:

  • 辨认函数经过激活函数 Identity,节点的输入等于输出。它完美拟合于潜在行为是线性(与线性回归类似)的使命。当存在非线性,单独运用该激活函数是不行的,但它仍然能够在最终输出节点上作为激活函数用于回归使命。。
  • 在二元阶梯函数(Binary Step Function)中,假如Y的值高于某个特定值(称为阈值),则输出为True(或已激活),假如小于阈值,则输出为false(或未激活)。这在分类器中十分有用。
  • S形函数称为S形函数。逻辑和双曲正切函数是常用的S型函数。有两种:
  • Sigmoid函数是一种逻辑函数,其间输出值为二进制或从0到1改变。
  • tanh函数是一种逻辑函数,其输出值在-1到1之间改变。也称为双曲正切函数或tanh。
  • ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。它是最常用的激活函数。关于x的负值,它输出0。

R语言中的BP神经网络模型分析学生成绩|附代码数据

在R中完成神经网络

创立练习数据集

咱们创立数据集。在这里,您需求数据中的两种特点或列:特征和标签。在上面显现的表格中,您能够检查学生的专业知识,交流技术得分和学生成果。因而,前两列(专业知识得分和交流技术得分)是特征,第三列(学生成果)是二进制标签。

#创立练习数据集
#在这里,把多个列或特征组合成一组数据
test=data.frame(专业知识,交流技术得分)让咱们构建神经网络分类器模型。
首先,导入神经网络库,并经过传递标签和特征的参数集,数据集,隐藏层中神经元的数量以及差错核算来创立神经网络分类器模型。
``````
#拟合神经网络
nn(成果~专业知识+交流技术得分,hidden=3,act.fct="logistic",
linear.output=FALSE)

这里得到模型的因变量、自变量、丢失_函数、_激活函数、权重、成果矩阵(包括到达的阈值,差错,AIC和BIC以及每次重复的权重的矩阵)等信息:

$model.list
$model.list$response
[1]"成果"
$model.list$variables
[1]"专业知识""交流技术得分"
$err.fct
function(x,y)
{
1/2*(y-x)^2
}
$act.fct
function(x)
{
1/(1+exp(-x))
}
$net.result
$net.result[[1]]
[,1]
[1,]0.980052980
[2,]0.001292503
[3,]0.032268860
[4,]0.032437961
[5,]0.963346989
[6,]0.977629865
$weights
$weights[[1]]
$weights[[1]][[1]]
[,1][,2][,3]
[1,]3.05833433.80801996-0.9962571
[2,]1.2436662-0.058867081.7870905
[3,]-0.5240347-0.036766001.8098647
$weights[[1]][[2]]
[,1]
[1,]4.084756
[2,]-3.807969
[3,]-11.531322
[4,]3.691784
$generalized.weights
$generalized.weights[[1]]
[,1][,2]
[1,]0.151590660.09467744
[2,]0.017192740.04320642
[3,]0.156573540.09778953
[4,]-0.460174080.34621212
[5,]0.038687530.02416267
[6,]-0.542483840.37453006
$startweights
$startweights[[1]]
$startweights[[1]][[1]]
[,1][,2][,3]
[1,]0.1013318-1.11757311-0.9962571
[2,]0.8583704-0.155291121.7870905
[3,]-0.87897410.055368491.8098647
$startweights[[1]][[2]]
[,1]
[1,]-0.1283200
[2,]-1.0932526
[3,]-1.0077311
[4,]-0.5212917
$result.matrix
[,1]
error0.002168460
reached.threshold0.007872764
steps145.000000000
Intercept.to.1layhid13.058334288
专业知识.to.1layhid11.243666180
交流技术得分.to.1layhid1-0.524034687
Intercept.to.1layhid23.808019964
专业知识.to.1layhid2-0.058867076
交流技术得分.to.1layhid2-0.036766001
Intercept.to.1layhid3-0.996257068
专业知识.to.1layhid31.787090472
交流技术得分.to.1layhid31.809864672
Intercept.to.成果4.084755522
1layhid1.to.成果-3.807969087
1layhid2.to.成果-11.531321534
1layhid3.to.成果3.691783805

制作神经网络

让咱们制作您的神经网络模型。

#绘图神经网络
plot(nn)

R语言中的BP神经网络模型分析学生成绩|附代码数据


点击标题查阅往期内容

R语言中的BP神经网络模型分析学生成绩|附代码数据

R言语完成CNN(卷积神经网络)模型进行回归数据剖析

R语言中的BP神经网络模型分析学生成绩|附代码数据

左右滑动检查更多

R语言中的BP神经网络模型分析学生成绩|附代码数据

01

R语言中的BP神经网络模型分析学生成绩|附代码数据

02

R语言中的BP神经网络模型分析学生成绩|附代码数据

03

R语言中的BP神经网络模型分析学生成绩|附代码数据

04

R语言中的BP神经网络模型分析学生成绩|附代码数据

创立测验数据集

创立测验数据集:专业知识得分和交流技术得分

#创立测验集
test=data.frame(专业知识,交流技术得分)

猜测测验集的成果

运用核算函数猜测测验数据的概率得分。

##运用神经网络进行猜测

Pred$result
0.9928202080
0.3335543925
0.9775153014

现在,将概率转换为二进制类。

#将概率转换为设置阈值0.5的二进制类别
pred<-ifelse(prob>0.5,1,0)
pred
1
1

猜测成果为1,0和1。

利害

神经网络更灵活,能够用于回归和分类问题。神经网络十分适合具有很多输入(例如图画)的非线性数据集,能够运用恣意数量的输入和层,能够并行执行工作。

还有更多可供挑选的算法,例如SVM,决策树和回归算法,这些算法简略,快速,易于练习并供给更好的性能。神经网络更多的是黑盒子,需求更多的开发时刻和更多的核算能力。与其他机器学习算法相比,神经网络需求更多的数据。NN仅可用于数字输入和非缺失值数据集。一位著名的神经网络研究人员说:“神经网络是解决任何问题的第二好的办法。最好的办法是真正了解问题。”

神经网络的用处

神经网络的特性供给了许多运用方面,例如:

  • 形式辨认:神经网络十分适合形式辨认问题,例如面部辨认,物体检测,指纹辨认等。
  • 异常检测:神经网络擅长异常检测,它们能够轻松检测出不适合常规形式的异常形式。
  • 时刻序列猜测:神经网络可用于猜测时刻序列问题,例如股票价格,天气预报。
  • 自然言语处理:神经网络在自然言语处理使命中供给了广泛的运用,例如文本分类,命名实体辨认(NER),词性符号,语音辨认和拼写检查。

R语言中的BP神经网络模型分析学生成绩|附代码数据

点击标题查阅往期内容

Python用LSTM长短期回忆神经网络对不稳定降雨量时刻序列进行猜测剖析
R言语中的神经网络猜测时刻序列:多层感知器(MLP)和极限学习机(ELM)数据剖析报告
R言语深度学习:用keras神经网络回归模型猜测时刻序列数据
Matlab用深度学习长短期回忆(LSTM)神经网络对文本数据进行分类
R言语KERAS深度学习CNN卷积神经网络分类辨认手写数字图画数据(MNIST)
MATLAB中用BP神经网络猜测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类猜测银行客户流失模型
R言语完成CNN(卷积神经网络)模型进行回归数据剖析
SAS运用鸢尾花(iris)数据集练习人工神经网络(ANN)模型
【视频】R言语完成CNN(卷积神经网络)模型进行回归数据剖析
Python运用神经网络进行简略文本分类
R言语用神经网络改进Nelson-Siegel模型拟合收益率曲线剖析
R言语基于递归神经网络RNN的温度时刻序列猜测
R言语神经网络模型猜测车辆数量时刻序列
R言语中的BP神经网络模型剖析学生成果
matlab运用长短期回忆(LSTM)神经网络对序列数据进行分类
R言语完成拟合神经网络猜测和成果可视化
用R言语完成神经网络猜测股票实例
运用PYTHON中KERAS的LSTM递归神经网络进行时刻序列猜测
python用于NLP的seq2seq模型实例:用Keras完成神经网络机器翻译
用于NLP的Python:运用Keras的多标签文本LSTM神经网络分类