使用更多特征会降低分类器的准确性吗?

机器算法验证 特征选择 过拟合
2022-04-11 23:12:44

我正在测试一个项目。我有训练和测试数据。训练有 182 个特征和 1000 个样本,测试有 3500 个样本。如果我选择某些数据列并对它们应用朴素贝叶斯分类器,我的准确度会比使用全部 182 个特征时更高。

例如,对于以下示例,num=30准确度约为 0.75,100 约为 0.60,182 约为 0.44!

这怎么可能?我认为使用更多功能会带来更好的性能。

num =182
naive_bayes.fit(x_train[:,range(num)], y_train)
y_pred = naive_bayes.predict(x_test[:,range(num)])
acc = accuracy_score(y_test, y_pred)   
print("acc:", acc)

它是每特征数量的准确度图。

在此处输入图像描述

3个回答

这是与休斯现象的一次有益的相遇。天真地,人们会认为拥有的信息越多,就可以更好地对系统进行建模并做出预测。然而,这种偏见忽略了所谓的维度诅咒

为方便起见,假设每个特征(或变量)只能取有限数量的值。为了准确地捕捉数据的特征,首先需要足够大的数据点集合,可以说是填充特征空间,即每个值组合都需要足够的样本。现在,在实践中,当您看到数据时,您只有有限数量的观察结果。如果你有太多的特征,特征空间将有太多的子区域,只​​有很少的观察或根本没有观察,你的分类器将失去预测能力,因为它没有学习到太多重要子区域中的数据行为。

当您有少量变量时,通常不会出现此问题,因为很少有可能的组合共享有限数量的观察值。

虽然最初增加特征的数量有助于分类器的预测能力,但一旦这意味着添加特征会阻止分类器学习太多大区域中的数据行为,它就变成了一种负担。分类器冒着在数据密集的观察区域中过度拟合数据的风险。

推理自然延伸到具有连续特征的情况。

这篇文章可能会有所帮助:https ://towardsdatascience.com/the-curse-of-dimensionality-50dc6e49aa1e 。

添加过多的预测变量会导致过度拟合总是。看看我们的标签。

不要只是将预测变量放入模型中。(交叉验证和正则化在一定程度上有所帮助,但它们并不能防止所有过拟合。)

另外:为什么准确性不是评估分类模型的最佳衡量标准?

这已得到解答,但这里还有一些提示。创建模型时,您必须始终注意模型的偏差/方差权衡曲线。如果一个模型有很多特征,它将以高方差进行预测,从而导致不太准确的结果。特征太少,模型会有很高的偏差,导致模型过于频繁地预测接近相同的值,这也会降低准确率。为了找到偏差和方差之间的最佳折衷,使用适当的特征工程非常重要。

偏差/方差权衡