scikit-learn中文文档-学习笔记二-广义线性模型

机器学习
1.广义线性模型(Generalized Linear Model)
该方法用于回归, 该目标值是输入变量的线性组合, y’是预测值。
y’(w, x) = w0 + w1x1 + w2x2 + …… + wpxp
在模块中,使用coef_代表向量(w1, w2, …, wp), 使用intercept_代表w0.
该模型一般在逻辑回归中使用

2.普通最小二乘法(Ordinary Least Squares)
在线性回归(LinearRegression)类来拟合系数为w = (w1, w2, …, wp)的线性模型时,我们使得样本集中观测点和线性近似的预测点之间的残差平方和(最小二乘法)最小化来选择最优的直线。
即满足如下图:
最小二乘法

LinearRegression类的训练函数fit()以X和y作为输入,将系数w存入coef_中。

from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) # 训练
reg.coef_
# 结果
array([ 0.5,  0.5])
reg.intercept_
2.22044604925e-16

复杂度
该方法通过对X进行 singular value decomposition ( 奇异值分解 ) 来计算最小二乘法的解。如果 X 是大小为(n, p) 的矩阵,则该方法的复杂度为O(np^2), 假设n>=p。

3.岭回归(Ridge Regression)
岭回归是在最小二乘法的基础上,再加上一个对系数w的残差平方和带罚项α,岭系数如下:
岭回归系数
α(>=0)是控制缩减量的复杂度参数:当α值越大,缩减量越大,系数对共线性的鲁棒性也越好。

>>> from sklearn import linear_model
>>> reg = linear_model.Ridge (alpha = .5)
>>> reg.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
      normalize=False, random_state=None, solver='auto', tol=0.001)
>>> reg.coef_
array([ 0.34545455,  0.34545455])
>>> reg.intercept_
0.13636...

修改参数
RidgeCV 通过内置的 Alpha 参数的交叉验证来实现岭回归。 该对象的工作方式与 GridSearchCV 相同,只是它默认为 Generalized Cross-Validation ( 通用交叉验证 ) (GCV)。

from sklearn import linear_model
reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])      

>>> reg.alpha_                                     
0.1

复杂度
则该方法的复杂度和普通最小二乘法一样为O(np^2), 假设n>=p。

4.稀疏约束:Lasso
lasso表现强劲的回归算法,是介于普通线性回归(不能处理严重多重共线性问题)和岭回归\PLS,PLA(专门用于解决严重多重共线性问题)之间的通用算法。除了做回归,Lasso的稀疏结果天然可以做机器学习中的另外一件事——特征选择feature selection,把非零的系数对应的维度选出即可,达到对问题的精简、去噪,以及减轻overfitting。

>>> from sklearn import linear_model
>>> reg = linear_model.Lasso(alpha = 0.1)
>>> reg.fit([[0, 0], [1, 1]], [0, 1])
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
   normalize=False, positive=False, precompute=False, random_state=None,
   selection='cyclic', tol=0.0001, warm_start=False)
>>> reg.predict([[1, 1]])
array([ 0.8])

对于较低级别的任务也很有用的是函数 lasso_path 来计算可能值的完整路径上的系数。

5.最小角度回归(Least Angle Regression)
优点:
(1)在p >> n的情况下(即,当维数显着大于点数时)的数值效率较高
(2)它在计算上与正向选择一样快,并且具有与普通最小二乘法相同的复杂度。
(3)它产生一个完整的分段线性解决路径,这在交叉验证或类似的调试模型尝试中很有用。
(4)如果两个变量与响应几乎相等,那么它们的系数应该以大致相同的速率增加。因此,算法的行为就像直觉所期望的那样,并且也更稳定。
(5)它很容易被修改为其他估计器产生解决方案,如 Lasso 。

LARS 方法的缺点包括:
因为 LARS 是基于对残差进行迭代重新设计的,所以它似乎对噪声的影响特别敏感。 Weisberg 在 Efron 等人的讨论部分详细讨论了这个问题。 (2004) Annals of Statistics article 。

(6)Using cross-validation ( 使用交叉验证 )
scikit-learn 通过交叉验证来公开设置 Lasso alpha 参数的对象:LassoCVLassoLarsCV 。 LassoLarsCV 是基于下面解释的 Least Angle Regression ( 最小角度回归 ) 算法。
对于具有许多共线回归的高维数据集, LassoCV 最常见。然而, LassoLarsCV 具有探索更相关的 alpha 参数值的优点,并且如果样本数量与观察次数相比非常小,则通常比 LassoCV 快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章