风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试

风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试


     我们已经为训练一个更为稳健的神经网络做好了样本的准备工作,那么我们开始下一步的工作吧!

     我们已经有了样本集,目前我筛选出来了247个正样本,652个负样本。这样的样本的规模是否够用?是处在高方差还是高偏差?需不需要增加隐含层神经元个数以增加算法的复杂程度?这些问题都可以归结到一个问题,我们的算法现在处在什么样的状态?

     下面一步我打算进行模型选择,通过选择不同隐含层神经元个数时算法的不同表现来进行分析我们的算法现在处在什么样的状态,并且选择出最适合我们问题的隐含层神经元个数。

     所以接下来的任务很简单,在已经写好的训练BP神经网络的代码基础上外面套一层for循环,我从25个隐含层节点开始运行,每次增加25个节点,一直运行到625个节点结束(事实证明这个上限选的有点大了,浪费了很多时间)。对于每次的训练,记录下神经网络在训练集和测试集上的预测准确率。全部运算完毕后将会绘出图来。

     接下来的任务就是等待了

     ...

     ...

     漫长的等待终于运行完了,没想到居然跑了14个小时。其实像这样浪费时间的事情这些天一直在发生,因为之前没有过完整的机器学习系统开发的经验,神经网络这么细致的使用也是第一次,循环的上限选大了没想到会跑这么久,再加上本来电脑就慢。不管怎样终于运行完了,来看看结果(横坐标是隐含层神经元个数):

     风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试_第1张图片

     可以看到,模型在训练集上的预测准确率一直在非常高的水平,但随着隐含层神经元数量的上升,测试集上的准确率却在下降。这说明我们的算法过拟合了,由此图我们得出以下结论:

     1.隐含层个数选取在25-100是当前情况下比较好的。

     2.we need more data! 算法过拟合了,说明获取更好更多的数据能够帮到我们

     看了我们当前的神经网络的结构(25个隐含层节点)已经是比较合理的了,样本我们暂时也获取不了更多,看了下一步要想办法从特征选取上入手尝试一下了,今天就到这里~

你可能感兴趣的:(模型选择,隐含层)