Lasso回归模型,是常用线性回归的模型,当模型维度较高时,Lasso算法通过求解稀疏解对模型进行变量选择。Lars算法则提供了一种快速求解该模型的方法。Lars算法的基本原理有许多其他文章可以参考,这里不过多赘述, 这里主要简介如何在R中利用lars算法包求解线性回归问题以及参数的选择方法。
以下的的一些用法参照lars包的帮助文件,再加上自己的使用心得。所用的示例数据diabetes是Efron在其论文中“Least Angle Regression”中用到的,可以在加载lars包后直接获得
[html] view plain copy
library(lars)
data(diabetes)
attach(diabetes)
该数据中含有三个变量x,x2,y, 其中x是一个有422X10维的矩阵,y是一422维个向量 ,x2是由x得到的 422X64维矩阵(compressive).
- 求解路径solution path
lars(x, y, type = c("lasso", "lar", "forward.stagewise", "stepwise"), trace = FALSE, normalize = TRUE, intercept = TRUE, Gram, eps = .Machine$double.eps, max.steps, use.Gram = TRUE)
该函数提供了通过回归变量x和因变量y求解其回归解路径的功能。其中,
type ---- 表示所使用的回归方法,包括(lasso, lar, forward.stagewise, stepwise),选择不同的回归方法将得到不同的解路径;
normalize ---- 表示是否对变量进行归一化,当为TRUE时,程序将对x和y进行L2正则化;
intercept ---- 表示是否对变量进行中心化,当为TRUE时,程序将对x和y分别减去其均值。
原文地址:http://blog.51cto.com/jackxlee/2097642