前言
本文介绍利用matlab的人工神经网络App进行简单的训练和拟合
对于我们来说,这是一个黑箱子,具体原理无需知晓,只要知道需要输入什么,能够得到什么就行了。
- 需要输入数据:input和target,这是两个矩阵
- 能够得到:input和target之间的函数关系。
有了这个映射关系,就能用任意输入数据来预测输出数据。
例如通过地理位置、时间、城市教育水平等等数据,来预测房价
房价和(地理位置、时间、城市教育水平等)就是一个函数关系。
我们通过神经网络得到的就是这个函数关系
本质上来说,就是一个拟合方法。就像最小二乘法拟合出曲线一样。只不过这个拟合方法可以拟合出任意的函数关系,不必拘泥于曲线曲面直线之类的,也不必拘泥于是否有解析式。
操作流程
1 打开MATLAB App ->Neural Net Fitting
或输入nftool
点击Next
2 导入数据
数据有二:
1)输入数据
2)目标输出数据
我们导入例子的数据
选择预测房价那个数据
点导入之后
输入数据是一个13*506的矩阵
每一列有十三行,是一个样本点。一共506行,即506个样本点。
输出数据则是1*506的矩阵
一共506列,每一列都代表输出值
3 训练(拟合过程)
这里面的参数默认即可
traning表示用于训练的数据的比例
validation表示用于验证的数据的比例
test表示用于测试的数据的比例
还有个是隐藏层的神经网络数 默认为10
这个数越大,拟合精度会越大。但是会出现过拟合问题。也就是说太过精确让该函数关系失去了泛用性,在问题A上可以用,但是在和问题A相似的问题B上就用不了了。
选择训练算法
然后点击训练
3 得到结果
方法1
点第一个,把训练得到的函数关系保存下来
得到如下函数
这个函数就是我们训练得到的函数关系了
用法也很简单
随便打开个脚本,就像用普通的函数一样用就行了
输入只需要一个,就是13列的输入数据
输出也只有一个,就是得到房价
我们随便在原始数据上改动一两个数字得到:
方法2
还有一种方法,就是把得到的函数关系保存成一个变量
这里叫做net1
点击 save Results
工作区出现一个叫做net1的变量,这个就是函数关系
怎么用呢?
用sim(net1,输入数据)即可
评价结果(拟合的R值等)
在训练完成之后会弹出的
这里面Regression
就是显示R值的
Error Histogram就是显示误差分布的
结束