Classification and Representation
Classification
此小節(jié)主要講了哪些情況下需要使用分類模型扁达,以及為什么線性回歸模型不能很好的解決分類問(wèn)題。
Andrew舉了一個(gè)例子來(lái)說(shuō)明為什么線性回歸模型不能很好地解決分類問(wèn)題害淤。如下圖:
由上圖可知熊镣,如果我們要對(duì)tumor進(jìn)行分類(malignant or benign?)那么就需要設(shè)定一個(gè)閾值(threshold), 比如此例設(shè)定為0.5卑雁,當(dāng)y>=0.5時(shí),我們認(rèn)為就是1绪囱,即malignant测蹲,同理y<0.5時(shí),就認(rèn)為是0鬼吵,即benign扣甲。貌似也可以去做預(yù)測(cè)啊,我們接著看下幅圖:
當(dāng)我們的樣本數(shù)據(jù)有了新的數(shù)據(jù)后齿椅,我們的線性回歸模型曲線會(huì)調(diào)整角度文捶,但此時(shí),如果仍然以0.5為閾值的話媒咳,顯然有一部分?jǐn)?shù)據(jù)就會(huì)預(yù)測(cè)錯(cuò)誤粹排。
直觀上,從圖形上看也能看出來(lái)涩澡,線性模型的曲線(直線)很難很好的擬合樣本顽耳。
因此,在這節(jié)課開(kāi)始,將引入logistic regression射富。
另外有幾個(gè)概念膝迎,要知曉。
兩分類的問(wèn)題我們也叫做binary classification problem胰耗。而如果是更多分類類型限次,則叫做multi-class classification problem。
而在binary classification問(wèn)題中柴灯,通常分為0和1卖漫, 0代表negative class, 1代表positive class赠群。
Hypothesis Representation
sigmoid function
我們期望我們的模型輸出為0到1之間的數(shù)值羊始,從而可以分類為0或1.因此我們的模型需要滿足如下條件:
0<=h(θ)<=1
數(shù)學(xué)中有一個(gè)函數(shù)恰好可以實(shí)現(xiàn)這種操作,即給定一個(gè)參數(shù)查描,會(huì)輸出0~1之間的數(shù)值突委,這就是sigmoid function 或者叫做logistic function,這個(gè)function的定義如下:
下面我們可以把我們之前的線性模型的輸出結(jié)果作為參數(shù)傳遞給該sigmoid函數(shù)冬三,這樣其輸出就可以變?yōu)?~1之間的數(shù)值匀油。因此,將h(θ)代入z就有如下公式:
最終其函數(shù)曲線如下:
hypothesis interpretation
我們sigmoid化后的假設(shè)其輸出是一個(gè)0~1的數(shù)值勾笆,而這個(gè)數(shù)值顯示的其實(shí)是一個(gè)概率钧唐。這個(gè)概率就是預(yù)測(cè)y=1的概率。那么匠襟,相應(yīng)的y=0的概率就是1-h(x)钝侠。我們也可以如下表示:
統(tǒng)計(jì)概率的表示法,
P(y =1 | x; θ)
表示當(dāng)取值為x酸舍,且this probability is parameterized by θ帅韧,其輸出y為1的概率。
Decision Boundary
此小節(jié)主要講了什么是decision boundary啃勉,以及它是怎么產(chǎn)生的忽舟,并從直覺(jué)上理解這個(gè)東西。
從上一小節(jié)淮阐,我們已經(jīng)知道sigmoid函數(shù)的樣子叮阅,從圖形中可以看到當(dāng)橫軸坐標(biāo)大于等于0時(shí),其值大于等于0.5泣特,也就是說(shuō)輸出為1的概率大于等于0.5浩姥,因此我們就可以分類為1;同樣道理状您,當(dāng)其橫坐標(biāo)小于0時(shí)勒叠,我們就可以分類為0兜挨。而上一節(jié)我們知道這個(gè)橫坐標(biāo)實(shí)際是我們的h(x)函數(shù)的輸出。所以可以得出如下結(jié)論:
當(dāng)如下公式成立時(shí)眯分,就認(rèn)為概率>=0.5拌汇,也就歸類為1:
當(dāng)如下公式成立時(shí),就認(rèn)為概率<0.5弊决,也就歸類為0:
接著噪舀,Andrew舉了一個(gè)例子,來(lái)讓我們理解什么是decision boundary飘诗。
這里實(shí)際假設(shè)我們已經(jīng)訓(xùn)練好了這個(gè)模型与倡,其theta值為[-3; 1; 1]的vector,這是我們要根據(jù)上邊的公式就會(huì)得出如下結(jié)論:
當(dāng) -3+x1+x2 >= 0 疚察,我們就會(huì)認(rèn)為y=1;
同樣當(dāng)-3 +x1 + x2 < 0時(shí)仇奶, 我們就會(huì)認(rèn)為y=0.
這里根據(jù) x1 + x2 = 3來(lái)畫(huà)一條線貌嫡,這條線其實(shí)就是所謂的decision boundary,如上圖所示该溯,在線上的我們就認(rèn)為是1岛抄,此直線以下的就認(rèn)為是0。直觀上也可以非常好的理解狈茉。
當(dāng)然夫椭,在實(shí)際工程應(yīng)用時(shí),可能不會(huì)如此簡(jiǎn)單氯庆,邊界可能不會(huì)如此規(guī)則的通過(guò)一條直線來(lái)劃分蹭秋。它也有可能如下圖所示非直線邊界:
正如我們之前的課程講到的,可以使用特征的不同choice堤撵,比如可以使用高階多項(xiàng)式的方式(higher order polynomial regression)仁讨。這里實(shí)際就是使用了二次多項(xiàng)式函數(shù),theta取值為[-1; 0; 0; 1; 1]時(shí)实昨,我們可以得出其邊界方程洞豁,實(shí)際如上圖所示的圓圈。
更進(jìn)一步的荒给,可能是不規(guī)則的圖形丈挟,如下圖所示:
總之,從這些例子可以看出志电,只要我們找到了θ曙咽,并且選擇對(duì)應(yīng)的feature和feature choice,我們就可以畫(huà)出一個(gè)邊界來(lái)區(qū)分0挑辆, 1值桐绒,從而實(shí)現(xiàn)了分類夺脾。所以關(guān)鍵點(diǎn)就在于找到這個(gè)θ和feature choice蚤蔓,得出這個(gè)邊界公式键耕,也就是我們通常所說(shuō)的算法。
Cost Function
此小節(jié)主要講了針對(duì)logistic regression模型页滚,我們應(yīng)該使用什么樣的cost function烁竭。
首先菲茬,Andrew講了如果要使用原先線性回歸模型的cost function,就會(huì)導(dǎo)致該cost function為非凸函數(shù)(non-convex)派撕,這樣我們找到的就是局部最優(yōu)值婉弹,而非全局最優(yōu)值,如下圖左邊的圖所示终吼,而我們的目標(biāo)是找到一個(gè)凸函數(shù)作為cost function镀赌,如下圖右邊的圖所示:
所以,針對(duì)logistic regression模型际跪,我們采用如下cost function:
當(dāng)y=1時(shí)商佛,其cost function的函數(shù)圖如下:
當(dāng)y=1時(shí),實(shí)際就是說(shuō)我們的樣本的輸出值y均為1的時(shí)候姆打,我們通過(guò)這個(gè)cost function來(lái)訓(xùn)練我們的模型良姆,這時(shí)候,如果我們的cost function趨近于0幔戏,那么相應(yīng)的模型輸出值趨近于1玛追,也就越接近我們的實(shí)際情況,相反闲延,h(x)輸出如果趨近于0痊剖,那么cost function就會(huì)趨于無(wú)窮大,也就懲罰了該算法垒玲。
當(dāng)y=0時(shí)邢笙,其函數(shù)圖如下:
同樣,當(dāng)h(x)輸出越接近1侍匙,其cost function就越趨近于無(wú)窮大氮惯,這就會(huì)懲罰該算法。
Simplified Cost Function and Gradient Decent
本小節(jié)主要講述了簡(jiǎn)化后的cost function想暗,以及如何針對(duì)這個(gè)cost function做梯度下降妇汗。
cost function
在上一小節(jié),我們已經(jīng)知道Cost function分為兩種情況说莫,一種是y=1杨箭,一種是y=0。但也正因?yàn)橹挥袃煞N情況储狭,所以我們可以通過(guò)一個(gè)數(shù)學(xué)小技巧來(lái)將兩個(gè)公式合并成一個(gè)公式互婿,如下:
課上Andrew已經(jīng)詳細(xì)講解了驗(yàn)證y等于0和1的過(guò)程捣郊,不再詳述。
接下來(lái)我們將Cost function代入J(θ), 再看下最終的J(θ)的樣子,如下所示:
我們還可以將這個(gè)公式vectorized:
首先慈参,對(duì)于線性回歸的hypothesis呛牲,我們針對(duì)每個(gè)樣本的variables可以通過(guò)如下公式計(jì)算其輸出值h驮配,其中x(i)為單個(gè)樣本的向量:
由此娘扩,我們可以得出整體輸出的向量h,其公式如下:
注意牺陶,這里的X是大寫(xiě),表示所有樣本的矩陣麻削,大家可以推導(dǎo)下匿沛。
之后,由于我們需要sigmoid該函數(shù)腿准,從而形成新的假設(shè)吞加,如下:
h=g(Xθ)
最終J(θ) vectorized之后如下圖:
Gradient Decent
我們最終的目的依然是尋找J(θ)的最小值,同樣的尽狠,我們?nèi)匀豢梢杂锰荻认陆档姆椒▉?lái)尋找這個(gè)最小值衔憨。前面,我們已經(jīng)證明過(guò)了通過(guò)使用這個(gè)cost function我們可以得到凸函數(shù)袄膏,所以是可以找到全局最小值的践图。
函數(shù)的梯度下降過(guò)程其實(shí)是類似的,都是通過(guò)迭代的方式不斷計(jì)算新的θ值沉馆,以使得J(θ)不斷減小码党。在此過(guò)程中,同樣需要通過(guò)求J(θ)的導(dǎo)數(shù)斥黑,原理跟線性回歸類似揖盘。求導(dǎo)之后,最終迭代過(guò)程如下圖所示:
可以看出心赶,這個(gè)梯度下降的過(guò)程和線性回歸模型非常類似扣讼,但是這里的hθ(x)是sigmoid function,而不是原先的θ'X缨叫。
另外椭符,該梯度下降公式也可以vectorized化荔燎,從而不需要每次都需要一個(gè)加總的循環(huán)去計(jì)算,如下:
需要注意的是當(dāng)我們?cè)诤罄m(xù)使用fminunc時(shí)销钝,gradient只需要計(jì)算??/??θ*J(θ), 這個(gè)求導(dǎo)展開(kāi)后是如下公式:
即沒(méi)有l(wèi)earning rate有咨,但是需要除以m
最后,F(xiàn)eature Scaling同樣適用于logistic regression模型蒸健。
Advanced Optimization
此小節(jié)主要講了一些除梯度下降以外的高級(jí)優(yōu)化方法座享,而這些優(yōu)化的算法都已經(jīng)在函數(shù)庫(kù)中實(shí)現(xiàn),我們只需要知道如何調(diào)用即可似忧。
優(yōu)化的目標(biāo)
首先要明確我們的優(yōu)化目標(biāo)是選擇J(θ)的最小值渣叛。
先來(lái)看下原先梯度下降的過(guò)程:
其中,而如果我們有了J(θ)和J(θ)的導(dǎo)數(shù)盯捌,我們可以利用如下方法來(lái)快速找到最優(yōu)值淳衙。
- conjugate gradient
- BFGS
-
L-BFGS
Octave以及其它一些語(yǔ)言的庫(kù)中一般都有提供這些高級(jí)算法的實(shí)現(xiàn),所以一般的我們只需要直接調(diào)用饺著。例子如下:
fminunc
總體來(lái)說(shuō)箫攀,就是需要我們自己寫(xiě)一個(gè)cost function,并返回J(θ)值即jVal幼衰,以及gradient vector靴跛。然后通過(guò)調(diào)用fminunc函數(shù)我們就可以自己選取這些高級(jí)的算法并自動(dòng)計(jì)算出收斂后的θ值,以及J(θ)值渡嚣,和是否收斂的標(biāo)志位梢睛,如下圖所示:
octave execute fminunc
注意optimset是用于設(shè)置函數(shù)的參數(shù),這里使用參數(shù)'GradObj' 為 ‘On'表明我們的cost function會(huì)提供decent object严拒, MaxIter 為100表明我們最多只迭代100次扬绪。
傳遞函數(shù)的時(shí)候通過(guò)@funcname來(lái)傳遞竖独。
需要注意的是initialTheta的維數(shù)必須>=2
Multiclass Classification
此小節(jié)主要講述了什么是multiclass classification裤唠,并且著重講了通過(guò)one-vs-all方法來(lái)獲取不同類別的概率的方法。實(shí)際上就是給定Feature x莹痢,計(jì)算其為某個(gè)特定分類i的概率种蘸,即P(y =i | x; θ)
當(dāng)有多個(gè)分類時(shí),我們會(huì)計(jì)算所有分類的概率竞膳,然后選取最大值航瞭,即可能性最大的分類作為輸出。
Solving the problem of Overfitting
The Problem of Overfitting
此小節(jié)主要講了過(guò)擬合問(wèn)題(Overfitting)
首先Andrew講了在機(jī)器學(xué)習(xí)訓(xùn)練過(guò)程中存在的三種情況:
underfitting(high bias)坦辟, just right刊侯, overfitting(high variance)
過(guò)擬合overfitting實(shí)際就是過(guò)于精確地去匹配了樣本,導(dǎo)致無(wú)法更一般化地去預(yù)測(cè)锉走。
解決過(guò)擬合主要有兩種方式:
- 減少Feature的數(shù)量:同樣有兩種方式一種是手工選取features滨彻;另外是通過(guò)算法自動(dòng)選取
-
Regularization正則化藕届,等待后續(xù)課程再看。
address overfitting.png
Cost Function
此小節(jié)主要講了如何去regularization亭饵,為什么這樣是有效果的休偶。
直覺(jué)上理解下,線性回歸模型中辜羊,當(dāng)feature很多踏兜,甚至還有很多高階多項(xiàng)式的時(shí)候,就可能產(chǎn)生過(guò)擬合現(xiàn)象八秃,而要減少這些features的影響就要盡量減少它們的權(quán)重碱妆,即讓?duì)茸冃。梢栽O(shè)想極端情況下昔驱,某些θ減小到0山橄,這時(shí)就可能退化成二次線性方程,曲線也就更加平滑舍悯。所以航棱,此時(shí)就避免了過(guò)擬合現(xiàn)象。而為了讓?duì)茸冃∶瘸模覀兛梢栽赾ost function中使用正則化技巧饮醇,課堂老師舉了個(gè)例子,讓J(θ)加一個(gè)1000*θ秕豫,這樣cost function為了最小朴艰,那么對(duì)應(yīng)的θ也就會(huì)變得很小。如下圖所示:
通常情況下混移,我們不知道應(yīng)該選取哪個(gè)θ來(lái)加到J(θ)當(dāng)中祠墅,因此我們會(huì)為所有的θ值統(tǒng)一乘一個(gè)數(shù),再加到J(θ)當(dāng)中歌径,也就得到了如下公式:
其中λ(lambda)叫做regularization parameter毁嗦,顯然,這個(gè)λ越大回铛,那么梯度下降后狗准,θ值就會(huì)越小,相對(duì)應(yīng)的項(xiàng)和feature影響的權(quán)重也就越小茵肃,但是要避免走向另外一個(gè)極端腔长,即如果λ非常大,想象一下那些多項(xiàng)式幾乎都為0验残,那么就成了underfitting了捞附。
這里有一個(gè)問(wèn)題就是λ如何選擇呢?
Regularized Linear Regression
此小節(jié)主要講了如何針對(duì)LR進(jìn)行正則化。
Gradient Decent Regularization
首先鸟召,看下梯度下降正則化之后是什么樣:
需要注意的是:
- θ0是不需要正則化的想鹰,所以單獨(dú)拿了出來(lái)
- 1- ??λ/m是必須要>0, 因?yàn)棣热绻?lt;=0就不對(duì)了。通常 ??λ/m是一個(gè)接近于1的數(shù)药版,比如0.99
-
如果使用微積分的話辑舷,我們可以證明最終求導(dǎo)后的公式如下:
gradient decent with regularization
變換一下,如下:
gradient decent with regularization
Normal Equation with Regularization
作為對(duì)比槽片,首先看下之前我們的Normal Equation公式
通過(guò)正則化后的J(θ)重新求導(dǎo)并set為0何缓,就會(huì)得到如下公式:
- L是一個(gè)接近于單元矩陣的n+1維的方陣,只是最左上角設(shè)為0
- 針對(duì)沒(méi)有正則化的normal equation还栓,我們之前講過(guò)有些矩陣是沒(méi)有逆矩陣的碌廓,因此如果使用inv函數(shù)求逆矩陣的時(shí)候可能就行不通,但是通過(guò)正則化之后剩盒,可以證明其肯定會(huì)有逆矩陣谷婆,因此對(duì)于無(wú)法求解逆矩陣的情況,也會(huì)通過(guò)正則化的方式來(lái)解決辽聊。
Regularized Logistic Regression
通過(guò)正則化纪挎,我們同樣可以解決Logistic Regression的過(guò)擬合問(wèn)題,如下圖所示:
先看下原先的J(θ)公式:
正則化之后如下:
針對(duì)這個(gè)新的J(θ)跟匆, 我們可以通過(guò)如下方式進(jìn)行梯度下降异袄,可以看出跟LR是非常相似的,但是那個(gè)h(x)已經(jīng)不是原先的θ'x玛臂, 而是sigmoid化之后的函數(shù)烤蜕。
另外,我們同樣可以使用之前課程所說(shuō)的高級(jí)優(yōu)化方法(通過(guò)調(diào)用fminunc)迹冤,同樣我們需要提供一個(gè)計(jì)算cost function的函數(shù)讽营,如下圖所示:
-
注意:上邊的公式有誤,gradient(j)的公式應(yīng)當(dāng)如下(是+λ/m*θj):
regularized gradient 注意在計(jì)算jVal的時(shí)候需要加正則化的term
計(jì)算gradient的時(shí)候我們不需要learning rate泡徙,只需要計(jì)算J(θ)的導(dǎo)數(shù)
對(duì)于gradient(1)橱鹏, 我們需要單獨(dú)計(jì)算,不需要正則化