下面是一组用于回归的方法,其中目标期望值 y是输入变量 x 的线性组合。 在数学概念中,如果
是预测值 value.
在整个模块中,我们定义向量
作为coef_定义
作为intercept_.
如果需要使用广义线性模型进行分类,请参阅logistic 回归.logistic 回归.
的线性模型,使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。其数学表达式为:
LinearRegression会调用fit方法来拟合数组 X, y,并且将线性模型的系数
存储在其成员变量``coef_``中:
>>>
>>>fromsklearnimportlinear_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])
然而,对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性。当各项是相关的,且设计矩阵
的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差。例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity) 的情况可能真的会出现。
举例:
该方法使用 X 的奇异值分解来计算最小二乘解。如果 X 是一个 size 为 (n, p) 的矩阵,设
,则该方法花费的成本为
Ridge回归通过对系数的大小施加惩罚来解决普通最小二乘法(普通最小二乘)的一些问题。 岭系数最小化一个带罚项的残差平方和,
其中,
是控制收缩量复杂性的参数:
, 的值越大,收缩量越大,因此系数对共线性变得更加鲁棒。
与其他线性模型一样,Ridge采用fit将采用其
存储在其coef_成员中:
>>>
>>>fromsklearnimportlinear_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...
举例:
:ref:`sphx_glr_auto_examples_linear_model_plot_ridge_path.py`( 作为正则化的函数,绘制岭系数 )
:ref:`sphx_glr_auto_examples_text_document_classification_20newsgroups.py`( 使用稀疏特征的文本文档分类 )
这种方法与普通最小二乘法(普通最小二乘方法)的复杂度是相同的.
RidgeCV通过内置的 Alpha 参数的交叉验证来实现岭回归。 该对象与 GridSearchCV 的使用方法相同,只是它默认为 Generalized Cross-Validation(广义交叉验证 GCV),这是一种有效的留一验证方法(LOO-CV):
>>>
>>>fromsklearnimportlinear_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
参考
“Notes on Regularized Least Squares”, Rifkin & Lippert (technical report,course slides).
TheLasso是估计稀疏系数的线性模型。 它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。 因此,Lasso及其变体是压缩感知领域的基础。 在一定条件下,它可以恢复一组非零权重的精确集 (见Compressive sensing: tomography reconstruction with L1 prior (Lasso)).
在数学上,它由一个线性模型组成,以
为准。 其目标函数的最小化是:
lasso estimate 解决了加上罚项
的最小二乘法的最小化,其中,
是一个常数,
是参数向量的
-norm 范数。
Lasso类的实现使用了 coordinate descent (坐标下降算法)来拟合系数。 查看最小角回归用于另一个实现:
>>>
>>>fromsklearnimportlinear_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])
对于较低级别的任务,同样有用的是:func:lasso_path。它能够通过搜索所有可能的路径上的值来计算系数。
举例:
Note
Feature selection with Lasso(使用 Lasso 进行 Feature 的选择)
由于 Lasso 回归产生稀疏模型,因此可以用于执行特征选择,详见基于 L1 的特征选取(基于L1的特征选择).
alpha参数控制估计系数的稀疏度。
scikit-learn 通过交叉验证来公开设置 Lassoalpha参数的对象:LassoCVandLassoLarsCV。LassoLarsCV是基于下面解释的 :ref:`least_angle_regression`(最小角度回归)算法。
对于具有许多线性回归的高维数据集,LassoCV最常见。 然而,LassoLarsCV在寻找alphaparameter 参数值上更具有优势,