查找SVM模型的AUC分数
我知道支持向量机算法不计算概率,这是找到 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 分数,而我可以通过其他算法获得。
回答
你真的不需要ROC 的概率,只需要任何类型的置信度分数。您需要根据样本属于正类的可能性对样本进行排序。支持向量机可以为此目的使用与分离平面的(有符号)距离,并且sklearn在使用 AUC 评分时确实会在引擎盖下自动执行此操作:它使用该decision_function方法,即有符号距离。
您还probability可以在 SVC ( docs ) 中设置该选项,该选项在SVM 之上拟合 Platt 校准模型以产生概率输出:
model_ksvm = SVC(kernel='rbf', probability=True, random_state=0)
但这将导致相同的 AUC,因为 Platt 校准只是将有符号距离单调地映射到概率。