SVM概率输出原理
来源:互联网 发布:知乎win10显示不了桌面 编辑:程序博客网 时间:2024/05/16 08:59
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.
- SVM概率输出原理
- svm 预测标签的概率输出
- svm 预测标签的概率输出
- SVM输出概率值的计算过程
- SVM的概率输出(Platt scaling)
- SVM输出概率值的计算过程
- soft-svm的理解+logistic 与SVM结合输出概率值+logistic 用到z域
- 【机器学习详解】SVM解二分类,多分类,及后验概率输出
- SVM解二分类,多分类,及后验概率输出
- SVM解二分类,多分类,及后验概率输出
- SVM原理
- SVM原理
- SVM原理
- SVM原理
- svm原理
- SVM原理
- svm原理简介
- svm分类原理1
- 1051. Pop Sequence (25)
- HQL和SQL查询数据的区别
- 【简单】LigthOJ Ekka Dokka 1116
- javaIo文件中添加内容追加String
- C++中explicit关键字解释
- SVM概率输出原理
- JDBC技术学习笔记(一)
- Sql语句 Isnull
- 美好的一天
- Bootstrap Carousel
- Array Two Pointers 总结
- 其实我真的不是来搞笑的(内含java学习笔记)
- Iterator的remove()和Collection的remove()
- 【技巧-模拟除法】LightOJ Large Division 1214