通過邏輯回歸的sigmoid函數把線性回歸轉化到[0,1]之間,這個值為什麼可以代表概率?
我們知道邏輯回歸可以通過sigmoid函數,把線性回歸的預測值限定在[0,1]之間,許多文章籠統或者不假思索的就認為這個值就代表概率。但是是否有理論依據?這個[0,1]的值為什麼可以代表我們所預測事物的概率?
因為這個值本來就是 正類的後驗概率 呀,所以肯定是 0-1,而不是因為0-1,才認作是概率。這個順序一定要理清楚,具體證明如下
同理,softmax 函數也可以被證明是多類時候的後驗概率密度。
至於具體的 Logistic Regression 在 sigmoid 裡面 wx+b 的形式,可以假設類條件概率服從同協方差的高斯分布就可以導出,具體形式如下:
最後回到為什麼題主會對為什麼logistic regression的輸出是概率產生疑惑,同樣的困惑我也有過,容易感同身受。我想原因可能在於 Logistic Regression 是判別模型,也就是直接對後驗概率 p(c|x)建模的,這樣的話概率的味道就淡了很多;如果從生成模型 p(x|c)p(c) 的角度推出的 p(c|x),那麼就比較容易理解為何 Logistic Regression 可以表示概率了。
少年,想更深入了解機器學習就去看 PRML 和 MLAPP 吧!(=??口??=) ?乾巴爹
確實誠如問題所言,並非所有0-1之間的數都可以稱為概率,事實上很少有人意識到這個問題——比如說,當你在寫文章時,但凡說令什麼什麼是誰的概率的時候,就一定要仔細檢查此時令的這個概率是不是真正存在,也就是等價於能不能找到誰是概率空間——即找到誰是樣本空間(樣本所有可能的結果)、事件空間是不是 -域、以及怎麼體現概率測度。
話說回logsitic回歸,要把這些基本的情況說清楚,一定要回到logsitic回歸本身或者GLM本身(Generalized Linear Model),大家除了用它來分類以外,也要多問問自己為什麼它能分類、我們到底是怎麼具體在做參數估計的。
下面就把logsitic 回歸從模型的建立到如何和數據、參數取得聯繫跑一遍流程:
【1】首先,考慮許多0-1的獨立同分布觀測 ,其中 。自然而然,我們會考慮用Bernoulli分布去建模,即 ,其中 即為 取1的概率;
【2】然後,因為Bernulli分布的密度我們能寫出來,即
之所以寫成這樣,是因為這滿足GLM的通式 ,而寫成通式的意義在於,其均值 和方差 均可由 和 給出;
【3】然後,令 和 ,把 用 表示,帶入第二個式子里,得到 ,進而得到其導數
,這和Bernoulli的均值就是 的事實吻合;
【4】最後,考慮Canonical link function,link function可以有很多選擇,但canonical形式是唯一的,用這種link function的好處是,可以讓GLM有完全統一的MLE正則方程 ;
Canonical的計算方法是 ;
於是最終把數據、參數和 聯繫起來,便有 。
(結論1)這裡所謂的Sigmoid函數,即為 的具體形式, 從 來看,它的取值值域由真正的概率 完全刻畫 ;
(結論2)為什麼logistic回歸的link function 鏈接函數 是這樣的形式,這是由Canonical 的定義決定的,而Canonical 還和具體分布(比如這裡的Bernoulli分布)的密度有關;
(結論3) 在模型中是以「潛」變數的形式存在,這裡的潛是指,它不是我們實際掌握的數據 ,而是作為連接 和 的橋樑的作用,而在經典線性回歸模型里它們是直接聯繫的;所以拉通來看, 數據 通過參數 影響 也即是 的值,而 說明了這個值以概率的形式影響 的取值;注意,即使這裡 固定比如0.5,這裡 是一次觀測的結果,換句話說, 的取值依然是隨機的,這次是0,下次可能是1;
(結論4)最後一個結論,上面是logistic回歸的「因果邏輯順序」,因為這樣推導,所以我們才遇到了Sigmoid函數作為連接函數,而不是因為Sigmoid函數有怎樣怎樣好的性質,所以我們才用它;並且,因為logisitc回歸的觀測值 是二分類變數,所以可以用來做分類,所有通過分類角度反過去討論logisitic回歸模型是不太自然、不太適當的,也是因為邏輯緣故。
」廣義的線性模型「 的形式為: , 如果用 sigmoid 來代替 得到了 . 對一個待測試樣本,邏輯回歸希望自己可以被用來估計該樣本屬於每一類的後驗概率,並且這一堆概率的和應該是 1。而從上面 的計算公式可以看出 (就是一個概率分布), 所以可以把 看成是概率。
說一點自己的理解,或許對題主對這個問題的理解有幫助。
首先得說一下「極大似然估計」的這個「估計」是怎樣的一個「過程」。
我們首先得假設事物服從「某一確定形式」的概率分布,而不確定的是該形式的參數,比如高斯分布的形式是確定的,但是其參數「均值和方差」卻是不確定的,我們需要通過極大似然估計來確定這兩個未知參數。
對於參數的估計,統計學界分別提供了兩種不同的解決方案:頻率主義學派,貝葉斯學派。而我們常用的是頻率主義學派。頻率主義學派是說「先假設事物服從某一個先驗的概率分布,然後基於觀測到的數據來計算參數的後驗分布」,這也就是說參數估計分為兩個步驟:
- 先假設事物服從某一個「確定形式」的概率分布,而參數未知
- 利用極大似然原理來估計參數
再來看邏輯回歸:
上圖是邏輯回歸的形式,首先題主得明白:邏輯回歸不是一個函數,而是2個函數,這2個函數形成了一個「確定形式的概率分布」:
上圖表示的是「一種概率分布的形式」,它和高斯分布是類似的,只不過這裡是「離散概率分布」,而高斯是連續的概率分布,但它們都是一種概率分布的形式。我們「假設事物服從高斯分布」和「假設事物服從上圖所示的離散分布」,這倆地位是相同的。
好了現在,我們已經完成了第一步,即「假設事物服從某一確定形式的分布」,注意現在我們是假設服從這一種離散分布,當然還可以服從其它任意的離散分布形式。而至於上圖的這種形式為什麼就是一種離散分布呢?因為它恆&>0,且相加=1,所以這種形式可以表示一種離散概率分布。(概率分布有無數種,萬一就偏偏有事物服從這種形式的概率分布呢?就算沒有,近似服從也行啊)
接下來就是用極大似然估計求參數了,即在假設的前提下,求出「最可能的參數」。
而至於為什麼上圖所示的離散分布能夠解決一些問題,也就是為什麼該離散分布能夠描述現實生活中的一些事物,這就是另外一碼事了,但是可以確定的是,上圖是可以表示一種概率分布的,即使現實生活中沒有事物能夠完全符合這種概率分布,但是也可以近似服從嘛。機器學習中類似的假設有很多啊。
再說一句:現實生活中事物的真實分布其實很複雜,但是我們做機器學習的時候,只能假設它服從某一種「確定形式」的「簡單的概率分布」,期望我們假設的這種概率分布的形式能夠在一定程度上擬合大部分數據。包括GMM也是一樣,理論上說只要高斯模型個數足夠多,GMM能夠描述任意一種概率分布,但我們在求解的時候也是「在給定高斯模型個數」的條件下求解,也包括當前的深度學習CNN模型,別看是一個那麼複雜的神經網路,其實它本質上也是我們前面所說的極大似然估計,一個固定結構的CNN模型就是一種「確定形式的概率分布」,CNN的訓練就是參數估計。那麼題主是不是也要問「為什麼CNN模型能夠表示概率呢?」這和邏輯回歸是一樣的,那就是:
先假設事物服從某一個「確定形式」的概率分布!!!
sigmoid只是一種選擇,並不是唯一選擇。 你選擇[0,1]值域的函數, 因為概率是就是0-1
你也可以不選擇0-1,只要你的模型能解釋數據即可為什麼 LR 模型要使用 sigmoid 函數,背後的數學原理是什麼? - 知乎用戶的回答
我覺得並不是sigmoid賦予了【0,1】概率的意義。而是在這樣一個最終輸出的設定下,前面的學習過程使得輸出幾乎正確的映射到了它應有的概率上。
只是映射了之後,相對大小沒發生變化。該大的還是大,該小的還是小。人們為了方便當做概率罷了
我覺得這個問題可以從廣義線性模型的角度來看,GLM假設因變數的分布屬於指數分布族,正好0-1的二類分類問題可以看作伯努利分布,而這個分布屬於指數分布族。
GLM的形式 :
伯努利分布: , 表示樣本為正例的概率。可以對該分布稍微做一下轉換: , 將該式與GLM的式子一一對應可以得到: , 根據這個式子就可以得到 ,從而sigmoid函數正好對應著樣本為正例的概率,所以可以解釋為概率。
我嘗試從第一個使用這個方法的角度提供下思路,首先邏輯回歸的0到1的輸出,走到這一步是沒有概率意義的,僅僅表示它可能給出0到1的取值,也可以是0到2,0到3,為了防止概率這個事干擾思維我們用0到10的輸出,那麼接下來我要用這個值的範圍來確定預測,用10標註不得病,用0標註得病損失函數的最小化過程我們定義了什麼,離10越近越不得病,離0越近越得病,那好了5以上就叫不得病,5以下叫的病。好了,沒有概率的事了吧,是不是天下太平了
下面這個也討論了類似的問題
Why is the output of logistic regression interpreted as a probability?
怎麼說呢,就拿一個簡單LR二分類舉例吧,識別是否為西瓜。我們拿掉sigmoid,結果輸出為一個值,例如100,然後模型訓練結果是大於60就屬於西瓜,沒問題。現在加上sigmoid,整個輸出值的範圍從之前的正負無窮壓縮到0到1,因為我們不能取到0和1,只是不斷趨近,那麼越接近1就說明原來的值越接近無限大,也就是離分割線(超平面)越遠,那麼屬於正例的可能自然無限大了。簡單來說,sigmoid只是把可能性大小壓縮到0到100%之內,方便計算而已。手機碼,格式見諒。
LR的sigmoid函數得到的值並不是天生就能被認為是概率。只是因為我們拿正確的概率分布和它的cross-entropy作為loss function去訓練它,才使它逼近了我們想去逼近的那個概率分布模型。
訓練完了之後,每個特徵對應的參數就表示這個特徵對這個概率的貢獻度。
換句話說,是因為我們對著一個概率分布函數去訓練它,所以使得它的輸出是表示一個概率值的。
事實上我們不用sigmoid,用tanh或者其它能夠具有類似值域的非線性函數也是可以的。
sigmoid函數的好處是,可以讓每個特徵的貢獻度之和分布到整個實數區間上。
首先對於概率的定義,頻率學派和貝葉斯學派之間就存在不同認識,但最大的共同點就是經常利用概率密度函數,而不是直接用概率。樓主所說的利用sigmoid把變數框縮在0和1之間,目的應該僅僅是使其符合概率範圍特徵,將其人為的認為是概率。但我個人認為該數值絕不等同於概率。
線性回歸的結果可以看作未歸一化的對數後驗概率ln(p(x=1)/p(x=-1)),叫做分對數(logit),通過sigmod後就變成後驗概率了
推薦閱讀: