寻找SVM模型的AUC得分。

4

我知道支持向量机算法无法计算概率,而AUC值需要概率计算,那么是否有其他方法只计算AUC分数?

from sklearn.svm import SVC
model_ksvm = SVC(kernel = 'rbf', random_state = 0)
model_ksvm.fit(X_train, y_train)

model_ksvm.predict_proba(X_test)

我无法从SVM算法中获取概率输出,没有概率输出就无法得到AUC分数,而其他算法可以得到。

1个回答

6
你不需要真正的概率来进行ROC,只需要任何一种置信度得分。你需要根据样本可能属于正类的程度对它们进行排序。支持向量机可以使用与分离平面的(有符号)距离来实现这个目的,而且在使用AUC进行评分时,sklearn会自动地在底层使用decision_function方法,这是有符号距离。
你也可以在SVC(docs)中设置probability选项,它在SVM之上拟合了一个Platt校准模型以产生概率输出:
model_ksvm = SVC(kernel='rbf', probability=True, random_state=0)

但这会导致相同的AUC,因为Platt校准只是将有符号距离单调地映射到概率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接