sklearn.svm.svc的函数predict_proba()在内部如何工作?

发布于 2021-01-29 19:35:33

我正在使用来自scikit-learn的sklearn.svm.svc进行二进制分类。我正在使用其predict_proba()函数来获取概率估计值。谁能告诉我predict_proba()是如何内部计算概率的?

关注者
0
被浏览
87
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Scikit-
    learn在内部使用LibSVM,而这又使用了Platt缩放(如LibSVM作者本说明中所述)来校准SVM以产生除类预测之外的概率。

    普拉特缩放需要首先像往常一样训练SVM,然后优化参数向量 AB ,使得

    P(y|X) = 1 / (1 + exp(A * f(X) + B))
    

    f(X)样品到超平面的有符号距离在哪里(scikit-
    learndecision_function方法)。您可能会在此定义中认识到逻辑乙状结肠,这与逻辑回归和神经网络用于将决策函数转换为概率估计的功能相同。

    请注意:B参数“截距”或“偏差”或您喜欢调用的任何参数,都可能导致基于该模型的概率估计进行的预测与您从SVM决策函数获得的预测不一致f。例如,假设f(X) = 10,则对的预测为X正;但是如果B = -9.9A = 1,那么P(y|X) = .475。我凭空想出这些数字,但是您已经注意到,这实际上可能会发生。

    实际上,Platt缩放可在交叉熵损失函数下,在SVM输出的顶部训练概率模型。为了防止此模型过度拟合,它使用内部五重交叉验证,这意味着使用SVM训练SVMprobability=True可能比原始的非概率SVM昂贵得多。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看