神经网络是一种基于现有数据创建预测的计算系统。最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。

如何构建神经网络?

神经网络包括:

  • 输入层:根据现有数据获取输入的层
  • 隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测能力
  • 输出层:基于输入和隐藏层的数据输出预测

用神经网络解决分类问题

在这个特定的例子中,我们的目标是开发一个神经网络来确定股票是否支付股息。

因此,我们使用神经网络来解决分类问题。通过分类,我们指的是按类别对数据进行分类的分类。例如,水果可分为苹果,香蕉,橙等。

我们的自变量如下:

  • fcfps:每股自由现金流量
  • income_growth:过去一年的盈利增长(%)
  • de:债务与权益比率
  • mcap:股票的市值
  • current_ratio:流动比率(或流动资产/流动负债)

我们首先设置目录并将数据加载到R环境中:

setwd("你的工作文件目录")
attach(mydata)

形成神经网络时最重要的过程之一是数据标准化。这涉及将数据调整到一致的比例,以便准确地比较预测值和实际值。无法对数据进行标准化通常会导致所有观察结果中的预测值保持不变,而与输入值无关。

我们在下面实现了这两种技术,但选择使用max-min标准化技术。

缩放标准化

scaleddata <-scale(mydata)

最大最小标准化

对于此方法,我们调用以下函数来标准化我们的数据:

normalize < -  function(x){ return((x  -  min(x))/(max(x) -  min(x)))
} 

然后,我们使用lapply在我们现有的数据上运行该函数(我们将数据集称为加载到R中的数据集为mydata):

我们现在已经标准化了我们的新数据集并将其保存到名为maxmindf的数据框中:

我们的训练数据(训练集)基于80%的观测值。测试数据(测试集)基于剩余的20%的观察结果。

#训练和测试数据
trainset <- maxmindf[1:160, ]
testset <- maxmindf[161:200, ]

用神经网络训练模型

我们现在将神经网络库加载到R.

使用神经网络将依赖的“红利”变量“回归” 到其他自变量

  • 根据hidden =(2,1)公式将隐藏层数设置为(2,1)
  • 给定自变量对因变量(被除数)的影响假设是非线性的,linear.output变量设置为FALSE
  • 阈值设置为0.01,这意味着如果迭代期间的误差变化小于1%,则模型不会进行进一步的优化

确定神经网络中隐藏层的数量并不是一门精确的科学。事实上,有些情况下,没有任何隐藏层,准确度可能会更高。因此,反复试验在这一过程中起着重要作用。

一种可能性是比较预测的准确性如何随着我们修改隐藏层的数量而改变。例如,对于该示例,使用(2,1)参数配置最终产生92.5%的分类准确度。

 nn $ result .matrix
plot(nn)

我们的神经网络看起来像这样:

我们现在生成神经网络模型的误差,以及输入,隐藏层和输出之间的权重:

测试模型的准确性

如前所述,我们的神经网络是使用训练数据创建的。然后,我们将其与测试数据进行比较,以评估神经网络预测的准确性。

temp_test < - subset(testset,select = c(“fcfps”,“earnings_growth”,“de”,“mcap”,“current_ratio”))
head(temp_test)
nn.results < - compute(nn, temp_test)
结果< - data.frame(actual = testset $ dividend,prediction = nn.results $ net.result)

将预测结果与实际结果进行比较:

0.999985252611 

混淆矩阵

然后,我们使用sapply对结果进行舍入,并创建一个混淆矩阵来比较真/假阳性和阴性的数量:

table(actual,prediction)prediction
actual 0 1 0 17 0 1 3 20

混淆矩阵用于确定由我们的预测生成的真实和错误的数量。该模型生成17个真阴性(0),20个真阳性(1),而有3个假阴性。

最终,我们在确定股票是否支付股息时产生92.5%(37/40)的准确率。

使用神经网络解决回归问题

在这个例子中,我们希望分析解释变量容量汽油小时数对因变量消费的影响

数据标准化

同样,我们将数据标准化并分为训练和测试数据:

#最大最小标准化
normalize < -  function(x){
} #训练和测试数据
trainset < -  maxmindf [1:32,]
testset < -  maxmindf [33:40,] 

神经网络输出

然后我们运行我们的神经网络并生成我们的参数:

Intercept.to.1layhid1 1.401987575173
capacity.to.1layhid1 1.307794013481
gasoline.to.1layhid1 -3.102267882386
hours.to.1layhid1 -3.246720660493
Intercept.to.1layhid2 -0.897276576566
capacity.to.1layhid2 -1.934594889387
gasoline.to。 1layhid2 3.739470402932hours.to.1layhid2 1.973830465259
Intercept.to.2layhid1 -1.125920206855
1layhid.1.to.2layhid1 3.175227041522
1layhid.2.to.2layhid1 -2.419360506652
Intercept.to.consumption 0.683726702522
2layhid.1.to.consumption -0.545431580477 

生成神经网络

以下是我们的神经网络的可视化结果:

模型验证

然后,我们通过比较从神经网络产生的估计汽油消费与测试输出中报告的实际消费来验证(或测试我们模型的准确性):

 

准确性

在下面的代码中,我们然后将数据转换回其原始格式,在平均绝对偏差的基础上产生90%的准确度(即估计和实际汽油消费之间的平均偏差平均为10%)。请注意,我们还将数据转换回标准值,因为它们之前使用max-min标准化方法进行了调整:

predicted=results$prediction * abs(diff(range(consumption))) + min(consumption)accuracy

可以看到我们使用(2,1)隐藏配置获得90%的准确率。这非常好,特别是考虑到我们的因变量是区间格式。但是,让我们看看我们是否可以让它更高!

如果我们现在在神经网络中使用(5,2)隐藏层节点配置会发生什么?这是生成的输出:

accuracy=1-abs(mean(deviation))
accuracy
[1] 0.9577401232

我们看到我们的准确率现已增加到近96%,表明修改隐藏节点的数量已经提高了我们的模型!


用R语言实现神经网络预测股票实例相关推荐

  1. bp神经网络预测模型python,r语言bp神经网络预测

    如何建立bp神经网络预测 模型 . 建立BP神经网络预测模型,可按下列步骤进行:1.提供原始数据2.训练数据预测数据提取及归一化3.BP网络训练4.BP网络预测5.结果分析现用一个实际的例子,来预测2 ...

  2. Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性...

    全文链接:http://tecdat.cn/?p=26562 该项目包括: 自 2000 年 1 月以来的股票价格数据.我们使用的是 Microsoft 股票. 将时间序列数据转换为分类问题. 使用 ...

  3. 【机器学习】R语言进行机器学习方法及实例

    R语言进行机器学习方法及实例 机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有价值的东西. 机器学 ...

  4. R语言 BP神经网络

    神经网络是由具有适应性的简单单元组成的广泛进行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做的交互反应. 人工神经网络对一组输入信号和一组输出信号之间的关系建模,使用的模型来源于人类大脑对 ...

  5. R语言指数平滑预测法分析南京出租车打车软件空载率时间序列补贴政策可行性...

    报告链接:http://tecdat.cn/?p=32161 本文通过建立空载率的数学模型,帮助客户来分析出租车的空载率,从而对出租车补贴政策能否提高高峰期的实载率,缓解打车难问题进行了说明(点击文末 ...

  6. R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因

    R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因 目录 R语言glm模型预测(predict)过程及Error in eval ...

  7. 利用R语言进行线性/非线性回归拟合实例(1)

    利用R语言进行线性/非线性回归拟合实例(1) 1. 生成一组数据 vector<float>xxvec; vector<float>yyvec; ofstreamfout(&q ...

  8. 通过R语言做灰色预测

    通过R语言做灰色预测 GM(1,1)模型的定义 数据的检验与处理 数据的生成 级比检验 GM(1,1)建模 生成累加数据和均值数据 构造矩阵BBB及数据向量YYY,有 计算: 建立模型,求解,并还原数 ...

  9. R语言easier包预测免疫治疗响应

    [生信笔记]R语言easier包预测免疫治疗响应 这个包发表于2021年,以患者的RNA序列数据作为输入,来预测免疫治疗的结果.文章的DOI是:doi: 10.1016/j.patter.2021.1 ...

最新文章

  1. 使用Powershell管理Linux 下的 SQL Server
  2. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
  3. python做社会网络分析_社交网络分析(Social Network Analysis in Python)①
  4. java怎么把数据封进对象里_(Java)想把数组中一条一条的数据全部放入对象中去..要怎么做呢...
  5. JVM调优之jstack找出最耗cpu的线程并定位代码
  6. mysql免安装版配置
  7. 用python进行归并排序,用Python做归并排序
  8. 三款200万像素照相手机测评
  9. ecplise tomcat忽然出现404
  10. 《Java编程规范学习笔记》
  11. Linux各类日志查看
  12. 支付宝当面付(统一收单线下交易预创建,二维码扫码支付)
  13. [ZUCC 英语周测]Quiz B-3-7
  14. 区块链应该打造国产操作系统
  15. 无法登陆github的解决方法
  16. AtCoder Beginner Contest 283 E - Don‘t Isolate Elements
  17. C语言程序实现道格拉斯—普克算法(Douglas--Peucker)
  18. VMware虚拟机安装Mac OS X Lion正式版教程
  19. 直播app开发点播窄带高清之 JND 感知编码技术
  20. chosen用法及动态绑定值

热门文章

  1. 孔径问题(aperture problem)
  2. mock api_没有API? 没问题! 通过Mock API快速开发
  3. Fluent UDF中根据zone的名字获取ID
  4. 上传图片或者视频进度条
  5. vue中导入excel文件
  6. 钱旺之行:互联网经济的增长点——注意力价值经济
  7. ios ui自动化测试_Xcuitest的ios自动化ui测试
  8. 震惊!被这样开发的P2P分发下载技术
  9. FarPoint 基础篇(一) 基本概念
  10. Intra-LTE Handover : X2 based handover