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

Balance problem for classification on Cleveland Dataset

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

这个数据集非常不平衡(很多“没有病”的对象class)。我注意到许多使用该数据集的论文过去常常结合所有其他 classes 并将其简化为二进制 class化(疾病与无疾病)

除了减少 classes 的数量以从 classifer 获得良好结果之外,还有其他方法可以解决这种不平衡 class 问题吗?

一般来说,在处理非平衡数据集时,应该使用 non-supervised 学习方法。

您可以使用多元正态分布。 在您的情况下,如果一个 class 中的元素很多而另一个 class 中的元素很少,则监督学习方法是不合适的。因此,作为一种无监督机器学习方法的多元正态分布可能是解决方案。该算法从数据中学习并找到定义数据的值(即数据中最重要的部分,这里是 "no desease" 个案例)。一旦输出这些值,就可以搜索不符合它们的元素,这些元素就是所谓的"abnormal elements"或"anomalies"。在您的例子中,这些是 "disease" 个人。

第二种解决方案是平衡您的数据集,并使用初始监督学习算法。您可以使用以下技术来做到这一点。这些陈述通常都不错,但它们在很大程度上取决于您拥有的数据(注意,我无权访问您的输入数据!),因此您应该测试它们,看看哪一个最适合您的目的。

  1. 正在为元素较少的 class 收集更多元素。

  2. 用较少的元素复制 class 中的元素,以便为两个 class 获得相同数量的数据,对于 class有更多元素。这个解决方案有一个问题,在你的两个class输入数据量相差很大的情况下,你使用神经网络,因为class有重复的元素不会变化很大,神经网络只有在使用大量变化很大的数据进行训练时才能提供良好的结果。

  3. 在具有更多元素的 class 中使用较少的数据,以便在两个 class 中具有与 class 中相同数量的元素很少的元素。在使用神经网络时,这里也可能存在问题,因为用较少的数据训练它可能不会产生好的结果。还要小心输入元素多于特征,否则将无法工作。