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的概率输出(Platt scaling)

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

SVM概率输出原理

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

基于SVM概率输出与证据理论的多分类方法

  • 2017年08月20日 10:45
  • 1.17MB
  • 下载

svm 预测标签的概率输出

对于图片或文本,如果童鞋们需要初试分类效果,在MatLab做实验是比较简单的。例如:使用Libsvm库函数svmtrain()训练学习出一个模型Factor, 然后代入Factor,得到预测标签向量P...
  • u012260637
  • u012260637
  • 2013年11月08日 12:04
  • 2209

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

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台\color{Blue}{CSDN...
  • luoshixian099
  • luoshixian099
  • 2016年04月10日 22:10
  • 17559

libsvm 之svmpredict 输出概率用法

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

利用LIBSVM估计概率

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

概率支持向量机PSVM的MATLAB源程序

  • 2011年04月22日 19:36
  • 3KB
  • 下载

应用libsvm对训练集进行训练并测试得出正确率和召回率

package org.lw.fenlei; import java.io.BufferedReader; import java.io.File; import java.io.FileInp...
  • monkey123apple
  • monkey123apple
  • 2013年01月17日 20:56
  • 2202

SVM参数详解

svm参数说明---------------------- 如果你要输出类的概率,一定要有-b参数 svm-train training_set_file model_file svm-pred...
  • Bryan__
  • Bryan__
  • 2016年05月26日 14:02
  • 30719
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVM输出概率值的计算过程
举报原因:
原因补充:

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