到目前为止,我的印象是机器学习算法(gbm、随机森林、xgboost 等)可以处理数据中存在的不良特征(变量)。
在我的一个问题中,大约有 150 个功能,如果我使用所有功能,使用 xgboost 我会得到大约 1 的 logloss。但是,如果我删除了大约 10 个不良功能(使用某种技术发现),我观察到的 logloss 为 0.45。这是巨大的进步。
我的问题是,糟糕的功能真的会产生如此大的差异吗?
到目前为止,我的印象是机器学习算法(gbm、随机森林、xgboost 等)可以处理数据中存在的不良特征(变量)。
在我的一个问题中,大约有 150 个功能,如果我使用所有功能,使用 xgboost 我会得到大约 1 的 logloss。但是,如果我删除了大约 10 个不良功能(使用某种技术发现),我观察到的 logloss 为 0.45。这是巨大的进步。
我的问题是,糟糕的功能真的会产生如此大的差异吗?
没有算法能够完美地处理糟糕的数据表示,有些算法更好(如深度学习),有些算法更糟糕,但所有ML 都会遭受糟糕的数据表示。这是现代深度学习的原因之一,并假设我们应该直接处理原始数据而不是手工制作的特征(这可能既很棒又非常容易误导)。
不 -
你做错了什么。您正在评估的数据很可能在统计上与您的训练数据不同。
如果您正在谈论的特征不能预测训练数据,xgboost 将忽略它们,因此删除它们不会影响任何事情。(线性模型没有这种奢侈)
放一些可重现的代码,我们可以更深入地挖掘。