请问各类别的训练样本大小是否需要相等?
我可以采用以下场景吗?
class1 class2 class3samples 400 500 300
还是说所有类别都应该有相等的样本大小?
回答:
KNN 的结果基本上取决于以下三个因素(除了 N 的值):
- 训练数据的密度:每个类别应该大致具有相同数量的样本。不需要完全一致,但我认为差异不应超过10%。否则,边界将非常模糊。
- 整个训练集的大小:您的训练集中需要有足够多的示例,以便您的模型能够泛化到未知样本。
- 噪声:KNN 本质上对噪声非常敏感,因此您希望尽可能避免训练集中的噪声。
考虑以下示例,您试图在二维空间中学习一个甜甜圈形状。
如果您的训练数据密度不同(假设甜甜圈内部的训练样本比外部多),您的决策边界将如以下所示偏斜:
另一方面,如果您的类别相对平衡,您将得到一个更精细的决策边界,接近甜甜圈的实际形状:
所以基本上,我建议尝试平衡您的数据集(以某种方式进行归一化),并考虑我上面提到的另外两个因素,您应该没问题。
如果您必须处理不平衡的训练数据,您还可以考虑使用 WKNN 算法(只是 KNN 的优化)来为样本较少的类别分配更强的权重。