邏輯回歸 logistics regression 公式推導(dǎo)
邏輯回歸雖然名字里面有回歸,但是主要用來解決分類問題鞍爱。
一笋除、線性回歸(Linear Regression)
線性回歸的表達(dá)式:
線性回歸對于給定的輸入 x听隐,輸出的是一個數(shù)值 y 织咧,因此它是一個解決回歸問題的模型。
為了消除掉后面的常數(shù)項b懦底,我們可以令?
同時?
也就是說給x多加一項而且值恒為1,這樣b就到了w里面去了,直線方程可以化簡成為:
二聚唐、分類問題(Classification)
二分類問題就是給定的輸入 x丐重,判斷它的標(biāo)簽是0類還是1類。二分類問題是最簡單的分類問題杆查。我們可以把多分類問題轉(zhuǎn)化成一組二分類問題扮惦。比如最簡單的是OVA(One-vs-all)方法,比如一個10分類問題亲桦,我們可以分別判斷輸入 x?是否屬于某個類崖蜜,從而轉(zhuǎn)換成10個二分類問題。
因此客峭,解決了二分類問題豫领,相當(dāng)于解決了多分類問題。
三舔琅、如何用連續(xù)的數(shù)值去預(yù)測離散的標(biāo)簽值呢等恐?
線性回歸的輸出是一個數(shù)值,而不是一個標(biāo)簽备蚓,顯然不能直接解決二分類問題课蔬。那我如何改進(jìn)我們的回歸模型來預(yù)測標(biāo)簽?zāi)兀?/p>
一個最直觀的辦法就是設(shè)定一個閾值,比如0郊尝,如果我們預(yù)測的數(shù)值 y > 0 二跋,那么屬于標(biāo)簽A,反之屬于標(biāo)簽B流昏,采用這種方法的模型又叫做感知(Perceptron)扎即。
另一種方法,我們不去直接預(yù)測標(biāo)簽横缔,而是去預(yù)測標(biāo)簽為A概率铺遂,我們知道概率是一個[0,1]區(qū)間的連續(xù)數(shù)值,那我們的輸出的數(shù)值就是標(biāo)簽為A的概率茎刚。一般的如果標(biāo)簽為A的概率大于0.5襟锐,我們就認(rèn)為它是A類,否則就是B類膛锭。這就是我們的這次的主角邏輯回歸模型?(Logistics Regression)粮坞。
四、邏輯回歸(logistics regression)
明確了預(yù)測目標(biāo)是標(biāo)簽為A的概率初狰。
我們知道莫杈,概率是屬于[0,1]區(qū)間。但是線性模型??值域是
筝闹。
我們不能直接基于線性模型建模。需要找到一個模型的值域剛好在[0,1]區(qū)間,同時要足夠好用关顷。
于是糊秆,選擇了我們的sigmoid函數(shù)。
它的表達(dá)式為:?
? ? ? ? ? ? ? ? ? ? ? ?
它的圖像:
sigmoid函數(shù)
這個函數(shù)的有很多非常好的性質(zhì)痘番,一會兒你就會感受到。但是我們不能直接拿了sigmoid函數(shù)就用平痰,畢竟它連要訓(xùn)練的參數(shù) w 都沒得汞舱。
我們結(jié)合sigmoid函數(shù),線性回歸函數(shù)宗雇,把線性回歸模型的輸出作為sigmoid函數(shù)的輸入昂芜。于是最后就變成了邏輯回歸模型:
假設(shè)我們已經(jīng)訓(xùn)練好了一組權(quán)值。只要把我們需要預(yù)測的x代入到上面的方程逾礁,輸出的y值就是這個標(biāo)簽為1的概率说铃,我們就能夠判斷輸入數(shù)據(jù)是屬于哪個類別。
接下來就來詳細(xì)介紹嘹履,如何利用一組采集到的真實樣本腻扇,訓(xùn)練出參數(shù)w的值。
五砾嫉、邏輯回歸的損失函數(shù)(Loss Function)
損失函數(shù)就是用來衡量模型的輸出與真實輸出的差別幼苛。
假設(shè)只有兩個標(biāo)簽1和0, y的取值為0或1焕刮。我們把采集到的任何一組樣本看做一個事件的話舶沿,那么這個事件發(fā)生的概率假設(shè)為p。我們的模型y的值等于標(biāo)簽為1的概率也就是p配并。
因為標(biāo)簽不是1就是0括荡,因此標(biāo)簽為0的概率就是:? 。
我們把單個樣本看做一個事件溉旋,那么這個事件發(fā)生的概率就是:
這個函數(shù)不方便計算畸冲,它等價于:
解釋下這個函數(shù)的含義,我們采集到了一個樣本?观腊。對這個樣本邑闲,它的標(biāo)簽是?
的概率是
。 (當(dāng)y=1梧油,結(jié)果是p苫耸;當(dāng)y=0,結(jié)果是1-p)儡陨。
如果我們采集到了一組數(shù)據(jù)一共N個褪子,
{}量淌,這個合成在一起的合事件發(fā)生的總概率怎么求呢?其實就是將每一個樣本發(fā)生的概率相乘就可以了褐筛,即采集到這組樣本的概率:
注意是一個函數(shù)类少,并且未知的量只有w(在p里面)叙身。
由于連乘很復(fù)雜渔扎,我們通過兩邊取對數(shù)來把連乘變成連加的形式,即:
其中信轿,?
這個函數(shù)F(w)又叫做它的損失函數(shù)晃痴。損失函數(shù)可以理解成衡量我們當(dāng)前的模型的輸出結(jié)果,跟實際的輸出結(jié)果之間的差距的一種函數(shù)财忽。這里的損失函數(shù)的值等于事件發(fā)生的總概率倘核,我們希望它越大越好。但是跟損失的含義有點兒違背即彪,因此也可以在前面取個負(fù)號紧唱。
六、最大似然估計MLE(Maximum Likelihood Estimation)
我們在真實世界中并不能直接看到概率是多少隶校,我們只能觀測到事件是否發(fā)生漏益。也就是說,我們只能知道一個樣本它實際的標(biāo)簽是1還是0深胳。那么我們?nèi)绾喂烙媴?shù)w跟b的值呢绰疤?
最大似然估計MLE(Maximum Likelihood Estimation),就是一種估計參數(shù)w?的方法舞终。在這里如何使用MLE來估計w呢轻庆?
在上一節(jié),我們知道損失函數(shù)F(w)是正比于總概率的敛劝,而F(w)又只有一個變量w余爆。也就是說,通過改變w的值夸盟,就能得到不同的總概率值
蛾方。那么當(dāng)我們選取的某個
剛好使得總概率
取得最大值的時候。我們就認(rèn)為這個
就是我們要求的w的值满俗,這就是最大似然估計的思想转捕。
現(xiàn)在我們的問題變成了,找到一個唆垃,使得我們的總事件發(fā)生的概率五芝,即損失函數(shù)F(w)取得最大值邮利,這句話用數(shù)學(xué)語言表達(dá)就是:
七淘衙、 求F(w)的梯度?
梯度的定義
我們知道對于一個一維的標(biāo)量x,它有導(dǎo)數(shù)娱挨。
對一個多維的向量
來說,它的導(dǎo)數(shù)叫做梯度醉途,也就是分別對于它的每個分量求導(dǎo)數(shù)?
接下來請拿出紙筆矾瑰,一起動手來推導(dǎo)出的表達(dá)式。請盡量嘗試自己動手推導(dǎo)出來隘擎,如果哪一步不會了再看我的推導(dǎo)殴穴。
七(二)、求梯度的推導(dǎo)過程
為了求出F(w)的梯度货葬,我們需要做一些準(zhǔn)備工作采幌。原諒我非常不喜歡看大串的數(shù)學(xué)公式,所以我盡可能用最簡單的數(shù)學(xué)符號來描述震桶。當(dāng)然可能不夠嚴(yán)謹(jǐn)休傍,但是我覺得更容易看懂。
然后求1-p的值:
p是一個關(guān)于變量 w的函數(shù)蹲姐,我們對p求導(dǎo)磨取,通過鏈?zhǔn)角髮?dǎo)法則,慢慢展開可以得:
上面都是我們做的準(zhǔn)備工作柴墩,總之我們得記酌ρ帷:?
并且可以知道?
下面我們正式開始對F(w)求導(dǎo),求導(dǎo)的時候請始終記住拐邪,我們的變量只有w慰毅,其他的什么都是已知的,可以看做常數(shù)扎阶。
終于汹胃,我們求出了梯度?的表達(dá)式了,現(xiàn)在我們再來看看它長什么樣子:
它是如此簡潔優(yōu)雅东臀,這就是我們選取sigmoid函數(shù)的原因之一着饥。當(dāng)然我們也能夠把p再展開,即:
八惰赋、梯度下降法(GD)與隨機(jī)梯度下降法(SGD)
現(xiàn)在我們已經(jīng)解出了損失函數(shù)F(w)在任意 w處的梯度了宰掉,可是我們怎么算出來呢? 回到之前的問題赁濒,我們現(xiàn)在要求損失函數(shù)取最大值時候的
的值:
梯度下降法(Gradient Descent)轨奄,可以用來解決這個問題。核心思想就是先隨便初始化一個拒炎,然后給定一個步長?
挪拟,通過不斷地修改
?->
,從而最后靠近到達(dá)取得最大值的點击你,即不斷進(jìn)行下面的迭代過程玉组,直到達(dá)到指定次數(shù)谎柄,或者梯度等于0為止。
隨機(jī)梯度下降法(Stochastic Gradient Descent)惯雳,如果我們能夠在每次更新過程中朝巫,加入一點點噪聲擾動,可能會更加快速地逼近最優(yōu)值石景。在SGD中劈猿,我們不直接使用,而是采用另一個輸出為隨機(jī)變量的替代函數(shù)?
當(dāng)然鸵钝,這個替代函數(shù)G(w)需要滿足它的期望值等糙臼,相當(dāng)于這個函數(shù)圍繞著
的輸出值隨機(jī)波動。
在這里我先解釋一個問題:為什么可以用梯度下降法恩商?
因為邏輯回歸的損失函數(shù)L是一個連續(xù)的凸函數(shù)(conveniently convex)。這樣的函數(shù)的特征是必逆,它只會有一個全局最優(yōu)的點怠堪,不存在局部最優(yōu)。對于GD跟SGD最大的潛在問題就是它們可能會陷入局部最優(yōu)名眉。然而這個問題在邏輯回歸里面就不存在了粟矿,因為它的損失函數(shù)的良好特性,導(dǎo)致它并不會有好幾個局部最優(yōu)损拢。當(dāng)我們的GD跟SGD收斂以后陌粹,我們得到的極值點一定就是全局最優(yōu)的點,因此我們可以放心地用GD跟SGD來求解福压。
好了掏秩,那我們要怎么實現(xiàn)學(xué)習(xí)算法呢?其實很簡單荆姆,注意我們GD求導(dǎo)每次都耿直地用到了所有的樣本點蒙幻,從1一直到N都參與梯度計算。
在SGD中胆筒,我們每次只要均勻地邮破、隨機(jī)選取其中一個樣本,用它代表整體樣本,即把它的值乘以N仆救,就相當(dāng)于獲得了梯度的無偏估計值抒和,即?
因此SGD的更新公式為:
這樣我們前面的求和就沒有了,同時都是常數(shù)彤蔽,N的值剛好可以并入
當(dāng)中,因此SGD的迭代更新公式為:
其中是對所有樣本隨機(jī)抽樣的一個結(jié)果摧莽。
九、邏輯回歸的可解釋性
邏輯回歸最大的特點就是可解釋性很強(qiáng)铆惑。
在模型訓(xùn)練完成之后范嘱,我們獲得了一組n維的權(quán)重向量 w 跟偏差 b送膳。
對于權(quán)重向量 w,它的每一個維度的值丑蛤,代表了這個維度的特征對于最終分類結(jié)果的貢獻(xiàn)大小叠聋。假如這個維度是正,說明這個特征對于結(jié)果是有正向的貢獻(xiàn)受裹,那么它的值越大碌补,說明這個特征對于分類為正起到的作用越重要。
對于偏差b (Bias)棉饶,一定程度代表了正負(fù)兩個類別的判定的容易程度厦章。假如b是0,那么正負(fù)類別是均勻的照藻。如果b大于0袜啃,說明它更容易被分為正類,反之亦然幸缕。
根據(jù)邏輯回歸里的權(quán)重向量在每個特征上面的大小群发,就能夠?qū)τ诿總€特征的重要程度有一個量化的清楚的認(rèn)識,這就是為什么說邏輯回歸模型有著很強(qiáng)的解釋性的原因发乔。
十熟妓、決策邊界
補(bǔ)充評論里的一個問題,邏輯回歸的決策邊界是否是線性的栏尚,相當(dāng)于問曲線:
是不是的線性的起愈,我們可以稍微化簡一下上面的曲線公式,得到:
我們得到了一個等價的曲線译仗,顯然它是一個超平面(它在數(shù)據(jù)是二維的情況下是一條直線)抬虽。
十一、總結(jié)
終于一切都搞清楚了古劲,現(xiàn)在我們來理一理思路斥赋,首先邏輯回歸模型長這樣:
其中我們不知道的量是w,假設(shè)我們已經(jīng)訓(xùn)練好了一個?, 我們用模型來判斷
的標(biāo)簽?zāi)夭亢芎唵伟探#苯訉?img class="math-inline" src="https://math.jianshu.com/math?formula=x_i" alt="x_i" mathimg="1">代入y中,求出來的值就是
的標(biāo)簽是1的概率闷堡,如果概率大于0.5隘膘,那么我們認(rèn)為它就是1類,否則就是0類杠览。
那怎么得到呢弯菊?
如果采用隨機(jī)梯度下降法的話,我們首先隨機(jī)產(chǎn)生一個w的初始值?,然后通過公式不斷迭代從而求得
的值:
每次迭代都從所有樣本中隨機(jī)抽取一個來代入上述方程踱阿。
出處:https://zhuanlan.zhihu.com/p/44591359