机器学习第五篇——神经网络

线性模型:

一般应用于回归问题上,适用于因变量和自变量之间有线性关系。

在小数据集上用正规方程求解简单、快速,在大数据集上可用梯度下降法求解。

逻辑回归:

一般应用于二分类问题。

分类器模型较简单,不能形成边界复杂的模型。

决策树:

决策树的最大缺点是原理中的贪心算法,因此它所做的选择只能是某种意义上的局部最优选择。

遇特征数目较多的数据集很容易过拟合,所以很必要进行像剪枝、设置叶节点所需的最小样本数或设置数的最大深度来避免过拟合。

决策树最大的优点是便于理解和解释,树的结构可以可视化出来。

有了以上的知识,大家在解决实际问题时可以根据具体情况选择不同的方法。

好了,下面就进入这篇文章的主题——神经网络,首先我们来了解感知机。

一、感知机

大家应该还记得逻辑回归中提到的单位阶跃函数和对数几率函数吧。逻辑回归利用对数几率函数来进行分类,而感知机则是利用单位阶跃函数来进行分类。具体示意如下。

分类原则是

,如果y>=0,则判定为正样本,如果y

可以看到,在二维平面上,感知机就是找一条直线分类数据,在n维空间上,就是找n-1维的超平面分类数据,这就要求数据是线性可分的。这个条件太苛刻了,并且感知机在数据不是线性可分的情况下效果很不好,为了解决这个问题,人们就提出了神经网络的概念。一个典型的三层神经网络架构如下。

其中相关的定义如下。

: 输出层第 j 个神经元的阈值。

: 隐层第 h 个神经元的阈值。

: 输入层第 i 个神经元和隐藏第 h 个神经元之间的连接权。

: 隐层第 h 个神经元和输出层第 j 个神经元之间的连接权。

: 隐层第 h 个神经元接受到的输入。

:输出层第 j 个神经元接受到的输入。

三层神经网络由 (d+l+1)q+l 个参数确定,而我们的目标就是用数据集拟合出这个参数,下面就介绍著名的BP算法(error BackPropagation)。

BP算法可以形象的描述为从后往前的更新参数。理论证明,只要隐层的结点个数足够,三层架构的神经网络几乎可以构造任何复杂的分类边界,但设置合适的隐藏结点数是个棘手的问题。

有了理论知识,我们看看在sklearn中是怎么应用神经网络的。一个简单的例子如下。

MLPClassifier类相关参数说明:

Parameters:

hidden_layer_sizes: tuple, length = n_layers - 2, default (100,)

设置各隐层的结点数。

activation: {‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, default ‘relu’

设置激活函数。

identity:f(x) = x

logistic:f(x) = 1 / (1 + exp(-x))

tanh:f(x) = tanh(x)

relu:max(0, x)

solver: {‘lbfgs’, ‘sgd’, ‘adam’}, default ‘adam’

拟合参数的方法,‘sgd’就是随机梯度下降法。

alpha: float, optional, default 0.0001

正则化参数

early_stopping: bool, default False

是否使用“早停”策略缓解过拟合。

validation_fraction: float, optional, default 0.1

留出多少比率的验证集用于“早停”策略。

Attributes:

coefs_: list, length n_layers - 1

权值矩阵。

intercepts_: list, length n_layers - 1

阈值。

Methods:

(X)

样本X属于每一个类别的概率。

文中有纰漏之处,欢迎指正。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180831G0CBNT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动