弹性网络:处理具有异常值的广泛数据

机器算法验证 异常值 正则化 高维 弹性网 厨师距离
2022-04-17 07:00:57

最近我正在研究一个包含约 300 个观察值和 1500 个预测变量的数据集。我使用glmnetR 中的包来拟合弹性网络模型,这给了我 99% 的交叉验证(正则化)R 方。主题专家建议数据可能包含影响/杠杆点,这会扭曲模型拟合。为了测试这一点,我在 80% 的子样本上重新拟合了我的模型,使用剩余的 20% 作为验证数据集。果然,我在验证数据上的 R 平方下降到了 10%。

在广泛的数据集中检测/处理异常值和利用点的建议策略是什么?杠杆库克距离的标准定义涉及计算帽子矩阵;这对于正则化模型仍然有意义吗pn?

此外,是否有任何 R 包可以增强基本弹性网络算法以处理异常值和影响点?(我意识到对于一个 1500 维的问题,可能很难明智地做到这一点。)

1个回答

我只是想我会提到几件事。如果不实际查看结果,很难提及细节,但希望这会有所帮助。大多数这些事情我相信你已经知道了,但万一你错过了什么

1) 10% v/s 90% 检查您是否使用了 glmnet 或 cv.glmnet。您应该使用 cv.glmnet。第一个适合整个数据集的惩罚参数。99% 似乎是一个过拟合估计。您可能没有犯错,但在指定时没有害处。

2)由于 p >> N 每个点在技术上都是异常值(维度的诅咒),所以我不太确定你的意思。然而,有一种称为 Bo-Lasso 或引导套索的技术。它本质上是做您尝试过的子样本实验,并仅保留那些出现在 80% 以上的 LASSO 拟合中的预测变量。不用说它很慢,但是它选择的预测器具有一些不错的渐近特性

http://www.di.ens.fr/~fbach/fbach_bolasso_icml2008.pdf

3)至于影响点,我有点困惑。什么是影响点?像 LASSO 之类的大多数技术都使用 L-1 惩罚来生成稀疏性,因此您有有影响力的 PREDICTORS 而不是有影响力的 POINTS。另一方面,如果您使用支持向量机 (SVM) 之类的东西,您将获得有影响力的 POINTS(支持点本质上就是我认为您在谈论的内容)

抱歉不能更具体。我希望这些提示有所帮助