下面讲的方法用于回归,通过对输入参数进行一些线性组合来预测target值。在数学表示中,预测值为
该模型设计了一个向量作为相关系数参数:coef_,w0作为参数:intercept_。
如果想执行线性模型的分类,可以详见:Logistic regression。
1.最小二乘法(Ordinary Least Squares)
在数理统计中,残差是指实际观察值与估计值(拟合值)之间的差。
LinearRegression使用回归系数:对线性模型进行拟合,通过对数据集的观察值和预测值之间做残差平方和(RSS:residual sum of squares),进行最小化。数学表示为:
LinearRegression采用fit方法对X,y进行拟合,最终得到的线性模型,将w存储在coef_属性上:
然后,对于最小二乘法的回归系数估计,依赖于模型term的独立性。当terms与设计矩阵X的列相关时,具有一个近似的线性依赖,设计矩阵将与奇异矩阵相接近,结果通过观察值发现产生了一个较大的variance,最小二乘估计(least-squares)变得对随机误差高度敏感。当被采集的数据设计时如果没有经验,就有可能发生多重共线性(Multicollinearity)的情况。
示例:
最小二乘法的复杂度
最小二乘法使用了X矩阵分解的奇异值。如果X的size为(n, p) ,那么该方法的cost为,假设:
2. 岭回归(Ridge Regression)
Ridge回归通过引入对回归系数size的一个惩罚项,解决了最小二乘法存在的一些问题。ridge回归系数的优化目标为:最小化带罚项的残差平方和。
这里,表示复杂度参数,它控制着收缩(shrinkage)的程度:越大,shrinkage程度越大,回归系数就越健壮(不容易产生多重共线性)。
上图的每种着色,表示coefficient vector中每个不同的feature,它们在正则化参数函数上进行展示。在相应path的终点,alpha趋向于0,相应的解趋向于普通的最小二乘法,coefficients参数具有强烈的波动。
和其它线性模型一样,Ridge的fit建模后,也会将回归系数存于coef_属性上:
示例:
- Plot Ridge coefficients as a function of the regularization
- Classification of text documents using sparse features
2.1 Ridge复杂度
和普通最小二乘法的一样。
2.2 如何设置正则化参数?泛化交叉验证(GCV)
RidgeCV实现了岭回归,内置了对alpha参数的交叉验证。该对象与GridSearchCV工作机制类似,有一点不同的是,它缺省使用泛化交叉验证(GCV),一种留一交叉验证(leave-one-out cross-validation)的有效形式。
3.Lasso
Lasso是一种线性模型,用于估计稀疏的回归系数。在一些情况通常更喜欢使用更少的参数值,这样可以有效地降低变量的数目,使得解决方案独立。由于这个原因,Lasso和它的变种在压缩感知(compressed sensing)领域是基础。在特定条件下,它可以恢复非零权重的完整集合,详见。
数学上,它包含了一个使用作为正则项进行训练的线性模型。要最小化的目标函数为:
lasso估计的目标是最小化带罚项的最小二乘,其中:为常数,为参数向量的l1范数。
Lasso的实现使用了坐标下降法(coordinate descent)来拟合回归系数。另外最小角回归提供了另一种实现:
对于低级别的任务,函数lasso_path很有效,它会使用所有可能值来计算回归系数。
示例:
- Lasso and Elastic Net for Sparse Signals
- Compressive sensing: tomography reconstruction with L1 prior (Lasso)
注意:使用Lasso进行特征选择
Lasso回归产生稀疏的模型,它可以用于执行特征选择,详见L1-based feature selection
注意:随机稀疏化
对于特征选择(feature selection)或稀疏求解(sparse recovery),有兴趣的可以使用:Randomized sparse models.
3.1 设置正则化参数
alpha参数控制着要估计的回归系数的稀疏度(degree of sparsity)。
使用交叉验证
sklearn提供了一些交叉验证对象来设置Lasso的alpha参数:LassoCV 和 LassoLarsCV。其中LassoLarsCV基于最小角回归算法。
对于高维数据集可能存在许多共线的回归,LassoCV表现通常很好。然而,LassoLarsCV的优点是,可以开发更多与alpha参数的相关值,如果样本数与观察到的数目相比非常小,通常比LassoCV更快。
图:在每个fold上的最小二乘误差:坐标下降法(训练时间:0.35s)
图:在每个fold上的最小二乘误差:使用Lars(训练时间:0.17s)
基于模型选择的信息准则
另一种方法:LassoLarsIC使用AIC(Akaike information criterion)和BIC(Bayes Information criterion)。它在寻找alpha的最优值时计算量更小,只需要一次,而当使用k-fold交叉验证时需要k+1次。。。。
4.Elastic Net
ElasticNet是一个线性回归模型,同时使用L1和L2作为正则项。这种结合可以让你像Lasso那样从一个稀疏模型中学到少量非零权重,也能像Ridge模型那样仍然维持着正则化属性。我们使用l1_ratio参数来控制着L1和L2的凸结合。
当许多features彼此相关时,Elastic-net会很有用。Lasso则是从其中随机取一个,而elastic-net则选取所有的。
在Lasso和Ridge之间进行平衡的实际好处是,使得elastic-net可以继承Ridge在rotation上的稳定性。
目标函数如下:
ElasticNetCV可以通过交叉验证来设置alpha参数()和l1_ratio参数()。
示例:
11.SGD
12. Perceptron
Perceptron是另一个简单的算法,适用于大规模learning(large scale learning)。缺省的:
- 它不需要一个learning rate.
- 它没有正则项(不需要penalized)
- 只在错误时,才更新模型
Perceptron的最后一个特性暗示着,它比使用hinge loss的SGD要略微快一些。它会导致模型更稀疏。
参考: