非负Lasso回归
Lasso回归可以对原变量进行稀疏化,而若增加约束条件使得回归系数大于0,则问题成为非负Lasso回归,具体可参加以下论文
链接:https://pan.baidu.com/s/1rDeIhHaLBagJyfqHzMrd_w 密码:y2x7
下面为R语言实现:
A <- read.csv('x.csv')[,2:146] #自变量
y <- read.csv('y.csv')$V1 #因变量
error = 1e-8
want = 30 #需要留下的变量数
lambda = 0.00314
lambda_list = seq(0.003,0.004,0.000001) #lambda参数的范围
iter = 1000 #迭代次数
######以上为参数########
######以下为函数定义######
nonnagative.lasso <- function(X,y,lambda=0.5,iter=10000,error=1e-8){
X <- as.matrix(X)
y <- as.matrix(y)
m <- nrow(X) #X行数
n <- ncol(X) #X列数
#argmin beta'(X'X)beta+(lambda_nI - 2X'Y)'beta
#初始化beta
beta <- as.matrix(rep(1,n))
A <- t(X)%*%X
A1 <- A
A2 <- A
A1[A1<0] <- 0
A2[A2<0] <- -