SVM输出概率值的计算过程

本文详细介绍了如何利用支持向量机(SVM)进行概率输出,包括sigmoid函数的应用、后验估计的方法,以及如何通过极大似然估计获得参数A和B,并讨论了Platt提出的校准方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

老师要求svm输出概率值,然后发现libsvm已经自带了这个函数,网络上没有看到有说明,于是看了看相关文献自己写了一个。

首先附参考文献:

1.Probabilistic Outputsfor Support Vector Machines and Comparisons to Regularized Likelihood Methods

2.A Note on Platt’s Probabilistic Outputs for Support VectorMachines

Vector Machine。

主要参考文献是1,libsvm里采用的是论文1的思路输出的概率值。下面先列出一些基础知识。

1基础知识:

1.1 sigmoid函数



sigmoid函数是一个良好的阈值函数,连续,光滑,严格单调。

可以将实轴上的数值投射到[0,1]上,即将一个输出实值抓化为一个概率值。比如一个分类器的分界线为0,大于0标为+1,小于0标为-1;如果使用上图的sigmoid函数套一下输出值。我们就可以说,输出为0时标为+1的概率为0.5;输出为2时标为+1的概率为0.8等。

 

1.2后验估计

从极大似然估计到极大后验估计。基础知识在此不再详述。

下面是做N次独立重复实验的后验估计。


http://wenku.baidu.com/link?url=hrFN6mmcRSSIST6k_fmz5JQ-Q6Hl8kAfpopvi91KENTqIPIvF431TyWXCbrNwGY4DfIayQv05RtTL6InvO9MaHfYUKGefcMpTtAY-lAMISO



对上面第四点得到的后验估计求均值。参数的后验估计值为(X+1)/(N+2)

(有时后验估计取峰值,有时取均值,这个还不太明白。)

2 支持向量机输出概率值的方法。

首先输出的概率值的式子为:


同样采取一个sigmoid函数将支持向量机的输出值映射到[0,1]之间。我们知道支持向量机的决策函数为:


这个括弧里面的量是一个与分界面的距离成正比的量。这种算法的思想是离分界面越近的点认为分对的可能性越小;离分界面越远的点认为分对的可能性越大。

有两个参数A和B来调整映射值的大小,我们姑且叫它们位置参量(B)和尺度参量(A)。

然后这两个参数A和B是未知参数,需要估计。可能会想到用这式子来估计A和B的值:



论文中是这样写的

negative log likelihood of the training data, which is a cross-entropy error function

关于负log似然函数和交叉熵损失方程。这里有更详细的说明:

http://blog.youkuaiyun.com/u012162613/article/details/44239919

但是很直观可以看出,当y只能取+1或者-1时,这个式子就退化成一个极大似然估计函数。

使用这种方法是从全部的数据中估计A和B的值,Platt认为这种方法存在过拟合的风险,因此他假设存在一些out-of-sample的数据来修正的值,也就是不取1和0了

 

他采取了我们上文基础知识二所讲的贝叶斯方法:

这个式子和1.2中推倒的结果是一致的。

由此我们获得了最后的计算流程:

 

我对那个交叉熵还蛮感兴趣,准备研究一下。看完再补



转载自:https://i-blog.csdnimg.cn/blog_migrate/f5fb82a1cf97b5c8c5f8fec44c598ba3.png


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值