我使用scikit learn(LinearSVC)的线性SVM来解决二进制分类问题.我知道LinearSVC可以给我预测标签和决策分数,但我想要概率估计(对标签的信心).我想继续使用LinearSVC因为速度(与具有线性内核的sklearn.svm.SVC相比)使用逻辑函数将决策分数转换为概率是否合理?
import sklearn.svm as suppmach
# Fit model:
svmmodel=suppmach.LinearSVC(penalty='l1',C=1)
predicted_test= svmmodel.predict(x_test)
predicted_test_scores= svmmodel.decision_function(x_test)
Run Code Online (Sandbox Code Playgroud)
我想检查将概率估计简单地作为[1 /(1 + exp(-x))]来检查是否有意义,其中x是决策分数.
或者,我可以使用其他选项来分类,以便有效地执行此操作吗?
谢谢.
我经常将实例权重与 Libsvm 结合使用来解决分类问题。 http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instances
有谁知道在 libsvm 中使用实例权重时实现的算法的细节吗?标准 SVM 模型学习算法为所有训练实例分配相同的权重,从而为训练实例的误差分配相同的权重。我相信 Libsvm 使用的算法会有所不同。在网上搜索时,我确实发现了一些做类似事情的论文。例如[1],但我需要与可能确定这一点的人确认。
谢谢!
[1] 杨旭雷,宋青,王悦. “用于数据分类的加权支持向量机。” 国际模式识别和人工智能杂志 21.05 (2007): 961-976。