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

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

我可以采用以下场景吗?

          class1   class2  class3samples    400      500     300

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


回答:

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

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

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

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

donut-bad

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

enter image description here

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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