Lasso线性回归(Least Absolute Shrinkage and Selection Operator) 是一种能够进行特征选择和正则化的线性回归方法。其重要的思想是L1正则化:其基本原理为 在损失函数中加上模型权重系数的绝对值 ,要想让模型的拟合效果比较好,就要使损失函数尽可能的小,因此这样会使很多权重变为0或者权重值变得尽可能小,这样通过减少权重、降低权重值的方法能够防止模型过拟合,增加模型的泛化能力。其中还有另外一种类似的方法叫做岭回归,其基本原理是在损失函数中加上含有模型权重系数的平方的惩罚项,其他原理基本相同。
Lasso线性回归的目标是最小化以下损失函数:
其中:
理论上来说当模型的损失函数越小时,构建的模型越接近真实分布,但是当模型的参数远远大于用来训练模型的数量的时候,很容易造成过拟合(模型学到的特征不是样本之间的共同特征,而是样本自身的特异性特征)。
通过L1正则化,可以约束线性模型中的权重系数,而且会减少特征量,保留权重系数有效的特征,同时能够减少系数之间的差距,让模型更具有泛化性。
当模型的损失函数达到最小的时候,惩罚项λ达到最优,模型的性能达到最优。
本文同样使用留一交叉验证的方法验证模型的分类性能,具体应用场景可以参考:
机器学习(一)——递归特征消除法实现SVM(matlab)。
本文还提供了均方误差与特征数量的变化关系曲线、λ与均方误差的变化关系曲线以及分类结果的ROC曲线画法,如有需要请选择对应模块进行调整作图。
matlab实现代码如下:
labels = res(:, 1); % 第一列是标签
features = res(:, 2:end); % 后面的列是特征
features = zscore(features); %归一化处理
%% 使用留一法交叉验证选择最优的 Lambda 值及其对应的特征
numSamples = size(features, 1);
lambda_values = logspace(-2, 2, 60); % 选择一系列 Lambda 值
...