SVM输出概率值的计算过程

原创 2015年07月09日 15:54:45

老师要求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.csdn.net/u012162613/article/details/44239919

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

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

 

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

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

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

 

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

 

 

相关文章推荐

SVM概率输出原理

1.引言 libsvm中svmpredict函数指定-b参数后,可输出概率值,但是具体原理没有搞清楚,百度搜索,也没看到这方面的介绍,于是翻阅文章,才明白其原理。2.SVM概率输出 标准的SVM的...
  • funny75
  • funny75
  • 2015年12月02日 23:05
  • 3996

SVM的概率输出(Platt scaling)

最近在研究基于样本的相似度度量问题,其中用到了分类器的概率输出(Platt scaling),大概了解了一下用法,总结的比较简单。...

【机器学习详解】SVM解二分类,多分类,及后验概率输出

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台\color{Blue}{CSDN...

利用LIBSVM估计概率

前言在研究分类问题时,可能会遇到需要分类器返回样本属于每一类的概率,而不是直接输出该样本的类别的情况。因为之前一直使用opencv库进行开发,所以也想在opencv的ml模块寻找是否有对应功能的SVM...

libsvm 之svmpredict 输出概率用法

[p1,p2,p3]=svmpredict(label_test,testdata,svmstruct,'-b 1');这个想必大家都用过,p1输出预估的类别,p2准确率,p3不同类的分类概率,但是这...

svm 预测标签的概率输出

转载自:http://blog.csdn.net/xuhaijiao99/article/details/14519941 对于图片或文本,如果童鞋们需要初试分类效果,在MatLab做实验是比较简单的...
  • shishc
  • shishc
  • 2013年12月07日 09:07
  • 2107

关于libSVM的一些总结

libsvm相关参数

libsvm中的dec_values以及分类结果评分问题

最近一个图像识别项目里需要对分类的结果进行打分,因为使用的是libsvm3.12,一开始决定直接将svm_predict_values函数的dec_values作为评分返回,后来研究了之后才觉得里面有...

SVM参数详解

svm参数说明---------------------- 如果你要输出类的概率,一定要有-b参数 svm-train training_set_file model_file svm-pred...
  • Bryan__
  • Bryan__
  • 2016年05月26日 14:02
  • 25247

libsvm中的后验概率

这里有一篇论文提到应用后验概率的,基于后验概率的个人信用评估SVM模型:http://www.docin.com/p-573276093.html 这里后验概率的计算,是假定概率符合sigmoid分...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVM输出概率值的计算过程
举报原因:
原因补充:

(最多只允许输入30个字)