线性回归和logistic回归
轉(zhuǎn)自:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html
紅字處是個(gè)人的理解1 摘要
????? 本報(bào)告是在學(xué)習(xí)斯坦福大學(xué)機(jī)器學(xué)習(xí)課程前四節(jié)加上配套的講義后的總結(jié)與認(rèn)識。前四節(jié)主要講述了回歸問題,回歸屬于有監(jiān)督學(xué)習(xí)中的一種方法。該方法的核心思想是從連續(xù)型統(tǒng)計(jì)數(shù)據(jù)中得到數(shù)學(xué)模型,然后將該數(shù)學(xué)模型用于預(yù)測或者分類。該方法處理的數(shù)據(jù)可以是多維的。
???? 講義最初介紹了一個(gè)基本問題,然后引出了線性回歸的解決方法,然后針對誤差問題做了概率解釋。之后介紹了logistic回歸。最后上升到理論層次,提出了一般回歸。
2 問題引入
???? 這個(gè)例子來自http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html
???? 假設(shè)有一個(gè)房屋銷售的數(shù)據(jù)如下:
| 面積(m^2) | 銷售價(jià)錢(萬元) |
| 123 | 250 |
| 150 | 320 |
| 87 | 160 |
| 102 | 220 |
| … | … |
???? 這個(gè)表類似于北京5環(huán)左右的房屋價(jià)錢,我們可以做出一個(gè)圖,x軸是房屋的面積。y軸是房屋的售價(jià),如下:
?????
???? 如果來了一個(gè)新的面積,假設(shè)在銷售價(jià)錢的記錄中沒有的,我們怎么辦呢?
???? 我們可以用一條曲線去盡量準(zhǔn)的擬合這些數(shù)據(jù),然后如果有新的輸入過來,我們可以在將曲線上這個(gè)點(diǎn)對應(yīng)的值返回。如果用一條直線去擬合,可能是下面的樣子:
?????
???? 綠色的點(diǎn)就是我們想要預(yù)測的點(diǎn)。
???? 首先給出一些概念和常用的符號。
?????房屋銷售記錄表:訓(xùn)練集(training set)或者訓(xùn)練數(shù)據(jù)(training data), 是我們流程中的輸入數(shù)據(jù),一般稱為x
?????房屋銷售價(jià)錢:輸出數(shù)據(jù),一般稱為y
?????擬合的函數(shù)(或者稱為假設(shè)或者模型):一般寫做 y = h(x)
?????訓(xùn)練數(shù)據(jù)的條目數(shù)(#training set),:一條訓(xùn)練數(shù)據(jù)是由一對輸入數(shù)據(jù)和輸出數(shù)據(jù)組成的輸入數(shù)據(jù)的維度n (特征的個(gè)數(shù),#features)
???? 這個(gè)例子的特征是兩維的,結(jié)果是一維的。然而回歸方法能夠解決特征多維,結(jié)果是一維多離散值或一維連續(xù)值的問題。
3 學(xué)習(xí)過程
???? 下面是一個(gè)典型的機(jī)器學(xué)習(xí)的過程,首先給出一個(gè)輸入數(shù)據(jù),我們的算法會通過一系列的過程得到一個(gè)估計(jì)的函數(shù),這個(gè)函數(shù)有能力對沒有見過的新數(shù)據(jù)給出一個(gè)新的估計(jì),也被稱為構(gòu)建一個(gè)模型。就如同上面的線性回歸函數(shù)。
?????
4 線性回歸
???? 線性回歸假設(shè)特征和結(jié)果滿足線性關(guān)系。其實(shí)線性關(guān)系的表達(dá)能力非常強(qiáng)大,每個(gè)特征對結(jié)果的影響強(qiáng)弱可以由前面的參數(shù)體現(xiàn),而且每個(gè)特征變量可以首先映射到一個(gè)函數(shù),然后再參與線性計(jì)算。這樣就可以表達(dá)特征與結(jié)果之間的非線性關(guān)系。
???? 我們用X1,X2..Xn 去描述feature里面的分量,比如x1=房間的面積,x2=房間的朝向,等等,我們可以做出一個(gè)估計(jì)函數(shù):
?????
???? θ在這兒稱為參數(shù),在這的意思是調(diào)整feature中每個(gè)分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。為了如果我們令X0 = 1,就可以用向量的方式來表示了:
?????
???? 我們程序也需要一個(gè)機(jī)制去評估我們θ是否比較好,所以說需要對我們做出的h函數(shù)進(jìn)行評估,一般這個(gè)函數(shù)稱為損失函數(shù)(loss function)或者錯(cuò)誤函數(shù)(error function),描述h函數(shù)不好的程度,在下面,我們稱這個(gè)函數(shù)為J函數(shù)
???? 在這兒我們可以認(rèn)為錯(cuò)誤函數(shù)如下:
?????
???? 這個(gè)錯(cuò)誤估計(jì)函數(shù)是去對x(i)的估計(jì)值與真實(shí)值y(i)差的平方和作為錯(cuò)誤估計(jì)函數(shù),前面乘上的1/2是為了在求導(dǎo)的時(shí)候,這個(gè)系數(shù)就不見了。
???? 至于為何選擇平方和作為錯(cuò)誤估計(jì)函數(shù),講義后面從概率分布的角度講解了該公式的來源。
???? 如何調(diào)整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一種完全是數(shù)學(xué)描述的方法,和梯度下降法。
5 梯度下降法
???? 在選定線性回歸模型后,只需要確定參數(shù)θ,就可以將模型用來預(yù)測。然而θ需要在J(θ)最小的情況下才能確定。因此問題歸結(jié)為求極小值問題,使用梯度下降法。梯度下降法最大的問題是求得有可能是全局極小值,這與初始點(diǎn)的選取有關(guān)。
???? 梯度下降法是按下面的流程進(jìn)行的:
???? 1)首先對θ賦值,這個(gè)值可以是隨機(jī)的,也可以讓θ是一個(gè)全零的向量。
???? 2)改變θ的值,使得J(θ)按梯度下降的方向進(jìn)行減少。
???? 梯度方向由J(θ)對θ的偏導(dǎo)數(shù)確定,
由于求的是極小值,因此梯度方向是偏導(dǎo)數(shù)的反方向。結(jié)果為
??????????
???? 迭代更新的方式有兩種,一種是批梯度下降,也就是對全部的訓(xùn)練數(shù)據(jù)求得誤差后再對θ進(jìn)行更新,另外一種是增量梯度下降,每掃描一步都要對θ進(jìn)行更新。前一種方法能夠不斷收斂,后一種方法結(jié)果可能不斷在收斂處徘徊。
???? 一般來說,梯度下降法收斂速度還是比較慢的。
???? 另一種直接計(jì)算結(jié)果的方法是最小二乘法。
6 最小二乘法
???? 將訓(xùn)練特征表示為X矩陣,結(jié)果表示成y向量,仍然是線性回歸模型,誤差函數(shù)不變。那么θ可以直接由下面公式得出
令J(θ) = 0得
???? 但此方法要求X是列滿秩的,而且求矩陣的逆比較慢。
7 選用誤差函數(shù)為平方和的概率解釋
???? 假設(shè)根據(jù)特征的預(yù)測結(jié)果與實(shí)際結(jié)果有誤差,那么預(yù)測結(jié)果和真實(shí)結(jié)果滿足下式:
???? 一般來講,誤差滿足平均值為0的高斯分布,也就是正態(tài)分布。那么x和y的條件概率也就是
???? 這樣就估計(jì)了一條樣本的結(jié)果概率,然而我們期待的是模型能夠在全部樣本上預(yù)測最準(zhǔn),也就是概率積最大。注意這里的概率積是概率密度函數(shù)積,連續(xù)函數(shù)的概率密度函數(shù)與離散值的概率函數(shù)不同。這個(gè)概率積成為最大似然估計(jì)。我們希望在最大似然估計(jì)得到最大值時(shí)確定θ。那么需要對最大似然估計(jì)公式求導(dǎo),求導(dǎo)結(jié)果既是
??????????
???? 這就解釋了為何誤差函數(shù)要使用平方和。
???? 當(dāng)然推導(dǎo)過程中也做了一些假定,但這個(gè)假定符合客觀規(guī)律。
8 帶權(quán)重的線性回歸
???? 上面提到的線性回歸的誤差函數(shù)里系統(tǒng)都是1,沒有權(quán)重。帶權(quán)重的線性回歸加入了權(quán)重信息。
???? 基本假設(shè)是
??????????
???? 其中假設(shè)符合公式
???????????????
???? 其中x是要預(yù)測的特征,這樣假設(shè)的道理是離x越近的樣本權(quán)重越大,越遠(yuǎn)的影響越小。這個(gè)公式與高斯分布類似,但不一樣,因?yàn)椴皇请S機(jī)變量。
???? 此方法成為非參數(shù)學(xué)習(xí)算法,因?yàn)檎`差函數(shù)隨著預(yù)測值的不同而不同,這樣θ無法事先確定,預(yù)測一次需要臨時(shí)計(jì)算,感覺類似KNN。
9 分類和logistic回歸
???? 一般來說,回歸不用在分類問題上,因?yàn)榛貧w是連續(xù)型模型,而且受噪聲影響比較大。如果非要應(yīng)用進(jìn)入,可以使用logistic回歸。
???? logistic回歸本質(zhì)上是線性回歸,只是在特征到結(jié)果的映射中加入了一層函數(shù)映射,即先把特征線性求和,然后使用函數(shù)g(z)將最為假設(shè)函數(shù)來預(yù)測。g(z)可以將連續(xù)值映射到0和1上。
???? logistic回歸的假設(shè)函數(shù)如下,線性回歸假設(shè)函數(shù)只是。
???? logistic回歸用來分類0/1問題,也就是預(yù)測結(jié)果屬于0或者1的二值分類問題。這里假設(shè)了二值滿足伯努利分布,也就是
???? 當(dāng)然假設(shè)它滿足泊松分布、指數(shù)分布等等也可以,只是比較復(fù)雜,后面會提到線性回歸的一般形式。
???? 與第7節(jié)一樣,仍然求的是最大似然估計(jì),然后求導(dǎo),得到迭代公式結(jié)果為
?????
logistic在梯度下降的時(shí)候卻取梯度的正方向,這是因?yàn)閘ogistic求的是最大值,而上面的線性回歸求的是Loss的最小值,所以去梯度的負(fù)方向。
???? 可以看到與線性回歸類似,只是換成了,而實(shí)際上就是經(jīng)過g(z)映射過來的。
10 牛頓法來解最大似然估計(jì)
???? 第7和第9節(jié)使用的解最大似然估計(jì)的方法都是求導(dǎo)迭代的方法,這里介紹了牛頓下降法,使結(jié)果能夠快速的收斂。
Andrew舉例很形象,
???? 當(dāng)要求解時(shí),如果f可導(dǎo),那么可以通過迭代公式
???? 來迭代求解最小值。
???? 當(dāng)應(yīng)用于求解最大似然估計(jì)的最大值時(shí),變成求解最大似然估計(jì)概率導(dǎo)數(shù)的問題。
目標(biāo)函數(shù)是l(?)
找到l’(?) = 0的點(diǎn)
這個(gè)點(diǎn)就局部最優(yōu)點(diǎn),但是不能直接求出
設(shè)f(?)= l’(?),也就是求f(?)=0
取一點(diǎn)?0,則f(?)的斜率l’’(?0) = l’(?0)/( ?i- ?0),所以?i?= ?0?- l’(?0)/ l’’(?0)
???? 那么迭代公式寫作
?????
???? 當(dāng)θ是向量時(shí),牛頓法可以使用下面式子表示
??????
???? 其中是n×n的Hessian矩陣。
???? 牛頓法收斂速度雖然很快,但求Hessian矩陣的逆的時(shí)候比較耗費(fèi)時(shí)間。
???? 當(dāng)初始點(diǎn)X0靠近極小值X時(shí),牛頓法的收斂速度是最快的。但是當(dāng)X0遠(yuǎn)離極小值時(shí),牛頓法可能不收斂,甚至連下降都保證不了。原因是迭代點(diǎn)Xk+1不一定是目標(biāo)函數(shù)f在牛頓方向上的極小點(diǎn)。
11 一般線性模型
???? 之所以在logistic回歸時(shí)使用
?????
???? 的公式是由一套理論作支持的。
???? 這個(gè)理論便是一般線性模型。
???? 首先,如果一個(gè)概率分布可以表示成
?????
???? 時(shí),那么這個(gè)概率分布可以稱作是指數(shù)分布。
???? 伯努利分布,高斯分布,泊松分布,貝塔分布,狄特里特分布都屬于指數(shù)分布。
???? 在logistic回歸時(shí)采用的是伯努利分布,伯努利分布的概率可以表示成
?????
???? 其中
?????
???? 得到
?????
???? 這就解釋了logistic回歸時(shí)為了要用這個(gè)函數(shù)。
???? 一般線性模型的要點(diǎn)是
???? 1)??滿足一個(gè)以為參數(shù)的指數(shù)分布,那么可以求得的表達(dá)式。
???? 2) 給定x,我們的目標(biāo)是要確定,大多數(shù)情況下,那么我們實(shí)際上要確定的是,而。(在logistic回歸中期望值是,因此h是;在線性回歸中期望值是,而高斯分布中,因此線性回歸中h=)。
???? 3)?
12 Softmax回歸
???? 最后舉了一個(gè)利用一般線性模型的例子。
???? 假設(shè)預(yù)測值y有k種可能,即y∈{1,2,…,k}
???? 比如k=3時(shí),可以看作是要將一封未知郵件分為垃圾郵件、個(gè)人郵件還是工作郵件這三類。
???? 定義
?????
???? 那么
?????
???? 這樣
?????
???? 即式子左邊可以有其他的概率表示,因此可以當(dāng)作是k-1維的問題。
???? 為了表示多項(xiàng)式分布表述成指數(shù)分布,我們引入T(y),它是一組k-1維的向量,這里的T(y)不是y,T(y)i表示T(y)的第i個(gè)分量。
?????
???? 應(yīng)用于一般線性模型,結(jié)果y必然是k中的一種。1{y=k}表示當(dāng)y=k的時(shí)候,1{y=k}=1。那么p(y)可以表示為
?????
???? 其實(shí)很好理解,就是當(dāng)y是一個(gè)值m(m從1到k)的時(shí)候,p(y)=,然后形式化了一下。
???? 那么
?????
???? 最后求得
?????
???? 而y=i時(shí)
?????
???? 求得期望值
???? 那么就建立了假設(shè)函數(shù),最后就獲得了最大似然估計(jì)
???? 對該公式可以使用梯度下降或者牛頓法迭代求解。
???? 解決了多值模型建立與預(yù)測問題。
?
?
學(xué)習(xí)總結(jié)
???? 該講義組織結(jié)構(gòu)清晰,思路獨(dú)特,講原因,也講推導(dǎo)。可貴的是講出了問題的基本解決思路和擴(kuò)展思路,更重要的是講出了為什么要使用相關(guān)方法以及問題根源。在看似具體的解題思路中能引出更為抽象的一般解題思路,理論化水平很高。
???? 該方法可以用在對數(shù)據(jù)多維分析和多值預(yù)測上,更適用于數(shù)據(jù)背后蘊(yùn)含某種概率模型的情景。
幾個(gè)問題
???? 一是采用迭代法的時(shí)候,步長怎么確定比較好
???? 而是最小二乘法的矩陣形式是否一般都可用
總結(jié)
以上是生活随笔為你收集整理的线性回归和logistic回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。