神经网络小结
用MATLAB模式识别工具箱(函数)来对某些指标(如空气质量、水质量、个人业绩等)进行分类、评估、预测,分为三步:
1. 数据准备
(1)确保输入数据(包括训练以及将来要预测的数据)在比较接近的范围里(归一化是其中一种方式)。
这一个步骤不仅仅是在模式识别里,其实在任何一种网络里,这一步都是必须的。比如说你有400组数据,每组数据对应一个中国县城的空气质量。假设每组数据含有6个指标(称之为A,B,C,D,E,F,G), 如果数据A的范围是10^5-10^7, F的范围是0.1-0.5, 如果用这些数据来训练,很容易导致网络的权重也有同样的数量级的差别,结果是你的网络会非常的“敏感”(可以想象一下,如果F对应的权重是10^10,那么即使F稍微变化一下,都有可能导致网络的输出结果不同。而有时候这样的敏感度并不是你想要的,你可以对数据进行归一化处理,把数据都转换到0-1的区间内。
MATLAB模式识别工具箱可以自动对输入数据进行归一化处理,所以你只要明白这个过程,但是并不需要你额外写程序来处理这些数据。
(2)对输出数据进行二进制量化
通常情况下,用于测试的输入数据所对应的输出数据不是量化数据,比如说:优、良,或者是一级、二级等等。那么通常我们用二进制来表达,两位数字的二进制可以表示3类(01,10,11),三位数字的二进制可以表示7类(001,010,011,100,101,110,111,通常我们不使用000)。二进制的顺序不重要,比如说优可以对应001,也可以用010来表示。
2. 训练和评估
可以使用MATLAB自带的模式识别工具箱界面(nprtool)来导入数据、调整参数等,然后得到结果。通常第一次这样使用,得到一个基础架构以后,然后生成m代码,再在代码上修改。
网络训练的每次结果都有可能不一样,比如说第一次得到不太满意的结果(准确率低于80%):
多训练几次,可以得到不错的结果(准确率达到97.5%):
3. 预测
首先确保你用来预测的输入数据,格式跟训练数据一样(否则肯定不能使用)。在上面的网络里,我们的每组输入数据含有6个指标,那么用来预测的数据,也必须符合以上要求。