非负Lasso回归的R语言实现

非负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] <- -
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值