KNN 归一化的精度差异
Accuracy difference on normalization in KNN
我已经在 KNN 分类算法上训练了我的模型,准确率达到了 97% 左右。然而,后来我注意到我错过了对数据进行规范化,我对数据进行了规范化并重新训练了我的模型,现在我的准确率只有 87%。可能是什么原因?我应该坚持使用未规范化的数据还是应该切换到规范化版本。
要回答您的问题,您首先需要了解 KNN 的工作原理。这是一个简单的图表:
假设?是您试图分类为红色或蓝色的点。对于这种情况,我们假设您还没有规范化任何数据。正如你可以清楚地看到?比蓝色机器人更接近更多的红点。因此,该点将被假定为红色。我们还假设正确的标签是红色的,因此这是一个正确的匹配!
现在,讨论规范化。规范化是一种获取略有不同但赋予其共同状态的数据的方法(在您的情况下,将其视为使特征更相似)。假设在上面的示例中,您对 ? 的特征进行了归一化,因此输出的 y 值变小了。这会将问号置于其当前位置下方并被更多蓝点包围。因此,您的算法会将其标记为蓝色,这是不正确的。哎哟!
现在回答你的问题。对不起,没有答案!有时规范化数据会消除重要的特征差异,从而导致准确性下降。其他时候,它有助于消除特征中导致错误分类的噪声。此外,仅仅因为您当前使用的数据集的准确性有所提高,并不意味着您将使用不同的数据集获得相同的结果。
长话短说,不要试图将归一化标记为 good/bad,而是考虑您用于分类的特征输入,确定哪些对您的模型很重要,并确保这些特征的差异是准确反映在您的分类模型中。祝你好运!
如果您使用标准化特征向量,您的数据点之间的距离可能与您使用非标准化特征时不同,尤其是当特征范围不同时。由于 kNN 通常使用欧几里德距离从任何给定点找到 k 个最近的点,因此使用归一化特征可能 select 与使用非归一化特征时选择的 k 个相邻点不同,因此在准确性上存在差异。
这是一个很好的问题,乍一看是出乎意料的,因为通常归一化会帮助 KNN 分类器做得更好。通常,良好的 KNN 性能通常需要对数据进行预处理,以使所有变量具有相似的缩放和居中。否则 KNN 将经常被比例因子不适当地支配。
在这种情况下,会看到相反的效果:KNN 似乎随着缩放变得更糟。
但是,您所看到的可能是过度拟合。 KNN 可能会过度拟合,也就是说它很好地记住了数据,但在新数据上却根本无法很好地工作。由于数据的某些特征,第一个模型可能记住了更多数据,但这不是一件好事。您需要检查与训练数据集不同的数据集的预测准确性,so-called 验证集或测试集。
然后你就知道KNN精度好不好了。
研究机器学习背景下的学习曲线分析。请去了解偏差和方差。这是一个更深层次的主题,无法在此详述。关于此主题的最好、最便宜和最快的指导来源是网络视频,由以下讲师提供:
Andrew Ng,在线课程机器学习
Tibshirani 和 Hastie,在斯坦福在线课程统计学习中。
我已经在 KNN 分类算法上训练了我的模型,准确率达到了 97% 左右。然而,后来我注意到我错过了对数据进行规范化,我对数据进行了规范化并重新训练了我的模型,现在我的准确率只有 87%。可能是什么原因?我应该坚持使用未规范化的数据还是应该切换到规范化版本。
要回答您的问题,您首先需要了解 KNN 的工作原理。这是一个简单的图表:
假设?是您试图分类为红色或蓝色的点。对于这种情况,我们假设您还没有规范化任何数据。正如你可以清楚地看到?比蓝色机器人更接近更多的红点。因此,该点将被假定为红色。我们还假设正确的标签是红色的,因此这是一个正确的匹配!
现在,讨论规范化。规范化是一种获取略有不同但赋予其共同状态的数据的方法(在您的情况下,将其视为使特征更相似)。假设在上面的示例中,您对 ? 的特征进行了归一化,因此输出的 y 值变小了。这会将问号置于其当前位置下方并被更多蓝点包围。因此,您的算法会将其标记为蓝色,这是不正确的。哎哟!
现在回答你的问题。对不起,没有答案!有时规范化数据会消除重要的特征差异,从而导致准确性下降。其他时候,它有助于消除特征中导致错误分类的噪声。此外,仅仅因为您当前使用的数据集的准确性有所提高,并不意味着您将使用不同的数据集获得相同的结果。
长话短说,不要试图将归一化标记为 good/bad,而是考虑您用于分类的特征输入,确定哪些对您的模型很重要,并确保这些特征的差异是准确反映在您的分类模型中。祝你好运!
如果您使用标准化特征向量,您的数据点之间的距离可能与您使用非标准化特征时不同,尤其是当特征范围不同时。由于 kNN 通常使用欧几里德距离从任何给定点找到 k 个最近的点,因此使用归一化特征可能 select 与使用非归一化特征时选择的 k 个相邻点不同,因此在准确性上存在差异。
这是一个很好的问题,乍一看是出乎意料的,因为通常归一化会帮助 KNN 分类器做得更好。通常,良好的 KNN 性能通常需要对数据进行预处理,以使所有变量具有相似的缩放和居中。否则 KNN 将经常被比例因子不适当地支配。
在这种情况下,会看到相反的效果:KNN 似乎随着缩放变得更糟。
但是,您所看到的可能是过度拟合。 KNN 可能会过度拟合,也就是说它很好地记住了数据,但在新数据上却根本无法很好地工作。由于数据的某些特征,第一个模型可能记住了更多数据,但这不是一件好事。您需要检查与训练数据集不同的数据集的预测准确性,so-called 验证集或测试集。
然后你就知道KNN精度好不好了。
研究机器学习背景下的学习曲线分析。请去了解偏差和方差。这是一个更深层次的主题,无法在此详述。关于此主题的最好、最便宜和最快的指导来源是网络视频,由以下讲师提供:
Andrew Ng,在线课程机器学习
Tibshirani 和 Hastie,在斯坦福在线课程统计学习中。