当我尝试使用libsvm对数据进行分类时,我遇到了问题。我的训练和测试数据非常不平衡。当我进行网格搜索svm参数并用类的权重训练我的数据时,测试给出了96.8113%的准确度。但由于测试数据不平衡,所有正确的预测值都来自负类,大于正类。
我尝试了很多东西,从改变重量到改变伽玛和成本值,但我的标准化准确度(考虑到正类和负类)在每次尝试中都较低。使用默认的grid.py参数训练50%的正数和50%的负数,我的准确度非常低(18.4234%)。
我想知道问题是否在我的描述中(如何构建特征向量),在不平衡中(我应该以另一种方式使用平衡数据吗?)还是应该更改我的分类器?
答案 0 :(得分:2)
更好的数据总是有帮助的。
我认为不平衡是问题的一部分。但问题的一个更重要的部分是你如何评估你的分类器。鉴于数据中正面和负面的分布,评估准确性几乎没用。培训分别为50%和50%,并对分布为99%和1%的数据进行测试。
现实生活中存在的问题就像你学习的那样(对于否定的积极因素有很大的不平衡)。让我举两个例子:
信息检索:给定庞大集合中的所有文档返回与搜索词q相关的子集。
人脸检测:此大图像标记所有有人脸的位置。
这些类型系统的许多方法都是基于分类器的。要评估两个分类器,通常使用两个工具:ROC curves,Precision Recall曲线和F-score。这些工具提供了一种更有原则的方法来评估一个分类器何时比另一个分类器工作得更好。