问题标签 [lasso-regression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 相关变量的 Lasso 或 Ridge
我试图理解一句话“在存在相关变量的情况下,岭回归可能是首选。”假设我们有变量 a1、a2、b1、c2,并且 2 a"s 是相关的。如果我们使用 Lasso 它可以消除其中一个。Lasso 和 Ridge 都会收缩。所以听起来 Lasso 在这些条件下可能会更好。但报价说里奇更好。这是一个错误的报价还是我遗漏了什么?(也许想得太简单了)
r - R:用于 cv.glmnet 的 model.matrix 从数据框中删除行
我在使用 cv.glmnet 创建用于运行岭回归和套索回归的解释变量矩阵时遇到问题。
我的原始数据框尺寸为 1460*81,由几个数字和因子变量组成。为了运行 glmnet,我尝试使用model.matrix创建一个预测变量矩阵。
但是,在我的原始数据集上创建 model.matrix 时,一些行被删除并且我的响应变量和预测变量的长度不同。
这是代码:
现在我将数据框传递给 model.matrix 以创建一个矩阵。
请注意,n = 1460 * 80 如何转换为 1370 * 260。当我尝试运行岭回归时,这会导致我的预测变量和响应变量的长度不匹配。
关于在哪里寻找以确保矩阵 (x) 的长度等于 (y) 的任何想法?
r - R中逐步回归的最佳选择
我知道有很多类似的问题/答案,还有很多论文。但请读到最后。
非统计学家倾向于使用统计学家强烈主张的逐步回归。这是我不明白的事情,但我只是服从他们。“好吧,这不是你建模的好方法”。
这是(曾经)我的模型:
b <- lmer(metric1~a+b+c+d+e+f+g+h+i+j+k+l+(1|X/Y) + (1|Z), data = dataset)
drop1 (b, test="Chisq")
(只是一个小提示:注意我的模型中的随机效应;随机效应是年、月、Sampling.location;我的一个变量是 1/0:我已经对我的变量进行了对数转换)
我正在尝试找到一个探索性模型(drop1
以达到最终模型)并用我的生物学知识对其进行评估,以查看依赖项(在这种情况下为“度量”)是否似乎是响应变量。我将使用 100 个指标重复此过程,以评估哪些指标似乎正在响应环境变量。
根据统计专家的建议,我正在寻找一个可接受的模型,而不是逐步进行。
但是,有很多选择。我读了很多书,但仍然觉得自己迷失了方向。有人说套索,有人说弹性建模,有人说岭回归……哪一个适合我的目的?
任何关于更好的替代方案和简单模型或假人帮助页面或示例(可能更好)的建议将不胜感激。
提前致谢。
python - LASSO 回归是否在 Statsmodels 中实现?
我很想在 statsmodels 中使用线性 LASSO 回归,以便能够使用“公式”表示法来编写模型,这将在处理许多分类变量及其交互时为我节省相当多的编码时间。但是,它似乎还没有在统计模型中实现?
r - 创建 LASSO 回归分析时出现错误消息
我想使用 Tibshirani (1996) 描述的 LASSO 技术创建一个回归模型,使用包“lars”。我有 28 个财务自变量,全部以美元或百分比表示,例如利润和利润率和 1 个因变量(商誉),并且没有一个包含缺失值;即所有值都是正数、负数或 0。第一列包含案例 ID,不应包含在模型中。
我想创建一个回归模型,可以计算资产负债表上报告的商誉价值。
现在,我有以下代码:
当我执行 lars() 时,我收到以下错误消息: if (Cmax < eps * 100) { : 需要 TRUE/FALSE 的缺失值
有人可以解释这条消息的含义以及我该如何解决这个问题吗?
我希望错误发生在这里的某个地方:eps = .Machine$double.eps,因为错误消息也指示 eps,但老实说,我不知道。
我的数据样本:
python - 使用 Iris 数据集使用 Python 在 R 中重现 LASSO / Logistic 回归结果
我正在尝试在 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 惩罚的求解器)。交叉验证中使用的评分指标在两种语言之间是相同的。然而不知何故,模型结果是不同的(为每个特征找到的截距和系数变化很大)。
代码
Python代码
r - R中的随机套索
我一直在尝试在 R 中创建一个随机套索函数,但它似乎不会产生与 Python sklearn 随机套索函数相同的结果。我在这里应用相同的理念,但无法理解其中的区别。代码基于此代码进行了修改:R中的随机套索函数。
以下是代码和示例数据:
结果应该与此表中显示的结果相似(稳定性)python 中的稳定性。但是,这种方法和第一个超链接参考中显示的原始 R 代码没有找到 X11 到 X14 的相关特征。不确定我的 R 代码中哪个部分不能正常工作。
python - 在 Python Lasso 和 R glmnet 中标准化 X 不同?
我试图使用 Python 的 scikit-learn 和 R 的 glmnet 获得相同的结果拟合套索。一个有用的链接
如果我在 Python 中指定“normalize = True”,在 R 中指定“standardize = T”,它们给了我相同的结果。
Python:
回复:
但是,如果我不想标准化变量并设置 normalize =False 和 standardize = F,他们给了我完全不同的结果。
Python:
回复:
Python 的 Lasso 中的“标准化”和 R 的 glmnet 中的“标准化”有什么区别?
logistic-regression - 套索/岭的系数和意义
在形成所有分类变量的虚拟变量后,我有 628 个预测变量。当我运行很多次传统逻辑回归迭代时,我遇到了 15 个变量,这些变量为我提供了非常好的模型,具有良好的 ROC、召回率和精度(对于某些截止值)测试数据的值,而且所有变量都很显着(在 p <=0.05)。但由于花费了很多时间,我尝试使用 lasso 在运行 10 倍交叉验证后获得最佳 lambda 值后,它给了我 50 个非零系数变量。而传统方法的 15 个变量和 lasso 的 50 个变量之间只有 5 个变量是共同的。此外,当我试图计算它的 SE 和 t-stats 时,我发现许多变量是微不足道的(低 t-stats 和高 p-value)。除此之外,ROC 的 AUC 低于传统方法。当我对作为套索结果的 50 个变量使用传统逻辑回归时,ROC 下降得更多。有人可以帮助我了解它的动态以及如何证明套索模型的系数受到惩罚(我在使用套索之前已经对所有变量进行了归一化)?
r - 套索之后:将剩余变量存储为新数据框(使用 R)
首先,非常感谢您的关注和时间。我的问题(使用 R):为了预测 yvar,我运行了一个套索回归,将 xvariables 的集合从 736 减少到 30。
因此,我将剩余的变量名称作为数据框和列表。如何创建一个包含剩余 30 个变量及其观察结果的新数据框?换句话说:如何获得不包含 737 个变量但仅包含 31 个变量的原始数据子集?
我认为这应该很容易,但是我已经花了两个多小时,但它从来没有奏效......
最好的祝愿,托马斯