谁能告诉我每个类(class)的训练样本大小是否需要相等?
我可以接受这个场景吗?
class1 class2 class3
samples 400 500 300
还是所有类别都应具有相同的样本量?
最佳答案
KNN 结果基本上取决于 3 个因素(N 的值除外):
- 训练数据的密度:每个类别的样本数量应该大致相同。不需要很精确,但我会说不超过 10% 的差异。否则界限会很模糊。
- 整个训练集的大小:您需要在训练集中有足够多的示例,这样您的模型才能泛化到未知样本。
- 噪声:KNN 本质上对噪声非常敏感,因此您要尽可能避免训练集中出现噪声。
请考虑以下示例,您正在尝试在 2D 空间中学习类似 donut 的形状。
通过在你的训练数据中使用不同的密度(假设你在 donut 内部的训练样本比外面多),你的决策边界将像下面这样有偏差:
另一方面,如果您的类相对平衡,您将获得更精细的决策边界,接近 donut 的实际形状:
所以基本上,我会建议尝试平衡您的数据集(只是以某种方式对其进行标准化),并考虑我上面提到的其他 2 个项目,您应该没问题。
如果您必须处理不平衡的训练数据,您还可以考虑使用 WKNN 算法(只是 KNN 的优化)为元素较少的类分配更强的权重。
关于algorithm - k 最近邻分类器训练每个类的样本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10008966/