LASSO是由1996年Robert Tibshirani首次提出,全称Least absolute shrinkage and selection operator。
该方法是一种压缩估计。它通过构造一个惩罚函数得到一个较为精炼的模型,使得它压缩一些回归系数,即强制系数绝对值之和小于某个固定值;同时设定一些回归系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。
![352e301f6db73090f8cf03aa619cdd60.png](https://i-blog.csdnimg.cn/blog_migrate/3a383bd24bf49e4ace2745dc422ae65f.png)
设置正则化参数
alpha 参数控制着估计出的模型的系数的稀疏度
使用交叉验证
scikit-learn 通过交叉验证来公开设置 Lasso alpha 参数的对象:LassoCV 和 LassoLarsCV。LassoLarsCV是基于最小角回归的算法。
对于带有很多共线回归器(collinearity)的高维数据集,LassoCV 是经常被选择的模型。然而,LassoLarsCV在寻找更有相关性的 alpha 参数值上更有优势,而且如果样本数量与特征数量相比非常小时,通常LassoLarsCV比LassoCV要快。
基于信息标准的模型选择
作为替代方案,估计器 LassoLarsIC 建议使用Akaike信息准则(AIC)和Bayes信息准则(BIC)。使用基于信息准则的方法寻找alpha的最优值是一种计算成本较低的方法,因为这种方法中正则化路径只计算一次而不是使用k-fold交叉验证时的k+1次。然而,这类准则需要对解的自由度进行适当的估计,是为大样本(渐近结果)导出的,并假定模型是正确的(即数据实际上是由该模型生成的)。当问题条件数不好(特征数大于样本数),模型可能会崩溃。
对于交叉验证,使用两种算法在20-fold上计算Lasso路径(path):坐标下降(由LassoCV类实现)和Lars(最小角回归)(由LassoLarsCV类实现)。这两种算法给出的结果大致相同。它们在执行速度和数值误差来源方面存在差异。
加载表达矩阵和生存数据
rm(list=ls())
options(stringsAsFactors = F)
Rdata_dir='Rdata/'
Figure_dir='figures/'
# 加载上一步从RTCGA.miRNASeq包里面提取miRNA表达矩阵和对应的样本临床信息。
load( file =
file.path(Rdata_dir,'TCGA-KIRC-miRNA-example.Rdata&#