到目前为止,我的印象是机器学习算法(gbm、随机森林、xgboost 等)可以处理数据中存在的不良特征(变量)。
在我的一个问题中,大约有 150 个功能,如果我使用所有功能,使用 xgboost 我会得到大约 1 的 logloss。但是,如果我删除了大约 10 个不良功能(使用某种技术发现),我观察到的 logloss 为 0.45。这是巨大的进步。
我的问题是,糟糕的功能真的会产生如此大的差异吗?
到目前为止,我的印象是机器学习算法(gbm、随机森林、xgboost 等)可以处理数据中存在的不良特征(变量)。
在我的一个问题中,大约有 150 个功能,如果我使用所有功能,使用 xgboost 我会得到大约 1 的 logloss。但是,如果我删除了大约 10 个不良功能(使用某种技术发现),我观察到的 logloss 为 0.45。这是巨大的进步。
我的问题是,糟糕的功能真的会产生如此大的差异吗?
是的,可以肯定的是,一些算法比其他算法更健壮,但建议进行适当的特征选择。这是由于维度的诅咒。这不仅是算法,而且与您拥有的数据点数量与特征数量相比也有很大关系。如果你有 10,000,000 个数据点,150 个特征不是问题,如果你有 400 个数据点,150 个特征就太多了。当可以学习的东西这么少时,你怎么能学到东西呢?对于几乎所有算法来说,过度拟合都是一个真正的问题,而嘈杂的特征使得学习实际上不存在的东西变得更加容易。
我不愿将功能视为坏功能。但是,相对于其他功能,有些功能或多或少有用。
一般来说,剪枝功能被视为一种很好的最佳实践。过度拟合无疑是机器学习中的一个真正问题。通常,创建过于强大的模型、没有足够的数据和/或具有太多特征的组合会产生不良结果。
对数据集进行适当的分区有助于在必要的情况下调整模型参数,从而有助于建立更通用的模型。