LR 的模型函數(shù)記作:客们,其在二維坐標系中圖像如下:
因為形如S曲線底挫,所以,邏輯函數(shù)sigmoid函數(shù)又稱為S函數(shù)盈厘。
Sigmod 這樣一個奇怪而別扭的形式到底是誰涝缝、因為什么想出來的呢譬重?又怎么想到用它來做分類的呢臀规?
1. sigmoid函數(shù)的由來
最初為了研究人口增長與時間的關系栅隐,人們發(fā)明了邏輯函數(shù)。馬爾薩斯的人口論中“在沒有任何外界阻礙的情況下租悄,人口將以幾何級數(shù)增長”的說法泣棋,正是依據(jù)指數(shù)模型。
但是鸯屿,自然界中當一種東西數(shù)量越來越多以后把敢,某種阻力也會越來越明顯地抑制其增長率修赞。因此,數(shù)學家增加了抑制參數(shù)柏副,模型被修正為:
割择,
表示增長率,
表示抑制函數(shù),當達到一定程度后成長率受到抑制换可。
經(jīng)過多次調(diào)整得到了具有此邏輯特性的函數(shù):
其增長率二維坐標圖像如下:
可以看出增長率先變高沾鳄,后變低的規(guī)律确憨。
上面講了 LR 函數(shù)的歷史瓤的,一方面可以看出 LR 函數(shù)從最初的指數(shù)函數(shù)形式逐步發(fā)展到今天的歷程吞歼,在追本溯源的過程中由簡入繁掌握函數(shù)的形式和意義篙骡。
另一方面,也是以 LR 函數(shù)的形成作為實際案例尿褪,來學習借助數(shù)學工具解決問題的方法:
首先得湘,將目標問題定義為一個函數(shù)淘正;
之后,選取最簡單的假設作為其具體形式跪帝;
然后伞剑,用事實數(shù)據(jù)驗證該形式,確認有效后沿用恕刘,形成數(shù)學模型抒倚;
一旦當前采用的數(shù)學模型出現(xiàn)問題,則對其進行修正(添加修正項)含蓉,同樣借助事實數(shù)據(jù)來求取修正項的形式项郊,形成新的(升級版)數(shù)學模型着降。
直接、簡單蓄喇、基于現(xiàn)有成果——這也是人類在現(xiàn)實當中解決問題的各種有效方法的共同特征。
雖然隨著新技術的發(fā)展刃鳄,具體的新問題不斷涌現(xiàn)楼眷,但實際上罐柳,技術發(fā)展的過程,整體而言是把問題的“量”擴大化的過程齿梁。
如果抽象層次更高一些肮蛹,我們就不難發(fā)現(xiàn),這些問題其實和以往的問題有許多共性所在省核。其實昆码,新問題不過是舊問題在新情況、新場景下的變形而已旧噪。
既然如此脓匿,那些已經(jīng)在實踐中證明對于舊問題有效的方法陪毡、措施,也必然能夠對解決新問題有所貢獻爱咬。
上圖中,z 是自變量(橫軸)燎斩,最終計算出的因變量 y(縱軸),則是一個 [0,1] 區(qū)間之內(nèi)的實數(shù)值笋鄙。
一般而言师枣,當
所以找岖,在模型輸出預測結果時陨倡,不必輸出 y 的具體取值,而是根據(jù)上述判別標準许布,輸出1(真)或0(假)兴革。
因此,LR 典型的應用是二分類問題上蜜唾,也就是說,把所有的數(shù)據(jù)只分為兩個類袁余。
2.LR 目標函數(shù)
有了模型函數(shù)擎勘,來看看邏輯回歸的目標函數(shù)。
邏輯函數(shù) 是我們要通過訓練得出來的最終結果颖榜,模型的未知參數(shù)時θ棚饵。訓練過程我們要設置一個目標:我們希望這個最終得出的 θ 達到一個什么樣的效果——我們當然是希望得出來的這個 θ,能夠讓訓練數(shù)據(jù)中被歸為陽性的數(shù)據(jù)預測結果都為陽朱转,本來被分為陰性的預測結果都為陰蟹地。
而從公式本身的角度來看,h(x) 實際上是 x 為陽性的分布概率藤为,所以怪与,才會在 時將 x 歸于陽性。也就是說
缅疟。反之分别,樣例是陰性的概率
。
當我們把測試數(shù)據(jù)帶入其中的時候存淫,P(y=1) 和 P(y=0) 就都有了先決條件耘斩,它們?yōu)橛柧殧?shù)據(jù)的 x 所限定。因桅咆。
根據(jù)二項分布公式括授,可得出
。
假設訓練集一共有 m 個數(shù)據(jù),那么這 m 個數(shù)據(jù)的聯(lián)合概率就是:
目標是這個聯(lián)合概率值取最大值的θ求解荚虚,因此可以取log薛夜,化簡為如下形式:
為了統(tǒng)一,需要目標函數(shù)是一個凸函數(shù)版述,具備最小值梯澜。因此我們設定:
。
3.優(yōu)化算法
LR 的目標函數(shù) J(θ)渴析,并且優(yōu)化目標是最小化它晚伙。最常見最基礎的梯度下降算法。
基本步驟如下:
- 通過對 J(θ) 求導獲得下降方向即梯度方向—— J′(θ)俭茧;
- 根據(jù)預設的步長 α咆疗,更新參數(shù)
;
- 重復以上兩步直到逼近最優(yōu)值恢恼,滿足終止條件民傻。
優(yōu)化算法偽代碼為:
Set initial value: θ = 0, α
while (not convergence){
}