平均特征后学习算法的准确性下降

Accuracy of learning algorithm drops after averaging features

我正在尝试清理一个庞大的数据集。在此数据集中,我有 6 列代表 1-10 的评级系统。因此,第一列根据吸引力对一个人进行评分,第二列根据智力等对一个人进行评分。

attr1  attr2  attr3  attr4  attr5  attr6
2      5      6      8      7      2
5      9      6      9      7      3
9      8      7      5      8      6
     ...                ...

我决定找到所有这些列的平均值并将其保存到一个新列中,然后删除这些列,所以现在我剩下的不是 (attr1 - attr6)...

avg_attr
5
6.5
7.166
...

此代码是...

data['avg_attr'] = data[['attr1', 'attr2', 'attr3', 'attr4', 'attr5', 'attr6']].mean(axis=1)

# Convert columns to 1-dimensional Series array
series = data.columns.to_series()

# Attribute data can be dropped because we already have the total mean.
data = data.drop(series["attr1":"attr6"], axis=1)

..当我这样做时,我希望算法的准确性不会受到此更改的太大影响,而且我认为它具有使我的数据看起来更干净的额外好处。但是,应用此更改后,准确率下降了一点,为什么会这样?是因为我的算法现在对数据拟合不足吗?

另外,在另一方面,我可以用这些属性做些什么来提高准确率吗?

平均可能会导致准确性下降,这可能是由于您提到的欠拟合造成的。我建议尝试使用特征选择方法来选择合适的属性。

准确率自然会下降。您使用的是 mean 但不是相关性。在学习算法中,一个属性的值在内部 dependency 会影响另一个属性。如果您只是平均所有属性,它如何学习 dependency 一个属性。

另一种删除 columns/attributes 的方法是 dimensional reduction。您需要找到 correlation 并且具有更高 correlation 的属性可以被删除。

你可以简单地看到使用seaborn

import seaborn as sns
sns.heatmap(test_data.corr())

可以观想highly correlated attributes,可以一一放下。 Dimensional Reduction是减少信息丢失的方法之一。我希望这个解释有所帮助。