日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Sklearn中predict_proba函數用法及原理詳解

作者:taotaoiit 更新時間: 2022-10-14 編程語言

Sklearn中predict_proba函數用法及原理詳解(以logistic回歸為例)

網上對predict_proba的數學原理解釋的太少了,也不明確,特意總結一下,并給出有些不能用該方法的原因及對策

函數形式

在這里插入圖片描述

  • 輸入:待預測的數據
  • 輸出:數組形式為(樣本個數,樣本類別數),每一行代表某個樣本在各個類上的概率,其和為1.

用于返回樣本在各個類的概率分布,不適用于分類函數為:
s i g n ( x ) = { + 1 x ≥ 0 ? 1 x < 0 sign(x)=\begin{cases}+1& \text{x$\geq$0} \\-1& \text{x$<$0}\end{cases} sign(x)={+1?1?x0x<0?
的情況,因為值是離散的無法表示概率。

數學原理

以logistic回歸為例

對于二分類

其基本原理是算出樣本點到分類超平面的距離 d i s dis dis,之后帶入分類函數中,得到該樣本為正類的概率為
p r o b + = s i g m o i d ( d i s ) = 1 1 + e ? d i s prob_+ = sigmoid(dis)=\frac{1}{1+e^{-dis}} prob+?=sigmoid(dis)=1+e?dis1?
負類概率為: p r o b ? = 1 ? p r o b + prob_-=1-prob_+ prob??=1?prob+?

對于多分類

二分類模型如logistic回歸進行多分類(假設k類)時,往往采用OVR方法或者OVO方法,OVR方法產生了k個獨立的分類器,此時,對于此樣本,算出其到k個分類器的距離 d i s i , dis_i, disi?,其中 i = 1 , 2 , . . . k i=1,2,...k i=1,2,...k,帶入分類函數 s i g m o i d ( x ) sigmoid(x) sigmoid(x)中,得到:
p r o b + i = s i g m o i d ( d i s i ) = 1 1 + e ? d i s i prob_{+i} = sigmoid(dis_i)=\frac{1}{1+e^{-dis_i}} prob+i?=sigmoid(disi?)=1+e?disi?1?
再將其進行歸一化,即得到樣本為第 i i i個類的概率:
p r o b i = p r o b + i ∑ j = 1 k p r o b + j prob_i=\frac{prob_{+i}}{\sum_{j=1}^{k}{prob_{+j}}} probi?=j=1k?prob+j?prob+i??

說明

對于perceptron這種模型,不能求其概率,主要原因是其分類函數為:
x s i g n ( x ) = { + 1 x ≥ 0 ? 1 x < 0 x sign(x)=\begin{cases}+1& \text{x$\geq$0} \\-1& \text{x$<$0}\end{cases} xsign(x)={+1?1?x0x<0?
是離散的,如果非要求樣本為某類的概率,可以利用lsotonic或者sigmoid校準分類器,其原理可以參考鏈接:[使用 Isotonic Regression 校準分類器](使用 Isotonic Regression 校準分類器),實際應用中可以采用的sklearn中模塊為CalibratedClassifierCV,具體見鏈接:Python Scikit-learn Perceptron Output Probabilities

[1]https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Perceptron.html

[2]https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=predict_proba#sklearn.linear_model.LogisticRegression.predict_proba

[3]http://vividfree.github.io/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/2015/12/21/classifier-calibration-with-isotonic-regression
[4]https://stackoverflow.com/questions/31792580/python-scikit-learn-perceptron-output-probabilities

原文鏈接:https://blog.csdn.net/weixin_45804601/article/details/127287406

欄目分類
最近更新