标签: lasso-regression

Lasso r代码 - 它有什么问题?

我试图使用lars包进行套索回归,但似乎无法使lars位工作.我输入了代码:

diabetes<-read.table("diabetes.txt", header=TRUE)
diabetes
library(lars)
diabetes.lasso = lars(diabetes$x, diabetes$y, type = "lasso")
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条错误消息:rep(1,n)中的错误:无效的'times'参数.

我试过这样输入:

diabetes<-read.table("diabetes.txt", header=TRUE)
library(lars)
data(diabetes)
diabetes.lasso = lars(age+sex+bmi+map+td+ldl+hdl+tch+ltg+glu, y, type = "lasso")
Run Code Online (Sandbox Code Playgroud)

但后来我收到错误消息:'lars中的错误(年龄+性别+ bmi +地图+ td + ldl + hdl + tch + ltg + glu,y,type ="lasso"):找不到对象'age'

我哪里错了?

编辑:数据 - 如下所示,但另外5列.

             ldl          hdl          tch          ltg          glu
1   -0.034820763 -0.043400846 -0.002592262  0.019908421 -0.017646125
2   -0.019163340  0.074411564 -0.039493383 -0.068329744 -0.092204050
3   -0.034194466 -0.032355932 -0.002592262  0.002863771 -0.025930339
4    0.024990593 -0.036037570  0.034308859  0.022692023 -0.009361911
5    0.015596140  0.008142084 -0.002592262 -0.031991445 -0.046640874
Run Code Online (Sandbox Code Playgroud)

regression r lasso-regression lars

5
推荐指数
1
解决办法
1万
查看次数

如何从带有套索的线性模型中获取截距(lars R包)

我很难通过R包估算lars我的数据模型.

例如,我创建一个假数据集x和相应的值y,如下所示:

x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]
Run Code Online (Sandbox Code Playgroud)

接下来,我使用lars函数训练一个使用套索正则化的模型:

m = lars(x,y,type = "lasso", normalize = FALSE, intercept = TRUE)
Run Code Online (Sandbox Code Playgroud)

现在我想知道估计的模型是什么(that I know to be: y = 0.5 + 3 * x[,1] + 0 * x[,2])

我只对最后一步获得的系数感兴趣:

cf = predict(m, x, s=1, mode = "fraction", type = "coef")$coef
cf
a b 
3 0
Run Code Online (Sandbox Code Playgroud)

这些是我期望的系数,但是我找不到从中获取intercept(0.5)的方法m.

我试图检查predict.lars适合的代码,如下所示:

fit = drop(scale(newx, 
           object$meanx, FALSE) %*% …
Run Code Online (Sandbox Code Playgroud)

r lasso-regression intercept lars

5
推荐指数
1
解决办法
3631
查看次数

为什么在套索回归中计算 MSE 会给出不同的输出?

我正在尝试对来自 lasso2 包的前列腺癌数据运行不同的回归模型。当我使用 Lasso 时,我看到了两种不同的方法来计算均方误差。但他们确实给了我完全不同的结果,所以我想知道我是否做错了什么,或者这是否只是意味着一种方法比另一种更好?

# Needs the following R packages.
library(lasso2)
library(glmnet)

# Gets the prostate cancer dataset
data(Prostate)

# Defines the Mean Square Error function 
mse = function(x,y) { mean((x-y)^2)}

# 75% of the sample size.
smp_size = floor(0.75 * nrow(Prostate))

# Sets the seed to make the partition reproductible.
set.seed(907)
train_ind = sample(seq_len(nrow(Prostate)), size = smp_size)

# Training set
train = Prostate[train_ind, ]

# Test set
test = Prostate[-train_ind, ]

# Creates matrices for independent and dependent …
Run Code Online (Sandbox Code Playgroud)

r machine-learning lasso-regression glmnet mean-square-error

5
推荐指数
1
解决办法
7726
查看次数

如何在python中执行逻辑套索?

scikit-learn包提供了函数Lasso(),LassoCV()但没有选项来适应逻辑函数而不是线性函数...如何在python中执行逻辑套索?

python lasso-regression scikit-learn logistic-regression

5
推荐指数
1
解决办法
8345
查看次数

使用Iris数据集使用Python在R中再现LASSO /逻辑回归结果

我正在尝试在Python中重现以下R结果。在这种特殊情况下,R预测技能低于Python技能,但是根据我的经验通常不是这种情况(因此,需要在Python中重现结果的原因),因此请在此处忽略此详细信息。

目的是预测花的种类('versicolor'0或'virginica'1)。我们有100个带有标签的样本,每个样本包含4个花特征:萼片长度,萼片宽度,花瓣长度,花瓣宽度。我已将数据分为训练(数据的60%)和测试集(数据的40%)。将10倍交叉验证应用于训练集以搜索最佳lambda(在scikit-learn中优化的参数为“ C”)。

我在R 中将glmnet的 alpha设置为1(对于LASSO惩罚),对于python,则使用scikit-learn的LogisticRegressionCV函数和“ liblinear”求解器(可以与L1罚分一起使用的唯一求解器)。交叉验证中使用的评分指标在两种语言之间是相同的。但是,模型结果有所不同(针对每个特征找到的截距和系数相差很大)。

R代码

library(glmnet)
library(datasets)
data(iris)

y <- as.numeric(iris[,5])
X <- iris[y!=1, 1:4]
y <- y[y!=1]-2

n_sample = NROW(X)

w = .6
X_train = X[0:(w * n_sample),]  # (60, 4)
y_train = y[0:(w * n_sample)]   # (60,)
X_test = X[((w * n_sample)+1):n_sample,]  # (40, 4)
y_test = y[((w * n_sample)+1):n_sample]   # (40,)

# set alpha=1 for LASSO and alpha=0 for ridge regression
# use class for logistic regression
set.seed(0)
model_lambda <- cv.glmnet(as.matrix(X_train), as.factor(y_train), …
Run Code Online (Sandbox Code Playgroud)

python r lasso-regression scikit-learn logistic-regression

5
推荐指数
1
解决办法
2194
查看次数

R 中 rqPen 和 quantreg 包之间的区别

我正在为 R 中的波士顿住房数据构建分位数回归模型 + LASSO 惩罚。我发现了 2 个可以构建此类模型的包:rqPen 和 quantreg。rqPen 实现了一个交叉验证过程来调整 LASSO 参数 lambda,所以我决定使用这个。我考虑了算法自动选择的 100 个不同的 lambda 值和 10 倍:

library(rqPen)
library(mlbench)
data("BostonHousing")
help(BostonHousing)
x_boston <- data.matrix(BostonHousing[,-14])
y_boston <- BostonHousing[,14]
cv_m1_boston <- cv.rq.pen(x_boston,y_boston, penalty="LASSO", nlambda=100, nfolds=10, tau=.5, cvFunc="AE")
Run Code Online (Sandbox Code Playgroud)

CV 的结果是,当 lambda 值为 0.46 时,最小绝对误差为 4.2。该模型仅考虑预测变量“zn、”tax”、“b”和“lstat”,并将与其余预测变量相关的系数发送为零。

m1_boston <- rq.lasso.fit(x_boston[i_train,], y_boston[i_train], tau=0.5, lambda=0.46)

Coefficients:
intercept         crim           zn        indus         chas          nox           rm          age          dis          rad 
27.175724364  0.000000000  0.025560221  0.000000000  0.000000000  0.000000000  0.000000000  0.000000000  0.000000000  0.000000000 
        tax      ptratio            b        lstat 
-0.008151729  0.000000000  0.007577458 -0.495927958 …
Run Code Online (Sandbox Code Playgroud)

r package lasso-regression quantile-regression

5
推荐指数
0
解决办法
809
查看次数

如何在R中使用glmnet计算套索回归的R平方值

我正在使用 glmnet 包在 R 中执行套索回归:

fit.lasso <- glmnet(x,y)
plot(fit.lasso,xvar="lambda",label=TRUE)
Run Code Online (Sandbox Code Playgroud)

fit.lasso 图

然后使用交叉验证:

cv.lasso=cv.glmnet(x,y)
plot(cv.lasso)
Run Code Online (Sandbox Code Playgroud)

拉姆达 VS MSE

一个教程(最后一张幻灯片)为 R^2 建议以下内容:

R_Squared =  1 - cv.lasso$cvm/var(y)
Run Code Online (Sandbox Code Playgroud)

但它没有用。

我想了解拟合数据的模型效率/性能。正如我们在 r 中执行 lm() 函数时通常得到 R^2 并调整 R^2 一样。

r lasso-regression linear-regression glmnet

5
推荐指数
2
解决办法
1万
查看次数

glmnet error (nulldev == 0) stop("y 是常数;高斯 glmnet 在标准化步骤中失败")

我正在 R 中使用 glmnet 运行以下(截断的)代码

# do a lot of things to create the design matrix called x.design

> glmnet(x.design, y, thresh=1e-11)
Run Code Online (Sandbox Code Playgroud)

其中x.designnxp设计矩阵,其中n > py是使用核密度估计获得的响应的nx 1向量。x.designy都包含真实条目。当我运行我的代码时,收到以下错误消息:

Error in if (nulldev == 0) stop("y is constant; gaussian glmnet fails at 
standardization step") : missing value where TRUE/FALSE needed 
Run Code Online (Sandbox Code Playgroud)

我曾访问过并阅读过

在 R 中运行 glmnet 包,出现错误“缺少 TRUE/FALSE 需要的值”,可能是由于缺少值?

但是我无法找到解决我的问题的方法。

有人可以建议一个解决方案吗?

regression r lasso-regression linear-regression glmnet

5
推荐指数
1
解决办法
1万
查看次数

如何在 R 中的 Vars 包中使用套索

亲爱的程序员小伙伴们,

我正在尝试通过惩罚向量自回归分析高维数据集(31 个变量,1100 个观察值)。

由于我使用的是 Diebold 等人介绍的技术。al (2019) 通过方差分解矩阵构建连通性网络。我想在 r 中使用他们的包:https : //www.rdocumentation.org/packages/vars/versions/1.5-3/topics/fevd

但是,此包只能与常规 VAR 估计一起使用。我想使用惩罚回归,例如LASSO。那么我如何在 R 中使用他们的包,并带有惩罚的 VAR?

我尝试了什么?他们是 github 上的 Lassovars 包,但是,我不能在 fevd() 函数中使用它。它说:只使用来自 Vars 类的估计。

期待您的回复!

亲切的问候,

巴特

r lasso-regression covariance-matrix vector-auto-regression

5
推荐指数
1
解决办法
677
查看次数

计算给定脊估计的脊参数

假设响应和协变量数据如下:

(1.4, 0.0), (1.4, -2.0), (0.8, 0.0), (0.4,2.0).   
Run Code Online (Sandbox Code Playgroud)

我想(1, -1/8)通过将惩罚参数应用于斜率来找到脊参数 k,为此脊估计是。

regression response lasso-regression linear-regression

5
推荐指数
0
解决办法
38
查看次数