2015-01-13 103 views
1

我试图在Encog中使用SVM训练二元正/负分类器。在这个特定的情况下,数据集非常不平衡,反面的例子比正例大约30:1。惩罚训练SVM中的误报

在模型的培训中,我刻意对负面案例进行欠采样以大致平衡给模型的正面/负面案例,这种方法对我来说很适合其他问题。然而,在这种情况下,最终模型的误报率高得无法接受,在非平衡测试集上测试时,误报的数量超过了真阳性的数量。

有关如何训练以减少误报率的任何建议?使用不平衡数据进行培训(或接近观察的平衡)将减少整体积极预测的数量,但似乎并未将真正的阳性增加到假阳性率。

+0

这已在其他帖子中回答。 http://stackoverflow.com/questions/18078084/how-should-i-teach-machine-learning-algorithm-using-data-with-big-disproportion/18088148#18088148 – Yakku

回答

0

听起来像你的数据集是不可分离的。在这种情况下,不平衡设置可能会导致性能不佳。在libsvm中,您可以将较高的权重分配给代表性很小的标签。

首先,我会建议保留所有底片作为底片的特征空间可能要大得多,并且如果保留所有样本,将更有可能被覆盖。其次,你必须决定如何优化(TP + TN)/(TP + TN + FP + FN)。现在您可以针对您的正面标签运行不同重量值的培训/评估,以根据您的定义找到最佳性能。最终的性能取决于数据的可分离性。