杰弗瑞-欣顿(Geoffrey Hinton )被尊称为“神经网络之父”,他将神经网络带入到研究与应用的热潮,将“深度学习”从边缘课题变成了谷歌等互联网巨头仰赖的核心技术,并将 HintonBack Propagation(反向传播)算法应用到神经网络与深度学习。

接下来分享神经网络算法–MLP(多层感知器)

其实质是线性模型的扩展和深化,我们知道线性模型是由自变量和因变量,还有各系数组成的,MPL则是在其中加上隐藏层,加多运算,再合成最终的结果。只是神经网络中有非线性矫正,使得其更加强大,也可以对非线性数据进行处理。

python mp4格式 python mpl_python mp4格式


作者:haiyu94

我们在模型中需要设置的参数主要是隐藏层的节点数或者隐藏层的个数,值越大,模型就越复杂,相对也越精确。

python mp4格式 python mpl_深度学习_02


python mp4格式 python mpl_神经网络_03


模型的得分还是比较好的,但是出现了过拟合的现象,但是如果我们加大alpha的参数就会好很多,请自行调试。

其中重要的参数:

hidden_layer_sizes=[100,100],代表的是两个隐藏层,每层100个节点;

activatinotallow=‘tanh’,代表非线性矫正的方法,通常有relu,identity,logistic,默认是relu,tanh使得模型更加细腻。

alpha值就是L2正则化,较大的值可以降低过拟合现象,使得模型较简单。

solver=‘lbfgs’,经过网上查询得知:

solver: {‘lbfgs’, ‘sgd’, ‘adam’}, 默认 ‘adam’,用来优化权重

  • lbfgs:quasi-Newton方法的优化器
  • sgd:随机梯度下降
  • adam: Kingma, Diederik, and Jimmy Ba提出的机遇随机梯度的优化器
    注意:默认solver ‘adam’在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好。

作者:haiyu94

神经网络中的MLP模型对于小数据集表现很好,但是对于大数据则表现乏力。
对于隐藏层数和节点数的设定,建议节点数等于特征数量,但最好不超过500个。
开始可以尽量将模型复杂化,再设置alpha提高模型的泛化能力。
神经网络对于深度学习表现很强,对于特征类型比较单一的情况下神经网络表现也很好,但是对数据预处理要求较高。

如果数据特征类型差异比较大,随机森林则表现更好,不要忘了,其几乎不需要数据与处理和参数的复杂调节。综上截至目前的分享,随机森林依然是最好的算法,因为其简单,模型评分高;但是如果在参数适当,计算能力达标的情况下,神经网络则可以占据半壁江山了。