Scikit-learn实战之线性模型

来源:互联网 发布:淘宝橘子的俄罗斯代购 编辑:程序博客网 时间:2024/06/03 17:02

      下面是一系列的用于回归的方法,这些方法的目标值(target value)是由输入变量的线性组合而成。在数学概念上,如果 y^ 是预测值:

这里写图片描述

在整个模块中,我们指定向量 这里写图片描述

系数,并且 ω0 作为截距

1. 普通最小二乘法

      LinearRegression是一个线性模型,它的系数 这里写图片描述 最小化数据集中的观测结果和线性预测结果之间的残差和。它解决的问题在数学上可以形式化为:

minw||Xwy||2

这里写图片描述

     LinearRegressionfit 方法接收数组 Xy 作为其参数,并且会将线性模型的的系数 ω 存储在它的成员 coef_ 中:

>>> from sklearn import linear_model>>> reg = linear_model.LinearRegression()>>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)>>> reg.coef_array([ 0.5,  0.5])

     然而由普通最小二乘法估计的系数依赖于模型项之间的独立性。当所有的项是相关的,并且设计矩阵X 的列有一个近似的线性相关性。设计矩阵接近奇异,并且作为一个结果,最小二乘估计将对观察值的随机误差高度敏感,产生一个较大的差异。这种情况下,多重共线性的可能性将会增加。例如,数据没有按照实验设计来收集。

1.1 普通最小二乘法的复杂性

      这种方法使用矩阵 X 的奇异值分解来计算最小二乘解。如果矩阵 X的尺寸是 (n,p) , 那么该方法的的复杂度将会是 O(np2) ,假设 np

2. 岭回归

      Ridge 回归通过引入系数的惩罚项来处理普通最小二乘法的一些问题:

这里写图片描述

      在这里,α0 是一个复杂的参数,它控制着收缩量:α 值越大,收缩量越大,并且系数的共线性将变得更鲁棒。

这里写图片描述

和其它的线性模型一样,Ridgefit 方法接收数组 Xy 作为其参数,并且会将线性模型的的系数 ω 存储在它的成员 coef_ 中:

>>> 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...

2.2 Ridge的复杂性

      Ridge 的算法复杂性与普通最小二乘的复杂度一致。

2.3 设置正则化参数:广义交叉验证

      RidgeCV实现了一个内置 α 参数的交叉验证的岭回归。它使用的是留一法验证:

>>> 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])       RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,    normalize=False)>>> reg.alpha_                                      0.1

3. Lasso

      Lasso 线性模型估计稀疏系数。他在某些情况下是非常有用的,在这些情况下更倾向于更少的参数的解决方案。它有效地减少在给定解决方案上独立变量的个数。

持续更新中。。。

0 0
原创粉丝点击