我在使用Scikit-learn的SVM分类器进行预测,并且使用的是rbf核。我设置了class_weight = ‘auto’。我是否正确理解了那些出现频率较高的类会得到较低的权重?假设我有两个类,A和B。如果A的出现次数远多于B,这是否意味着在进行预测时,A的预测数量会比我没有设置class_weight=’auto’时少?
我对这个领域还比较新手,所以我只是在试图理解发生了什么以及为什么会这样。
回答:
使用类权重与线性/非线性核无关。它只是控制了训练过程中错误分类特定样本的成本。每个类的权重只是对给定类中的每个样本施加一个恒定权重。当你使用auto
时,类的样本会获得与类大小成反比的权重。因此,如果类A的大小是B的两倍,那么A的样本被错误分类的“成本”会是B的一半。这将导致模型结构高度平衡,特别是,这样的SVM试图最大化平衡准确率(BAC),而不是“经典”的准确率。