线性模型:
一般应用于回归问题上,适用于因变量和自变量之间有线性关系。
在小数据集上用正规方程求解简单、快速,在大数据集上可用梯度下降法求解。
逻辑回归:
一般应用于二分类问题。
分类器模型较简单,不能形成边界复杂的模型。
决策树:
决策树的最大缺点是原理中的贪心算法,因此它所做的选择只能是某种意义上的局部最优选择。
遇特征数目较多的数据集很容易过拟合,所以很必要进行像剪枝、设置叶节点所需的最小样本数或设置数的最大深度来避免过拟合。
决策树最大的优点是便于理解和解释,树的结构可以可视化出来。
有了以上的知识,大家在解决实际问题时可以根据具体情况选择不同的方法。
好了,下面就进入这篇文章的主题——神经网络,首先我们来了解感知机。
一、感知机
大家应该还记得逻辑回归中提到的单位阶跃函数和对数几率函数吧。逻辑回归利用对数几率函数来进行分类,而感知机则是利用单位阶跃函数来进行分类。具体示意如下。
分类原则是
,如果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属于每一个类别的概率。
文中有纰漏之处,欢迎指正。
领取专属 10元无门槛券
私享最新 技术干货