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

Posted

技术标签:

【中文标题】每个类的 k 最近邻分类器训练样本大小【英文标题】:k nearest neighbor classifier training sample size for each class 【发布时间】:2012-04-18 00:48:54 【问题描述】:

谁能告诉我每个班级的训练样本大小是否需要相等?

我可以接受这种情况吗?

          class1   class2  class3
samples    400      500     300

或者所有类都应该有相同的样本量?

【问题讨论】:

我不太清楚你的问题,你能解释一下你测试平等的基本原理吗 【参考方案1】:

KNN结果基本上取决于3件事(N的值除外):

训练数据的密度:每个类的样本数量应该大致相同。不需要精确,但我想说不超过 10% 的差异。否则界限会很模糊。 整个训练集的大小:您的训练集中需要有足够多的示例,这样您的模型才能泛化到未知样本。 噪声:KNN 天生对噪声非常敏感,因此您希望尽可能避免训练集中的噪声。

考虑以下示例,您尝试在 2D 空间中学习类似甜甜圈的形状。

通过在您的训练数据中使用不同的密度(假设您在甜甜圈内部的训练样本比在外部的多),您的决策边界将出现如下偏差:

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

所以基本上,我建议尝试平衡您的数据集(只是以某种方式对其进行标准化),并考虑我上面提到的其他 2 个项目,您应该没问题。

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

【讨论】:

你能提供一些关于 WKNN 的链接,或者至少是它的完整形式吗?【参考方案2】:

k 最近邻方法不依赖于样本大小。您可以使用示例样本大小。例如,在具有 k-最近邻的 KDD99 数据集上查看 following paper。 KDD99 是比您的示例数据集更严重不平衡的数据集。

【讨论】:

样本大小是指训练样本大小。我更新了我的问题。你现在回答我的问题了吗? 是一样的。 k 最近邻使用训练集来决定类成员。这不是训练样本量的差异,而是训练数据集的样本多样性。 我不相信 knn 分类器的结果不依赖于训练样本密度的说法。 KNN 实际上对训练集中不平衡的类大小很敏感,这就是为什么 WKNN 赋予元素较少的类比其他类更多的权重...

以上是关于每个类的 k 最近邻分类器训练样本大小的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘-KNN-K最近邻算法

机器学习-KNN分类器

KNN近邻算法

KNN分类器(十折交叉验证)

K-近邻算法(KNN)

K最近邻算法