标签:函数 140 代码 神经网络 BP 模型 输入 神经元
原文链接:tecdat.cn/?p=19936
在本教程中,您将学习如何在R中创建神经网络模型 ( 点击文末“阅读原文”获取完整代码数据)。**
神经网络(或人工神经网络)具有通过样本进行学习的能力。人工神经网络是一种受生物神经元系统启发的信息处理模型。它由大量高度互连的处理元件(称为神经元)组成,以解决问题。它遵循非线性路径,并在整个节点中并行处理信息。神经网络是一个复杂的自适应系统。自适应意味着它可以通过调整输入权重来更改其内部结构。
该神经网络旨在解决人类容易遇到的问题和机器难以解决的问题,例如识别猫和狗的图片,识别编号的图片。这些问题通常称为模式识别。它的应用范围从光学字符识别到目标检测。
本教程将涵盖以下主题:
-
神经网络概论
-
正向传播和反向传播
-
激活函数
-
R中神经网络的实现
-
案例
-
利弊
-
结论
神经网络概论
神经网络是受人脑启发执行特定任务的算法。它是一组连接的输入/输出单元,其中每个连接都具有与之关联的权重。在学习阶段,网络通过调整权重进行学习,来预测给定输入的正确类别标签。
人脑由数十亿个处理信息的神经细胞组成。每个神经细胞都认为是一个简单的处理系统。被称为生物神经网络的神经元通过电信号传输信息。这种并行的交互系统使大脑能够思考和处理信息。一个神经元的树突接收来自另一个神经元的输入信号,并根据这些输入将输出响应到某个其他神经元的轴突。
添加图片注释,不超过 140 字(可选)
树突接收来自其他神经元的信号。单元体将所有输入信号求和以生成输出。当总和达到阈值时通过轴突输出。突触是神经元相互作用的一个点。它将电化学信号传输到另一个神经元。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
x1,x2 .... xn是输入变量。w1,w2 .... wn是各个输入的权重。b是偏差,将其与加权输入相加即可形成输入。偏差和权重都是神经元的可调整参数。使用一些学习规则来调整参数。神经元的输出范围可以从-inf到+ inf。神经元不知道边界。因此,我们需要神经元的输入和输出之间的映射机制。将输入映射到输出的这种机制称为激活函数。
前馈和反馈人工神经网络
人工神经网络主要有两种类型:前馈和反馈人工神经网络。前馈神经网络是非递归网络。该层中的神经元仅与下一层中的神经元相连,并且它们不形成循环。在前馈中,信号仅在一个方向上流向输出层。
反馈神经网络包含循环。通过在网络中引入环路,信号可以双向传播。反馈周期会导致网络行为根据其输入随时间变化。反馈神经网络也称为递归神经网络。
添加图片注释,不超过 140 字(可选)
激活函数
激活函数定义神经元的输出。激活函数使神经网络具有非线性和可表达性。有许多激活函数:
-
识别函数 通过激活函数 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。
添加图片注释,不超过 140 字(可选)
在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.0583343 3.80801996 -0.9962571 [2,] 1.2436662 -0.05886708 1.7870905 [3,] -0.5240347 -0.03676600 1.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.15159066 0.09467744 [2,] 0.01719274 0.04320642 [3,] 0.15657354 0.09778953 [4,] -0.46017408 0.34621212 [5,] 0.03868753 0.02416267 [6,] -0.54248384 0.37453006 $startweights $startweights[[1]] $startweights[[1]][[1]] [,1] [,2] [,3] [1,] 0.1013318 -1.11757311 -0.9962571 [2,] 0.8583704 -0.15529112 1.7870905 [3,] -0.8789741 0.05536849 1.8098647 $startweights[[1]][[2]] [,1] [1,] -0.1283200 [2,] -1.0932526 [3,] -1.0077311 [4,] -0.5212917 $result.matrix [,1] error 0.002168460 reached.threshold 0.007872764 steps 145.000000000 Intercept.to.1layhid1 3.058334288 专业知识.to.1layhid1 1.243666180 沟通技能得分.to.1layhid1 -0.524034687 Intercept.to.1layhid2 3.808019964 专业知识.to.1layhid2 -0.058867076 沟通技能得分.to.1layhid2 -0.036766001 Intercept.to.1layhid3 -0.996257068 专业知识.to.1layhid3 1.787090472 沟通技能得分.to.1layhid3 1.809864672 Intercept.to.成绩 4.084755522 1layhid1.to.成绩 -3.807969087 1layhid2.to.成绩 -11.531321534 1layhid3.to.成绩 3.691783805 复制代码
绘制神经网络
让我们绘制您的神经网络模型。
# 绘图神经网络 plot(nn) 复制代码
添加图片注释,不超过 140 字(可选)
点击标题查阅往期内容
添加图片注释,不超过 140 字(可选)
R语言实现CNN(卷积神经网络)模型进行回归数据分析
添加图片注释,不超过 140 字(可选)
左右滑动查看更多
添加图片注释,不超过 140 字(可选)
01
添加图片注释,不超过 140 字(可选)
02
添加图片注释,不超过 140 字(可选)
03
添加图片注释,不超过 140 字(可选)
04
添加图片注释,不超过 140 字(可选)
创建测试数据集
创建测试数据集:专业知识得分和沟通技能得分
# 创建测试集 test=data.frame(专业知识,沟通技能得分) 复制代码
预测测试集的结果
使用计算函数预测测试数据的概率得分。
## 使用神经网络进行预测 Pred$result 复制代码
0.9928202080 0.3335543925 0.9775153014 复制代码
现在,将概率转换为二进制类。
# 将概率转换为设置阈值0.5的二进制类别 pred <- ifelse(prob>0.5, 1, 0) pred 复制代码
1 0 1 复制代码
预测结果为1,0和1。
利弊
神经网络更灵活,可以用于回归和分类问题。神经网络非常适合具有大量输入(例如图像)的非线性数据集,可以使用任意数量的输入和层,可以并行执行工作。
还有更多可供选择的算法,例如SVM,决策树和回归算法,这些算法简单,快速,易于训练并提供更好的性能。神经网络更多的是黑盒子,需要更多的开发时间和更多的计算能力。与其他机器学习算法相比,神经网络需要更多的数据。NN仅可用于数字输入和非缺失值数据集。一位著名的神经网络研究人员说: “神经网络是解决任何问题的第二好的方法。最好的方法是真正理解问题。”
神经网络的用途
神经网络的特性提供了许多应用方面,例如:
-
模式识别: 神经网络非常适合模式识别问题,例如面部识别,物体检测,指纹识别等。
-
异常检测: 神经网络擅长异常检测,它们可以轻松检测出不适合常规模式的异常模式。
-
时间序列预测: 神经网络可用于预测时间序列问题,例如股票价格,天气预报。
-
自然语言处理: 神经网络在自然语言处理任务中提供了广泛的应用,例如文本分类,命名实体识别(NER),词性标记,语音识别和拼写检查。
添加图片注释,不超过 140 字(可选)
点击标题查阅往期内容
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神经网络分类
标签:函数,
140,
代码,
神经网络,
BP,
模型,
输入,
神经元
From: https://www.cnblogs.com/tecdat/p/16841444.html