Logistic regression(簡(jiǎn)稱LR)是機(jī)器學(xué)習(xí)最常用的算法,經(jīng)常用來(lái)處理二分類問(wèn)題
我們舉一個(gè)生活案例,畢業(yè)的學(xué)生都要求職,如果你看上了一家企業(yè)惠呼,并把你的簡(jiǎn)歷投遞給該企業(yè)的hr,我們省略中間N輪的面試筆試經(jīng)過(guò)峦耘,那么這件事情對(duì)于你會(huì)產(chǎn)生兩個(gè)結(jié)果剔蹋,你被錄取了或者你被淘汰了。假設(shè)我們有一個(gè)模型算法用來(lái)預(yù)測(cè)這件事情的結(jié)果辅髓,那么你通過(guò)這個(gè)模型來(lái)預(yù)測(cè)結(jié)果泣崩,但是你會(huì)發(fā)現(xiàn)少梁,模型只會(huì)直接告訴你你被錄取(你很開(kāi)心)或者你被淘汰(你很絕望)矫付,這樣不免會(huì)顯得太粗魯太直接凯沪,你更希望模型可以告訴你一個(gè)可能性,比如說(shuō)你非常有希望买优,有一點(diǎn)希望妨马,不怎么有希望,你想都不用想了等等信息杀赢,這樣會(huì)使得結(jié)果更加人
我們的世界是隨機(jī)的烘跺,比如今天會(huì)不會(huì)下雨,今天去散步會(huì)偶遇到誰(shuí)葵陵,開(kāi)車走這條路會(huì)不會(huì)擁堵液荸,有哪幾家企業(yè)相中你的offer,玩游戲掉落的裝備脱篙,同一間辦公室兩個(gè)人生日相同的可能性,甚至蝴蝶效應(yīng)等伤柄,每一件事件的發(fā)生都可以用可能性或者幾率來(lái)表達(dá)绊困,而促使該事件發(fā)生的條件越充分,事件發(fā)生的可能性也就越大适刀,所以人類發(fā)明了概率來(lái)描述這一現(xiàn)象
假設(shè)y是我們想要的結(jié)果概率秤朗,而簡(jiǎn)歷有m個(gè)因素可以理解成m個(gè)因變量,我們將m個(gè)因變量表示為x1笔喉,x2取视,...,xm常挚,那么公司會(huì)怎么考慮這些因素呢作谭?最快速的方式就是把這些因素對(duì)應(yīng)的得分進(jìn)行求和,和的結(jié)果越大表示錄用奄毡,也就是屬于錄用這個(gè)類別折欠,反之和的結(jié)果越小,就屬于淘汰這個(gè)類別吼过。我們將每個(gè)因變量對(duì)應(yīng)的權(quán)值表示為θ1锐秦,θ2,...盗忱,θm酱床,將因變量乘以相應(yīng)的權(quán)值得到的加權(quán)和就是最后的得分,根據(jù)得分就可以進(jìn)行歸類
本章知識(shí)點(diǎn):
1趟佃、多項(xiàng)式邏輯函數(shù)
2扇谣、sigmoid非線性函數(shù)
3慷垮、分類任務(wù)函數(shù)
4、最大似然函數(shù)和其對(duì)數(shù)化處理
5揍堕、最大似然函數(shù)的偏導(dǎo)數(shù)求解
6料身、梯度上升法
7、隨機(jī)梯度上升法
一. 邏輯函數(shù)
假設(shè)我們的數(shù)據(jù)有n個(gè)獨(dú)立的維度衩茸,我們用x1芹血,x2,...楞慈,xn來(lái)表示幔烛,用w1,w2囊蓝,...饿悬,wn表示每個(gè)維度的權(quán)值,我們叫做回歸系數(shù)聚霜,分類結(jié)果y=0或者y=1表示兩個(gè)類別狡恬,顯然w1,w2蝎宇,...弟劲,wn就是模型待求解的參數(shù)列表
首先我們需要擬合出一個(gè)多項(xiàng)式邏輯函數(shù)f(x),用來(lái)表示其加權(quán)和結(jié)果
上式的右邊我們用W表示這n個(gè)回歸系數(shù)向量姥芥,X表示n維樣本特征向量兔乞,則根據(jù)向量的乘法,W的轉(zhuǎn)置和X的點(diǎn)積就可以表示加權(quán)和結(jié)果凉唐。
二. sigmoid非線性函數(shù)
現(xiàn)在我們希望f(x)具有良好的邏輯判斷性質(zhì)庸追,最好可以直接表達(dá)出樣本被分到某類的概率,比如f(x) > 0.5的時(shí)候表示x被分到正類台囱,f(x) < 0.5表示分到反類淡溯,并且我們希望f(x)的結(jié)果總是在[0,1]之間可以直接表示概率玄坦,那么我們需要一個(gè)函數(shù)g(z)來(lái)映射f(x)血筑,于是我們會(huì)用到sigmoid函數(shù):
很明顯,sigmoid滿足我們對(duì)g(z)的一切要求煎楣,定義域?yàn)槿我鈱?shí)數(shù)R豺总,值域正好在[0,1]之間择懂,并且在x=0處值為0.5喻喳,整個(gè)函數(shù)單調(diào)遞增且非線性變化,我們就可以根據(jù)g(z)的值是否大于0.5來(lái)判斷樣本x屬于正類還是反類
現(xiàn)在我們?cè)O(shè)預(yù)測(cè)函數(shù)h(x)來(lái)計(jì)算樣本x的類別困曙,那么怎么映射h(x)到sigmoid函數(shù)上呢表伦?
設(shè)h(x)表示預(yù)測(cè)出樣本x屬于正類的概率谦去,那么樣本x屬于反類的概率就為1 - h(x),我們定義讓步比為正類和反類的比值蹦哼,那么引入對(duì)數(shù)后我們得到下面關(guān)系
我們利用對(duì)數(shù)來(lái)求解出h(x)
從上面式子可以看出鳄哭,我們可以用g(z)來(lái)直接映射f(x)就可以得到h(x),即h(x) = g(f(x))纲熏,且h(x)擁有sigmoid函數(shù)的一切特性妆丘,h(x)即為模型的預(yù)測(cè)函數(shù)
從上面兩個(gè)模型我們也可以證明出:邏輯回歸的本質(zhì)就是一個(gè)線性分類模型,它通過(guò)一個(gè)非線性化映射輸出一個(gè)概率值來(lái)評(píng)判分類的標(biāo)準(zhǔn)
三. 分類任務(wù)函數(shù)
設(shè)P(y=1|x)表示樣本x屬于正類的概率局劲,那么P(y=0|x) 表示反類的概率勺拣,我們需要用一個(gè)分類函數(shù)用來(lái)表示P(y|x)是屬于正類還是反類的概率,于是得到下面分類函數(shù)
仔細(xì)觀察上式药有,當(dāng)yi=1時(shí),p(y|x)即表示樣本x屬于正類的概率苹丸,而當(dāng)yi=0時(shí)愤惰,p(y|x)即表示樣本x屬于反類的概率,而P(y=1|x)我們可以用之前的預(yù)測(cè)函數(shù)h(x)來(lái)表示谈跛,于是分類函數(shù)可以整合為
四. 最大似然函數(shù)及其對(duì)數(shù)化
現(xiàn)在我們寫出了預(yù)測(cè)函數(shù)和分類函數(shù)羊苟,以及擁有二分類數(shù)據(jù)樣本集做訓(xùn)練,而回歸因子W未知感憾,那么怎么求解出W呢?下一步令花,我們需要構(gòu)造出損失函數(shù)Loss(代價(jià)函數(shù))
那么我們的損失函數(shù)為什么不用最小二乘法了呢阻桅?(請(qǐng)比較線性回歸的損失函數(shù)思考)
我們知道,邏輯回歸可以被視為一個(gè)廣義上的線性模型兼都,而它的外層函數(shù)g是sigmoid函數(shù)嫂沉,問(wèn)題就在這里,g是一個(gè)非線性函數(shù)扮碧,如果我們把預(yù)測(cè)函數(shù)h(x)帶入最小二乘法函數(shù)中趟章,會(huì)發(fā)現(xiàn)損失函數(shù)圖像是非凸函數(shù)
由于g的非線性使得用最小二乘法表示的loss擁有多個(gè)局部極小值,這樣會(huì)影響我們使用梯度下降法求解最小值時(shí)慎王,有非常大的概率不是全局最優(yōu)解蚓土,只是得到局部最小值,這也就解釋了我們不能使用最小二乘法來(lái)表示損失
那我們需要找到什么樣的函數(shù)來(lái)表示模型的損失呢赖淤?
回想我們從小做數(shù)學(xué)題蜀漆,大多都是根據(jù)一些已知條件來(lái)推算結(jié)果,而當(dāng)下的模型是已經(jīng)知道了結(jié)果咱旱,需要尋找使得該結(jié)果出現(xiàn)的概率最大的條件确丢,而這個(gè)條件就是W
顯然绷耍,我們需要構(gòu)造的函數(shù)是統(tǒng)計(jì)模型中參數(shù)的函數(shù),而這個(gè)函數(shù)就是似然函數(shù)鲜侥。它在觀察到結(jié)果的時(shí)候褂始,對(duì)產(chǎn)生該結(jié)果的參數(shù)列表進(jìn)行估計(jì),使得該參數(shù)列表最具有合理性
通過(guò)之前的分析描函,我們需要找到一個(gè)凸函數(shù)給預(yù)測(cè)函數(shù)h(x)作為損失函數(shù)崎苗,為此我們寫出似然函數(shù)L(w),因?yàn)槊總€(gè)樣本互相獨(dú)立赘阀,那么n個(gè)樣本出現(xiàn)的似然度為
顯然益缠,似然函數(shù)就是我們的損失函數(shù),我們需要求出使得似然函數(shù)L(w)最大的系數(shù)組合基公,該組合即為W幅慌,即問(wèn)題轉(zhuǎn)化為求解最大似然函數(shù)
我們先準(zhǔn)備嘗試用數(shù)學(xué)知識(shí)直接對(duì)L(w)求導(dǎo),計(jì)算其導(dǎo)數(shù)為0的解析解轰豆,如何存在解析解胰伍,那么我們就可以直接對(duì)損失函數(shù)進(jìn)行優(yōu)化了,為此我們需要變換L(w):取自然對(duì)數(shù)酸休,然后化簡(jiǎn)
我們將預(yù)測(cè)函數(shù)h(x)和邏輯函數(shù)f(x)帶入上式l(w)再次化簡(jiǎn)可得
至此骂租,我們終于找到了損失函數(shù)Loss和邏輯函數(shù)f(x)的關(guān)系,最優(yōu)化Loss函數(shù)斑司,求出相對(duì)的f(x)渗饮,也就找到了回歸因子W,下面我們需要對(duì)參數(shù)W求偏導(dǎo)數(shù)
五. 最大似然函數(shù)的偏導(dǎo)數(shù)
至此宿刮,我們一步步推導(dǎo)出了最大似然函數(shù)的偏導(dǎo)數(shù)互站,令該導(dǎo)數(shù)為0可以得到極值,但是很不幸的是僵缺,它無(wú)法通過(guò)直接解析來(lái)求解胡桃,所以我們需要利用迭代逼近,也就是梯度下降(上升)法來(lái)求解極值
六. 梯度上升算法
機(jī)器學(xué)習(xí)中梯度下降似乎已經(jīng)無(wú)處不在使用了磕潮,它是求解最優(yōu)化函數(shù)問(wèn)題中最常見(jiàn)的算法翠胰,顯然,在似然函數(shù)作為損失函數(shù)的模型中自脯,我們需要計(jì)算梯度上升(和梯度下降方向相反)來(lái)得到最大似然值
我們從構(gòu)造邏輯函數(shù)f(x)之景、預(yù)測(cè)函數(shù)h(x)、分類函數(shù)P(y|x)冤今、似然函數(shù)L(w)闺兢,對(duì)數(shù)化似然函數(shù)得到和f(x)相關(guān)的l(w)作為損失函數(shù),最后對(duì)l(w)求偏導(dǎo)數(shù),才可以寫出梯度上升式子
上式就是最基本的梯度上升法屋谭,其中α設(shè)置為學(xué)習(xí)率脚囊,表示每次迭代上升的幅度(步長(zhǎng)),這個(gè)式子的作用即是每次迭代更新回歸因子W來(lái)逼近最大值(最合理的參數(shù)列表)
從結(jié)果中可以看到模型在梯度上升算法優(yōu)化后桐磁,準(zhǔn)確率大概在95%左右
七. 隨機(jī)梯度上升法
已經(jīng)有了梯度上升悔耘,為什么還需要隨機(jī)梯度上升呢,這二者有什么區(qū)別呢我擂?
我們來(lái)分析一下代碼中梯度上升式子衬以,weights = weights + alpha * x.T * (y - hx),顯然校摩,每一次的迭代更新都需要計(jì)算所有數(shù)據(jù)的損失函數(shù)看峻,當(dāng)訓(xùn)練數(shù)據(jù)較小還好,但是如果有數(shù)十億樣本衙吩,那么上式的矩陣乘法消耗的時(shí)間將會(huì)非常大互妓,于是我們考慮使用隨機(jī)梯度上升來(lái)更新參數(shù)列表
所謂的隨機(jī)梯度上升,指的是每次迭代更新參數(shù)時(shí)不需要用到所有的數(shù)據(jù)樣本矩陣x和y坤塞,而是使用樣本中隨機(jī)選出的一個(gè)數(shù)據(jù)點(diǎn)來(lái)計(jì)算梯度并更新參數(shù)冯勉,這樣可以在新的樣本到來(lái)時(shí)對(duì)模型進(jìn)行增量式更新
可以看出隨機(jī)梯度上升法是一個(gè)在線學(xué)習(xí)算法,相比之前的梯度上升法一次性處理整個(gè)數(shù)據(jù)樣本可以被稱作批處理摹芙,訓(xùn)練之前我們一般將訓(xùn)練數(shù)據(jù)隨機(jī)打亂在進(jìn)行隨機(jī)梯度算法
從結(jié)果中可以看到模型在隨機(jī)梯度上升算法優(yōu)化后灼狰,準(zhǔn)確率大概在98%左右
最后從一元線性回歸到邏輯回歸的原理分析過(guò)程中,我們可以總結(jié)出機(jī)器學(xué)習(xí)算法的基本步驟如下:
1浮禾、對(duì)于一個(gè)實(shí)際問(wèn)題交胚,我們需要使用數(shù)學(xué)語(yǔ)言來(lái)描述并建立數(shù)學(xué)模型,比如回歸模型還是分類模型等
2盈电、對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗/補(bǔ)充
3承绸、建立模型的預(yù)測(cè)函數(shù)來(lái)描述問(wèn)題的解(線性模型,非線性模型)
4挣轨、建立模型的損失(代價(jià))函數(shù)來(lái)最優(yōu)化問(wèn)題的解(比如最小二乘法,似然函數(shù)等)
5轩猩、純數(shù)學(xué)推導(dǎo)出損失函數(shù)關(guān)于帶求解參數(shù)的偏導(dǎo)數(shù)表達(dá)式
6卷扮、在偏導(dǎo)數(shù)無(wú)法計(jì)算出其解析解或者無(wú)法求導(dǎo)的情況下,借助迭代算法一步步逼近最優(yōu)解(梯度下降均践,隨機(jī)梯度下降等)
7晤锹、編程實(shí)現(xiàn)整個(gè)算法,并嘗試調(diào)整超參數(shù)組合得到最優(yōu)模型
邏輯回歸代碼見(jiàn):邏輯回歸的基本原理