不平衡数据集的 Knn 分类器
Posted
技术标签:
【中文标题】不平衡数据集的 Knn 分类器【英文标题】:Knn classifier for Imbalanced dataset 【发布时间】:2019-11-05 22:49:20 【问题描述】:我想估计分类器在我的不平衡数据集上的工作情况。当我尝试从 sklearn 拟合 KNN 分类器时,它对少数类一无所知。所以我所做的是我用 k = R 拟合分类器(其中 r 是不平衡比 1:R),我预测每个测试点的概率,如果少数类的分类器的概率输出,我将一个点分配给少数类大于 R(其中 r 是不平衡比 1: R)。我这样做是为了估计分类器的性能(F1-score)。我不需要生产中的分类器。我做的对吗?
【问题讨论】:
欢迎来到 SO。解决这个问题的方法是基于频率的重采样。 this question 的可能重复项。 我也处理过一次不平衡数据,那次我使用SMOTE
并综合生成少数类示例,使得多数和少数类数据的比率变为1:1
。你可以在这里查看 SMOTE imbalanced-learn.readthedocs.io/en/stable/generated/…
有没有不重采样的方法??
老实说,我不知道,但作为替代方案,您可以从数据集中随机选择多数类数据,使得比率始终为 1:1
与少数类。
如果您不受使用分类器的限制,您可以尝试使用带有决策树或随机森林等参数的分类器,您可以在其中自己指定类权重。这样做你的模型也将开始选择少数类。实现细节请参考***.com/questions/37522191/…。
【参考方案1】:
由于您在 cmets 中提到您不想使用重采样,因此一种出路是批处理。从您的多数类创建多个数据集,以便它们与少数类的比例为 1:1。训练多个模型,每个模型获得多数集的一部分和所有少数集。对所有模型进行预测并从它们中投票并决定您的最终结果。
但我建议使用 SMOTE 而不是这种方法。
【讨论】:
以上是关于不平衡数据集的 Knn 分类器的主要内容,如果未能解决你的问题,请参考以下文章