k 最近邻分类器每个类别的训练样本大小

请问各类别的训练样本大小是否需要相等?

我可以采用以下场景吗?

          class1   class2  class3samples    400      500     300

还是说所有类别都应该有相等的样本大小?


回答:

KNN 的结果基本上取决于以下三个因素(除了 N 的值):

  • 训练数据的密度:每个类别应该大致具有相同数量的样本。不需要完全一致,但我认为差异不应超过10%。否则,边界将非常模糊。
  • 整个训练集的大小:您的训练集中需要有足够多的示例,以便您的模型能够泛化到未知样本。
  • 噪声:KNN 本质上对噪声非常敏感,因此您希望尽可能避免训练集中的噪声。

考虑以下示例,您试图在二维空间中学习一个甜甜圈形状。

如果您的训练数据密度不同(假设甜甜圈内部的训练样本比外部多),您的决策边界将如以下所示偏斜:

donut-bad

另一方面,如果您的类别相对平衡,您将得到一个更精细的决策边界,接近甜甜圈的实际形状:

enter image description here

所以基本上,我建议尝试平衡您的数据集(以某种方式进行归一化),并考虑我上面提到的另外两个因素,您应该没问题。

如果您必须处理不平衡的训练数据,您还可以考虑使用 WKNN 算法(只是 KNN 的优化)来为样本较少的类别分配更强的权重。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注