克利夫兰数据集分类中的平衡问题

我在这里质疑了著名的克利夫兰心脏病数据集对其对象的标记方式。

这个数据集非常不平衡(“无病”类的对象很多)。我注意到许多使用该数据集的论文常常将所有其他类别合并,简化为二元分类(有病 vs 无病)。

除了减少类别数量来获得分类器的好结果外,还有其他处理这种类别不平衡问题的方法吗?


回答:

一般来说,处理不平衡数据集时,应采用非监督学习方法。

你可以使用多元正态分布。在你的案例中,如果一个类中有很多元素,而另一个类中元素很少,监督学习方法是不合适的。因此,多元正态分布作为一种非监督机器学习方法,可能是解决方案。算法从数据中学习并找出定义数据的值(即数据中最重要的部分,这里是“无病”案例)。一旦这些值被输出,就可以寻找不符合这些值的元素,这些元素就是所谓的“异常元素”或“异常值”。在你的案例中,这些是“有病”个体。

第二种解决方案是平衡你的数据集,并使用最初的监督学习算法。你可以使用以下技术。这些说法通常是好的,但它们很大程度上取决于你拥有的数据(请注意,我没有访问你的输入数据!),所以你应该测试它们,看看哪个最适合你的目的。

  1. 为元素较少的类收集更多元素。

  2. 复制元素较少的类的元素,以获得与元素较多的类相同数量的数据。对于这种解决方案存在一个问题,如果两个类之间的输入数据量有很大差异,并且你使用神经网络,因为复制元素的类不会有很大的变化,而神经网络只有在用大量变化丰富的数据训练时才能提供好的结果。

  3. 在元素较多的类中使用较少的数据,以便在两个类中拥有与元素较少的类相同数量的元素。这里也可能在使用神经网络时遇到问题,因为用较少的数据训练它可能不会得到好的结果。还要注意确保输入元素的数量多于特征,否则将无法工作。

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

发表回复

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