平均特征后学习算法的准确性下降
Posted
技术标签:
【中文标题】平均特征后学习算法的准确性下降【英文标题】:Accuracy of learning algorithm drops after averaging features 【发布时间】:2017-11-22 19:45:04 【问题描述】:我正在尝试清理一个庞大的数据集。在这个数据集中,我有 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)
..当我这样做时,我预计算法的准确性不会受到此更改的太大影响,而且我认为它具有使我的数据看起来更干净的额外好处。但是,在应用了这个改变之后,准确率下降了一点点,为什么会这样呢?是不是因为我的算法现在数据拟合不足?
另外,另一方面,我可以对这些属性做些什么来提高准确率?
【问题讨论】:
施瓦辛格和爱因斯坦在平均了他们的身体和智力吸引力之后并没有什么不同。你以为这只是清理? scnr 【参考方案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
是减少信息丢失的方法之一。我希望这个解释有所帮助。
【讨论】:
【参考方案2】:平均可能会导致准确性下降,这可能是由于您提到的拟合不足。我建议尝试特征选择方法来选择合适的属性。
【讨论】:
以上是关于平均特征后学习算法的准确性下降的主要内容,如果未能解决你的问题,请参考以下文章