【发布时间】:2011-12-03 16:42:12
【问题描述】:
我正在尝试使用线性回归来找出 3 个模型的最佳权重来预测结果。所以有 3 个变量 (x1, x2, x3) 是因变量 y 的预测。我的问题是,如何在系数总和为 1 的约束条件下运行回归。例如:
这很好:
y = .2(x1) + .4(x2) + .4(x3)
自从.2 + .4 + .4 = 1
这不好:
y = 1.2(x1) + .4(x2) + .3(x3)
自从1.2 + .4 + .3 > 1
如果可能,我希望在 R 中执行此操作。谢谢。让我知道是否需要将其移至统计数据区域(“交叉验证”)。
编辑:
问题是将每一行分类为 1 或 0。y 是来自训练集的实际值(0 或 1),x1 是来自 kNN 模型的预测值,x2 来自 randomForest,x3 来自gbm模型。我试图为每个模型获得最佳权重,因此每个系数
y/Actual value knnPred RfPred gbmPred
0 .1111 .0546 .03325
1 .7778 .6245 .60985
0 .3354 .1293 .33255
0 .2235 .9987 .10393
1 .9888 .6753 .88933
... ... ... ...
衡量成功的标准是 AUC。所以我试图设置系数以最大化 AUC,同时确保它们总和为 1。
【问题讨论】:
-
这就是你要做的:构建一个小例子,列出你正在使用的包和创建你看到的输出的代码,然后有人可以提供建议。
-
mgcv包提供了一个函数pcls()(惩罚约束最小二乘拟合),它允许为参数指定线性等式和不等式约束。您需要将模型设置在比例如略低的级别。lm(),但它给你带来的力量可能值得你付出额外的麻烦。
标签: r regression