我必须处理Class Imbalance Problem并对输入测试数据集进行binary-classification,其中训练数据集中的大多数class-label为1(另一个class-label为0)。例如,以下是训练数据的一部分:93.65034,94.50283,94.6677,94.20174,94.93986,95.21071,194.13783,94.61797,94.50526,95.66091,95.99478,95.12608,194.0238,93.95445,94.77115,94.65469,95.08566,94.97906,194.36343,94.32839,95.33167,95.24738,94.57213,95.05634,194.5774,93.92291,94.96261,95.40926,95.97659,95.17691,093.76617,94.27253,94.38002,94.28448,94.19957,94.98924,0最后一列是class-label-0或1。实际数据集的类比10:1非常不正确,即大约700个样本的class label为0,其余6800个样本的class label为1。上面提到的只是给定数据集中所有样本中的少数样本,但是实际数据集中包含约90%个样本,其中class-label为1,其余的样本中class-label为,尽管事实上所有样本或多或少都非常相似。哪个分类器最适合处理此类数据集?我已经尝试过将0以及logistic-regression的svm参数设置为class-weight的情况,但是在准确度方面并没有明显改善。 最佳答案 但准确性没有明显提高。精度不是要走的路(例如,参见Accuracy paradox)。使用10:1的类比率,只需始终预测class-label 0即可轻松获得90%的准确性。一些好的起点是:尝试使用其他性能指标。例如。 F1-score和Matthews correlation coefficient“重新采样”数据集:从代表性不足的类中添加示例(过度采样)/从代表性不足的类中删除实例(欠采样;您应该有很多数据)不同的观点:anomaly detection是不平衡数据集的不错尝试一种不同的算法是另一种可能,但并非一帆风顺。可能您应该从decision trees开始(通常在不平衡的数据集上表现良好)编辑(现在知道您正在使用scikit-learn)来自class_weight(scikit-learn)参数的权重用于训练分类器(因此balanced可以),但是要知道其性能如何,准确性是一个糟糕的选择。sklearn.metrics模块为measure classification performance实现了多种损失,得分和实用功能。还可以查看How to compute precision, recall, accuracy and f1-score for the multiclass case with scikit learn?。关于machine-learning - 如何处理这种不平衡类的偏斜数据集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39512140/
10-12 17:41