如何通过修改训练数据集来提高任何分类算法对少数类别的准确性?

在许多训练数据集中,类别分布是不平衡的,即一种类别非常频繁(例如95%),而另一种类别很少见(例如5%)。在这种应用中,将所有测试案例分配给多数类别的简单分类器可以获得非常高的准确性。然而,尽管少数类别通常比多数类别更重要,简单分类器却无法预测任何少数类别的案例。

那么,有没有办法仅通过修改训练数据集来提高对少数类别的准确性?还是我们也需要修改分类算法呢?


回答:

这是不平衡分类的问题。以下是处理不平衡数据集的方法。

1.欠采样2.过采样3.合成数据生成4.成本敏感学习

1.欠采样

这种方法针对多数类别进行操作。它通过减少多数类别的观察数量来使数据集平衡。当数据集很大时,这种方法最适合使用,减少训练样本的数量有助于改善运行时间和存储问题。欠采样方法分为两种类型:随机和信息性欠采样。

  1. 过采样

这种方法针对少数类别进行操作。它通过复制少数类别的观察来平衡数据。也称为上采样。类似于欠采样,这种方法也可以分为两种类型:随机过采样和信息性过采样。

  1. 合成数据生成

简单来说,这种方法不是复制并添加少数类别的观察,而是通过生成人工数据来克服不平衡问题。这也是一种过采样技术。

关于合成数据生成,合成少数类过采样技术(SMOTE)是一种强大且广泛使用的方法。SMOTE算法根据少数样本的特征空间(而不是数据空间)相似性创建人工数据。我们也可以说,它生成一组随机的少数类别观察,以将分类器的学习偏差转向少数类别。

  1. 成本敏感学习(CSL)这也是处理不平衡数据的分类问题中常用的一种方法。这是一种有趣的方法。简单来说,这种方法评估与错误分类观察相关的成本。

它不创建平衡的数据分布。相反,它通过使用成本矩阵来突出不平衡学习问题,这些矩阵描述了特定情境下错误分类的成本。近期研究表明,成本敏感学习在许多情况下都优于采样方法。因此,这种方法为采样方法提供了一个可能的替代方案。

要在R中构建这些,请参考链接 https://www.analyticsvidhya.com/blog/2016/03/practical-guide-deal-imbalanced-classification-problems/

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中创建了一个多类分类项目。该项目可以对…

发表回复

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