KNN归一化的准确度差异

时间:2017-02-07 14:32:50

标签: python machine-learning scikit-learn knn

我在KNN分类算法上训练了我的模型,我的准确率达到了97%左右。然而,我后来注意到我错过了规范化我的数据并将数据标准化并重新训练了我的模型,现在我的准确率只有87%。可能是什么原因?我应该坚持使用未规范化的数据,还是应该切换到标准化版本。

3 个答案:

答案 0 :(得分:4)

要回答您的问题,您首先需要了解KNN的工作原理。这是一个简单的图表:

enter image description here

假设?是你试图分为红色或蓝色的点。对于这种情况,我们假设您没有规范化任何数据。你可以清楚地看到?比蓝色机器人更接近红点。因此,这一点将被假定为红色。让我们假设正确的标签是红色的,因此这是正确的匹配!

现在,讨论规范化。规范化是一种获取略有不同的数据但是给它一个共同状态的方法(在您的情况下将其视为使特征更相似)。假设在上面的例子中你规范了?的特征,因此输出y值变小了。这会将问号置于其当前位置下方并被更多蓝点包围。因此,你的算法将它标记为蓝色,这是不正确的。哎哟!

现在回答你的问题。对不起,但没有答案!有时,规范化数据会消除重要的特征差异,从而导致精度下降。其他时候,它有助于消除功能中的噪音,从而导致错误的分类。此外,仅仅因为您当前正在使用的数据集的准确度上升,并不意味着您将使用不同的数据集获得相同的结果。

长话短说,不要试图将规范化标记为好/坏,而是考虑用于分类的特征输入,确定哪些对您的模型很重要,并确保这些特征的差异在您的分类模型。祝你好运!

答案 1 :(得分:2)

如果使用标准化特征向量,则数据点之间的距离可能与使用非标准化要素时的距离不同,尤其是在要素范围不同时。由于kNN通常使用欧几里德距离来从任何给定点找到k个最近点,因此使用归一化特征可以选择与使用非标准化特征时选择的k个邻居不同的k个邻居集,因此精度不同。

答案 2 :(得分:2)

这是一个非常好的问题,乍一看是意料之外的,因为通常标准化将有助于KNN分类器做得更好。通常,良好的KNN性能通常需要对数据进行预处理,以使所有变量类似地缩放和居中。否则,KNN通常会受到缩放因素的不适当支配。

在这种情况下,可以看到相反的效果:KNN似乎在缩放时获得了WORSE。

然而,你可能目击的可能是过度拟合。 KNN可能过度拟合,也就是说它很好地记住了数据,但在新数据上根本不能很好地工作。由于该数据的某些特性,第一个模型可能记忆了更多数据,但这并不是一件好事。您需要在不同于训练的数据集上检查您的预测准确性,即所谓的验证集或测试集。

然后您将知道KNN准确度是否正常。

在机器学习的背景下研究学习曲线分析。请了解偏见和差异。这是一个比这里详述的更深刻的主题。关于这个主题的最好,最便宜和最快的教学来源是网络上的视频,由以下教师提供:

  • Andrew Ng,在线课程机器学习

  • Tibshirani和Hastie,在线斯坦福课程统计学习。