打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SVM概率输出原理

1.引言
libsvm中svmpredict函数指定-b参数后,可输出概率值,但是具体原理没有搞清楚,百度搜索,也没看到这方面的介绍,于是翻阅文章,才明白其原理。

2.SVM概率输出
标准的SVM的无阈值输出为

(1)
其中
(2)

Platt利用sigmoid-fitting方法,将标准SVM的输出结果进行后处理,转换成后验概率。

(3)

A,B为待拟合的参数,f为样本x的无阈值输出。sigmoid-fitting方法的优点在于保持SVM稀疏性的同时,可以良好的估计后验概率。

3.拟合sigmoid模型
用极大似然估计来估计公式(3)中的参数A,B。
定义训练集为(fi,ti),ti为目标概率输出值,定义为


yi为样本的所属类别,取值{-1,1}
极小化训练集上的负对数似然函数
(4)
其中

由于sigmoid函数的稀疏性(sigmoid(-5)=0.0067;sigmoid(5)=0.9933)而ti取值{0,1},要完全拟合目标值,就要求sigmoid的输入向实数轴两端靠拢,而sigmoid函数对数轴两端的值变化不敏感,难以区分,所以对ti做一个平滑处理,platt的做法是


其中N+为正样本的数目,N-为负样本的数目。

4.libsvm
4.1数值问题
求解(4)时遇到两个数值计算的问题;求解(4)的梯度与hessian矩阵如下

1) log与exp函数极易溢出,如果Afi+B较大,那么exp(Afi+B) →∞;而当pi→0时,log(pi) →∞,Platt对其作了修正让log(0)返回-200,但并不是一个好的办法
2)

当pi→1时,极易导致”catastrophic cancellation”问题;如fi=1,(A,B)=(-64,0),在C++中1-pi将会返回0,而
则会给出一个精度较好的结果

4.2 libsvm的改进
在libsvm中作者对这些问题给出了其解决办法
将公式(4)变换形式

具体使用的时候
If Afi+B>0 use(6) else use (5)

Reference
[1] Platt J. Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods[J]. Advances in large margin classifiers, 1999, 10(3): 61-74.
[2] Lin H T, Lin C J, Weng R C. A note on Platt’s probabilistic outputs for support vector machines[J]. Machine learning, 2007, 68(3): 267-276.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
svmtrain和svmpredict的用法和参数含义
SVM的概率输出(Platt scaling)
SVM参数详解
libSVM简介及核函数模型选择
深度学习六十问!一位算法工程师经历30+场CV面试后总结的常见问题合集下篇(含答案)
分类器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服