Logistic Regression(簡稱LR模型)是比較經(jīng)典的分類方法蚓再,雖然名字中有回歸兩個字只损,但主要是用來解決分類問題的判別概率問題硬猫。話不多說,直入正題。
LR模型的常規(guī)步驟:
1.構(gòu)造預(yù)測函數(shù)啸蜜;
2.構(gòu)造損失函數(shù);
3.損失函數(shù)最小辈挂,并求得參數(shù)衬横;
4.編程。
1. 構(gòu)造預(yù)測函數(shù)
我們知道终蒂,在處理線性模型時蜂林,函數(shù)方程為?
在處理二分類問題時,我們希望能夠?qū)⑸鲜龊瘮?shù)的值映射到(0,1)中拇泣,這時我們需要一個階躍函數(shù):sigmoid函數(shù)噪叙。
函數(shù)表達(dá)式:
觀察函數(shù)圖像,我們可以知道霉翔,該函數(shù)值域為(0,1)睁蕾。在處理二分類問題時,我們可以假設(shè)當(dāng)函數(shù)值大于等于0.5時债朵,該類別屬于1類子眶;小于0.5時,該類別屬于0類序芦。既然知道了預(yù)測函數(shù)臭杰,以及怎么處理預(yù)測值,下一步開始構(gòu)造損失函數(shù)吧谚中。
2. 構(gòu)造損失函數(shù)
sigmoid函數(shù)還有一重特殊的含義渴杆,那就是它本身表示的是該函數(shù)取1時的值,因此表示1宪塔,0時的概率分別為:
LR模型磁奖,有一個特點,我們用1時的概率值蝌麸,除以0時的概率值点寥,可以得到。我們把這個叫做一個事情的幾率来吩,指一個事情發(fā)生與不發(fā)生的概率比值敢辩。
有了1,0時的概率值弟疆,我們可以用來表示一個0戚长,1問題的計算概率綜合值了。
這個公式怠苔,可以理解為同廉,當(dāng)y取1時,概率值為公式的前半部分;當(dāng)y取0時迫肖,概率值為公式后半部分锅劝。一個分類問題,我們可以理解為M重0蟆湖,1問題故爵。樣本概率最大時,我們可以得到最好的分類模型隅津。那怎么求這個M重問題的最大概率P呢诬垂?在大學(xué)上概率論時,對于這種問題伦仍,我們一般用最大似然函數(shù)來求極值结窘。首先,構(gòu)造似然函數(shù)充蓝,然后變形為對數(shù)似然函數(shù)形式隧枫,然后求導(dǎo),求極值點棺克。
當(dāng)時在實際分類問題中悠垛,對數(shù)似然函數(shù)是無法通過求導(dǎo)獲取解析解的。通常我們構(gòu)造損失函數(shù)娜谊,通過梯度下降來使損失函數(shù)最小來構(gòu)造分類器确买,以及獲取變量的值。梯度下降是用來求函數(shù)最小值的纱皆,故我們在似然函數(shù)前加負(fù)號來達(dá)到我們的目的湾趾。通常我們在實際操作時,還會對損失函數(shù)求平均派草。此時搀缠,損失函數(shù)為
3. 損失函數(shù)最小,并求得參數(shù)
使用梯度下降法來求解近迁。梯度下降法的求解過程為
梯度下降法的原理可以參考:https://zhuanlan.zhihu.com/p/52003491艺普。為了讓梯度下降進(jìn)行下去,下面需要通過損失函數(shù)對變量求導(dǎo)鉴竭。
舉兩個例子歧譬,來說明一下梯度下降求解的過程。
1.單標(biāo)量:y(x)=x^2;對x求導(dǎo)為2x搏存。假設(shè)起點為x0=1,學(xué)習(xí)步長a = 0.4瑰步,那么
x1=x0 - a*(2*x0) = 1-0.4*2 = 0.2
x2 = x1 - a*(2*x1) = 0.2 - 0.4*0.4 = 0.04
...
2.多變量:y(x) = x1^2 + x2^2; 對x求導(dǎo)為<2*x1,2*x2>,此時表示一個向量璧眠。假設(shè)X0 = (1,3),a=0.1缩焦,那么读虏,
X1=(1,3) - 0.1*(2,6) = (0.8,2.4)
X2 = (0.8,2.4) - 0.1*(1.6,4.8) = (0.64,1.92)
...
現(xiàn)在我們東風(fēng)都不欠了,我們可以開始LR模型的編程了袁滥。
4. 編程
對于機(jī)器學(xué)習(xí)模型盖桥,我個人的看法最好是能夠自己把代碼寫一遍。剛開始呻拌,沒頭緒的時候葱轩,可以看看別人的代碼,理解后藐握,自己再寫,最好能夠采用矢量化編程的方式垃喊。我實在不知道怎么把代碼復(fù)制進(jìn)來猾普,格式還跟編譯器里面的一樣。寫到這里我查了一下本谜,需要把富文本改成MArkdown初家,還只對新建文本生效,好煩乌助,這次還是截圖吧溜在,以后的文章通通使用markdown的。
首先加載數(shù)據(jù)他托,在這里掖肋,我們讓x0=1,可以說將函數(shù)的常數(shù)項b變成了變量的
了赏参。
構(gòu)建預(yù)測函數(shù):
梯度下降迭代求:
我設(shè)置的迭代20000次志笼,學(xué)習(xí)率為0.001,到最后極值已經(jīng)很小且下降已經(jīng)非常不明顯了把篓,我們可以認(rèn)為模型已經(jīng)達(dá)到比較好的收斂效果纫溃。由于我比較懶,沒有造測試數(shù)據(jù)韧掩,進(jìn)行測試紊浩,朋友們就將就一下吧。
邏輯回歸其實是一個淺層的神經(jīng)網(wǎng)絡(luò)疗锐,我們不妨用tensorflow來實現(xiàn)一下坊谁,展示一下逼格。我在看深度學(xué)習(xí)交叉熵部分時,上面有句話這么說思劳,交叉熵一般用在分類問題上敞临,表達(dá)的意思為預(yù)測輸入樣本屬于某一類的概率。其中Y代表真實值阶界,layer_1表示預(yù)測值虹钮。下面的代碼損失函數(shù)我用的就是交叉熵。
好了膘融,以上就是關(guān)于LR模型的介紹芙粱,以及有關(guān)LR模型的編程。
本文Github:https://github.com/NLPxiaoxu/Easy_Machine-Learning
參考:
https://blog.csdn.net/qq_38923076/article/details/82925183
https://segmentfault.com/a/1190000009954640
李航 《統(tǒng)計學(xué)習(xí)方法》
李金洪等 《深度學(xué)習(xí)之TensorFlow入門氧映、原理與進(jìn)階實戰(zhàn)》