Neural Network Toolbox使用笔记1:数据拟合
http://blog.csdn.net/ljp1919/article/details/42556261
Neural Network Toolbox为各种复杂的非线性系统的建模提供多种函数和应用程序。该工具箱提供各种监督学习模型:前向反馈,径向基核函数和动态网络等模型。同时也提供自组织图和竞争层结构(competitive layers)的非监督学习模型。该工具箱具有设计、训练、可视化与仿真神经网络的功能。基于该工具箱可以进行数据拟合、模式识别、分类和时间序列预测及其动态系统的建模和控制。
可以利用Parallel Computing Toolbox调用多核处理器,GPUs和计算集群对大数据集在进行训练和处理阶段进行加速。
该工具箱包含在所安装文件Toolbox下面的nnet中。可以输入 在命令行模式下输入:
help nnet
可以看到所涉及的主题。
nnstart 神经网络启动GUI的命令
nctool 神经网络分类工具
nftool神经网络的拟合工具
nntraintool 神经网络的训练工具
第一:特点
1、监督网络包括:正反馈、径向基、LVQ、时延、非线性自回归(NARX)以及层递归的神经网络
2、非监督网络包括:自组织图与竞争层结构;
3、通过预处理和后处理提高网络训练与评估网络性能;
4、模块化网络用以管理和可视化任何大小的网络;
5、用于构建和评估神经网络的Simulink模块
第二:数据拟合、分类和模式识别
1、数据拟合
应用举例:房价均值估计
问题描述:通过创建神经网络以估计社区房价的均值,该社区采用以下13个属性进行描述
1)每城市的人均犯罪率
2)住宅用地的比例大于25000平方
3)每个城市的非零售商业用地比例
4)1表示Charles river的边界,0则表示其他的
5)氮氧化合物浓度(1000万分之1)
6)平均每个寓所的房间数量
7)业主单位是1940年以前的比例
8)距离波士顿就业中心的加权距离
9)径向高速公路的可访问性指数
10)每10,000美元全部价值财产税税率
11)城市中小学老师的比例
12)1000(Bk - 0.63)^2
13)地位较低的人口百分比
上述输入是与目标输出相关联的。
数据准备
输入矩阵X和目标输出矩阵T
X中每一列都是由上述13个特征属性所表征的数字所组成。该已知的13个数值表示当前已知的房价均值。T矩阵的每一列都会有一个元素,用以表示1000年后的房价均值
(the median house price in 1000's of dollars)
数据导入:
[x,t]=house_dataset;
可以看到X和T都是506列,表示的是506个社区的属性,即所谓的输入。这些输入与房价均值相关联,即目标。X有13行,即表示13个属性;目标矩阵T只有1行。
用神经网络进行数据拟合
神经网络是用随机权值进行初始化的,所以每次运行的结果会有稍微的不一样。可以通过设置随机化种子以避免这种随机性。但是我们在应用过程中是不需要setdemorandstream(491218382)的。
一般越是复杂的问题,所需要设置的神经元数量越多,神经元层数也越多。在此,我们在隐含层设置的是10个神经元。
net = fitnet(10);
view(net)
从下图可以看出,神经网络的输入和输出都是0,这是因为此时的神经网络尚未进行配置,以对输入数据和输出数据进行匹配。需要对其进行训练!
接下来需要做得就是训练:
数据集一共分成三种:训练数据集、验证数据集和测试数据集。用训练数据集对神经网络进行训练,用以拟合模型,即用这部分数据来建立模型。 验证数据集,刚才说training建了一个模型,但是模型的效果仅体现了训练数据,但不一定适合同类的其他数据,所以需要在建模前会将数据分成两部分,一部分为训练数据,一部分为验证数据(两部分数据的比例大致为7:3,这取决于所采用的验证方法);另外,有时候也可能训练多个模型,但不知哪个模型性能更佳,这时可以将验证数据输入不同模型进行比较。所以,训练过程是需要不断进行的,直到验证数据集的性能不再有所提升。 test是测试数据,它跟前两者的最大区别在于:training和validation数据均是同一时期的数据,如都是5-7月数据,但既然是测试,就需要用跨期的数据来验证模型的稳定性,此时,可采用8月单月数据或9月单月数据对建好的模型进行测试,看性能有没有下降或偏移。
采用NN Training Tool可以展现被训练的神经网络和用以训练的算法。此外,该工具也展示了训练的过程中的训练时态和训练终止的准则(该准则用绿色进行标注)。在该UI底部的可以绘制。在算法名称和绘制按钮的旁边都有其对应的链接,以补充对该算法或者绘制图像的说明。
可以点击"Performance" 按钮或者用语句plotperform(tr)来查看神经网络在训练过程性能的提升。该性能的测量是基于最小均方误差,以对数log为底进行显示。在训练过程中可以发现该曲线是迅速下降的。且需要注意,多次运行所需要的迭代次数是不一样的。图中绿色圈圈所指示的是验证数据集性能最好的地方。
测试神经网络
通过测量测试数据的最小均方误差,可以感知经过训练的神经网络对应真实数据所表现出来的性能。
testX = x(:,tr.testInd);
testT = t(:,tr.testInd);
testY = net(testX);
perf = mse(net,testT,testY)
此外,也可以通过绘制回归线来测量神经网络对应数据的拟合程度。下面基于所有样本绘制回归线:
y = net(x);
plotregression(t,y)
若神经网络已经训练好,可以对数据进行拟合,则在回归图上面线性输出的目标拟合曲线Fit应该横贯左下角和右上角。若是没有达到,则需要继续进行训练,或者采用更多神经元的神经网络进行训练。
第三种测量神经网络对于数据的拟合程度方法是误差分布图。误差分布图可以展示误差情况,一般多数误差是靠近0的,只有少数远离0。
参考文档
http://cn.mathworks.com/products/neural-network/
Neural Network Toolbox使用笔记1:数据拟合的更多相关文章
- 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第二周:(Basics of Neural Network programming)-课程笔记
第二周:神经网络的编程基础 (Basics of Neural Network programming) 2.1.二分类(Binary Classification) 二分类问题的目标就是习得一个分类 ...
- convolutional neural network 课程笔记
一.CNN基础 (1)CNN在CV方面的应用 image classification(图像识别).object detection(目标检测).neural style transfer(风格迁移) ...
- RNN(recurrent neural network)学习笔记
参考:https://www.jianshu.com/p/9dc9f41f0b29 以及<白话深度学习与TensorFlow> 与前馈神经网络.卷积神经网络等不同之处在于,RNN具有一定 ...
- 用matlab训练数字分类的深度神经网络Training a Deep Neural Network for Digit Classification
This example shows how to use Neural Network Toolbox™ to train a deep neural network to classify ima ...
- 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior
[论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...
- 论文笔记系列-Neural Network Search :A Survey
论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...
- 深度学习课程笔记(十五)Recurrent Neural Network
深度学习课程笔记(十五)Recurrent Neural Network 2018-08-07 18:55:12 This video tutorial can be found from: Yout ...
- A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记
A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...
- 论文笔记:蒸馏网络(Distilling the Knowledge in Neural Network)
Distilling the Knowledge in Neural Network Geoffrey Hinton, Oriol Vinyals, Jeff Dean preprint arXiv: ...
随机推荐
- (十四)Maven聚合与继承
1.Maven聚合 我们在平时的开发中,项目往往会被划分为好几个模块,比如common公共模块.system系统模块.log日志模块.reports统计模块.monitor监控模块等等.这时我们肯定会 ...
- C#设计模式:原型模式(Prototype)及深拷贝、浅拷贝
原型模式(Prototype) 定义: 原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象.被复制的实例被称为原型,这个原型是可定制的. Prototype Pattern也是一 ...
- although 和 although 的区别
作为连词的时候,although 和 though 是可以互换的.Although 一般被认为更加正式一些.比如,以下的这些句子: Growth in Europe is maintaining mo ...
- Oracle工具类-生成数据库现有Job的创建脚本
生成Oracle数据库现有Job的创建脚本 -- 生成现有Job的创建脚本 create or replace procedure proc_generate_job_create_sql is be ...
- T-SQL 查询数据库中各个表的使用空间
1. 查询单表 EXEC sp_spaceused 'dbo.tablename' 2. 查询所有表 SELECT t.NAME AS TableName, s.Name AS SchemaName, ...
- The user specified as a definer ('root'@'%') does not exist 异常解决
参考:http://www.cnblogs.com/Magicam/archive/2013/07/22/3207382.html 权限问题,授权 给 root 所有sql 权限 mysql> ...
- python处理json和redis hash的坑
1.使用MySQLdb读取出来的数据是unicode字符串,如果要写入redis的hash中会变成 "{u'eth0_outFlow': 2.5, u'eth1_inFlow': 3.44} ...
- sublime text 3 快捷键大全以及配置编译环境
Sublime text 3是码农最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键 ...
- 如果layer层在iframe下不居中滚动
需要在layer前面加上parent.layer. 2.运用layer层的步骤: 1.引入1.8版本以上的jquery文件 <script type="text/javascript& ...
- [Penetration Testing Devil Training Camp Based on Metasploit] Learn & Practice