序言
本文盡可能的不涉及到繁雜的數(shù)學(xué)公式,把面試中常問的模型核心點(diǎn),用比較通俗易懂但又不是專業(yè)性的語言進(jìn)行描述。
希望可以幫助大家在找工作時(shí)提綱挈領(lǐng)的復(fù)習(xí)最核心的內(nèi)容,或是在準(zhǔn)備的過程中抓住每個(gè)模型的重點(diǎn)。
實(shí)戰(zhàn)環(huán)境說明:
Python 2.7;
Sklearn 0.19.0;
graphviz 0.8.1 決策樹可視化。
一、決策樹
▌1.1 原理
顧名思義,決策樹就是用一棵樹來表示我們的整個(gè)決策過程。這棵樹可以是二叉樹(比如 CART 只能是二叉樹),也可以是多叉樹(比如 ID3、C4.5 可以是多叉樹或二叉樹)。
根節(jié)點(diǎn)包含整個(gè)樣本集,每個(gè)葉節(jié)都對應(yīng)一個(gè)決策結(jié)果(注意,不同的葉節(jié)點(diǎn)可能對應(yīng)同一個(gè)決策結(jié)果),每一個(gè)內(nèi)部節(jié)點(diǎn)都對應(yīng)一次決策過程或者說是一次屬性測試。從根節(jié)點(diǎn)到每個(gè)葉節(jié)點(diǎn)的路徑對應(yīng)一個(gè)判定測試序列。
舉個(gè)例子:
就像上面這個(gè)例子,訓(xùn)練集由三個(gè)特征:outlook(天氣),humidity(濕度),windy(是否有風(fēng))。
那么我們該如何選擇特征對訓(xùn)練集進(jìn)行劃分那?連續(xù)型特征(比如濕度)劃分的閾值又是如何確定的?
決策樹的生成就是不斷的選擇最優(yōu)的特征對訓(xùn)練集進(jìn)行劃分,是一個(gè)遞歸的過程。遞歸返回的條件有三種:
(1)當(dāng)前節(jié)點(diǎn)包含的樣本屬于同一類別,無需劃分;
(2)當(dāng)前屬性集為空,或所有樣本在屬性集上取值相同,無法劃分;
(3)當(dāng)前節(jié)點(diǎn)包含樣本集合為空,無法劃分。
1.2 ID3、C4.5、CART
這三個(gè)是非常著名的決策樹算法。簡單粗暴來說,ID3 使用信息增益作為選擇特征的準(zhǔn)則;C4.5 使用信息增益比作為選擇特征的準(zhǔn)則;CART 使用 Gini 指數(shù)作為選擇特征的準(zhǔn)則。
ID3
熵表示的是數(shù)據(jù)中包含的信息量大小。熵越小,數(shù)據(jù)的純度越高,也就是說數(shù)據(jù)越趨于一致,這是我們希望的劃分之后每個(gè)子節(jié)點(diǎn)的樣子。
信息增益 = 劃分前熵 - 劃分后熵。信息增益越大,則意味著使用屬性 a 來進(jìn)行劃分所獲得的 “純度提升” 越大 **。也就是說,用屬性 a 來劃分訓(xùn)練集,得到的結(jié)果中純度比較高。
ID3 僅僅適用于二分類問題。ID3 僅僅能夠處理離散屬性。
C4.5
C4.5 克服了 ID3 僅僅能夠處理離散屬性的問題,以及信息增益偏向選擇取值較多特征的問題,使用信息增益比來選擇特征。信息增益比 = 信息增益 / 劃分前熵選擇信息增益比最大的作為最優(yōu)特征。
C4.5 處理連續(xù)特征是先將特征取值排序,以連續(xù)兩個(gè)值中間值作為劃分標(biāo)準(zhǔn)。嘗試每一種劃分,并計(jì)算修正后的信息增益,選擇信息增益最大的分裂點(diǎn)作為該屬性的分裂點(diǎn)。
CART
CART 與 ID3,C4.5 不同之處在于 CART 生成的樹必須是二叉樹。也就是說,無論是回歸還是分類問題,無論特征是離散的還是連續(xù)的,無論屬性取值有多個(gè)還是兩個(gè),內(nèi)部節(jié)點(diǎn)只能根據(jù)屬性值進(jìn)行二分。
CART 的全稱是分類與回歸樹。從這個(gè)名字中就應(yīng)該知道,CART 既可以用于分類問題,也可以用于回歸問題。
回歸樹中,使用平方誤差最小化準(zhǔn)則來選擇特征并進(jìn)行劃分。每一個(gè)葉子節(jié)點(diǎn)給出的預(yù)測值,是劃分到該葉子節(jié)點(diǎn)的所有樣本目標(biāo)值的均值,這樣只是在給定劃分的情況下最小化了平方誤差。
要確定最優(yōu)化分,還需要遍歷所有屬性,以及其所有的取值來分別嘗試劃分并計(jì)算在此種劃分情況下的最小平方誤差,選取最小的作為此次劃分的依據(jù)。由于回歸樹生成使用平方誤差最小化準(zhǔn)則,所以又叫做最小二乘回歸樹。
分類樹種,使用 Gini 指數(shù)最小化準(zhǔn)則來選擇特征并進(jìn)行劃分;
Gini 指數(shù)表示集合的不確定性,或者是不純度?;嶂笖?shù)越大,集合不確定性越高,不純度也越大。這一點(diǎn)和熵類似。另一種理解基尼指數(shù)的思路是,基尼指數(shù)是為了最小化誤分類的概率。
▌1.3 信息增益 vs 信息增益比
之所以引入了信息增益比,是由于信息增益的一個(gè)缺點(diǎn)。那就是:信息增益總是偏向于選擇取值較多的屬性。信息增益比在此基礎(chǔ)上增加了一個(gè)罰項(xiàng),解決了這個(gè)問題。
▌1.4 Gini 指數(shù) vs 熵
既然這兩個(gè)都可以表示數(shù)據(jù)的不確定性,不純度。那么這兩個(gè)有什么區(qū)別那?
Gini 指數(shù)的計(jì)算不需要對數(shù)運(yùn)算,更加高效;
Gini 指數(shù)更偏向于連續(xù)屬性,熵更偏向于離散屬性。
▌1.5 剪枝
決策樹算法很容易過擬合(overfitting),剪枝算法就是用來防止決策樹過擬合,提高泛華性能的方法。
剪枝分為預(yù)剪枝與后剪枝。
預(yù)剪枝是指在決策樹的生成過程中,對每個(gè)節(jié)點(diǎn)在劃分前先進(jìn)行評估,若當(dāng)前的劃分不能帶來泛化性能的提升,則停止劃分,并將當(dāng)前節(jié)點(diǎn)標(biāo)記為葉節(jié)點(diǎn)。
后剪枝是指先從訓(xùn)練集生成一顆完整的決策樹,然后自底向上對非葉節(jié)點(diǎn)進(jìn)行考察,若將該節(jié)點(diǎn)對應(yīng)的子樹替換為葉節(jié)點(diǎn),能帶來泛化性能的提升,則將該子樹替換為葉節(jié)點(diǎn)。
那么怎么來判斷是否帶來泛化性能的提升那?最簡單的就是留出法,即預(yù)留一部分?jǐn)?shù)據(jù)作為驗(yàn)證集來進(jìn)行性能評估。
▌1.6 總結(jié)
決策樹算法主要包括三個(gè)部分:特征選擇、樹的生成、樹的剪枝。常用算法有 ID3、C4.5、CART。
特征選擇。特征選擇的目的是選取能夠?qū)τ?xùn)練集分類的特征。特征選擇的關(guān)鍵是準(zhǔn)則:信息增益、信息增益比、Gini 指數(shù);
決策樹的生成。通常是利用信息增益最大、信息增益比最大、Gini 指數(shù)最小作為特征選擇的準(zhǔn)則。從根節(jié)點(diǎn)開始,遞歸的生成決策樹。相當(dāng)于是不斷選取局部最優(yōu)特征,或?qū)⒂?xùn)練集分割為基本能夠正確分類的子集;
決策樹的剪枝。決策樹的剪枝是為了防止樹的過擬合,增強(qiáng)其泛化能力。包括預(yù)剪枝和后剪枝。
二、隨機(jī)森林(Random Forest)
要說隨機(jī)森林就要先說 Bagging,要說 Bagging 就要先說集成學(xué)習(xí)。
▌2.1 集成學(xué)習(xí)方法
集成學(xué)習(xí)(ensemble learning)通過構(gòu)建并組合多個(gè)學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)。集成學(xué)習(xí)通過將多個(gè)學(xué)習(xí)器進(jìn)行結(jié)合,常獲得比單一學(xué)習(xí)器顯著優(yōu)越的泛化性能。
根據(jù)個(gè)體學(xué)習(xí)器是否是同類型的學(xué)習(xí)器(由同一個(gè)算法生成,比如 C4.5,BP 等),分為同質(zhì)和異質(zhì)。同質(zhì)的個(gè)體學(xué)習(xí)器又叫做基學(xué)習(xí)器,而異質(zhì)的個(gè)體學(xué)習(xí)器則直接成為個(gè)體學(xué)習(xí)器。
原則:要獲得比單一學(xué)習(xí)器更好的性能,個(gè)體學(xué)習(xí)器應(yīng)該好而不同。即個(gè)體學(xué)習(xí)器應(yīng)該具有一定的準(zhǔn)確性,不能差于弱學(xué)習(xí)器,并且具有多樣性,即學(xué)習(xí)器之間有差異。
根據(jù)個(gè)體學(xué)習(xí)器的生成方式,目前集成學(xué)習(xí)分為兩大類:
個(gè)體學(xué)習(xí)器之間存在強(qiáng)依賴關(guān)系、必須串行生成的序列化方法。代表是 Boosting;
個(gè)體學(xué)習(xí)器之間不存在強(qiáng)依賴關(guān)系、可同時(shí)生成的并行化方法。代表是 Bagging 和隨機(jī)森林(Random Forest)。
▌2.2 Bagging
前面提到,想要集成算法獲得性能的提升,個(gè)體學(xué)習(xí)器應(yīng)該具有獨(dú)立性。雖然 “獨(dú)立” 在現(xiàn)實(shí)生活中往往無法做到,但是可以設(shè)法讓基學(xué)習(xí)器盡可能的有較大的差異。
Bagging 給出的做法就是對訓(xùn)練集進(jìn)行采樣,產(chǎn)生出若干個(gè)不同的子集,再從每個(gè)訓(xùn)練子集中訓(xùn)練一個(gè)基學(xué)習(xí)器。由于訓(xùn)練數(shù)據(jù)不同,我們的基學(xué)習(xí)器可望具有較大的差異。
Bagging 是并行式集成學(xué)習(xí)方法的代表,采樣方法是自助采樣法,用的是有放回的采樣。初始訓(xùn)練集中大約有 63.2% 的數(shù)據(jù)出現(xiàn)在采樣集中。
Bagging 在預(yù)測輸出進(jìn)行結(jié)合時(shí),對于分類問題,采用簡單投票法;對于回歸問題,采用簡單平均法。
Bagging 優(yōu)點(diǎn):
高效。Bagging 集成與直接訓(xùn)練基學(xué)習(xí)器的復(fù)雜度同階;
Bagging 能不經(jīng)修改的適用于多分類、回歸任務(wù);
包外估計(jì)。使用剩下的樣本作為驗(yàn)證集進(jìn)行包外估計(jì)(out-of-bag estimate)。
Bagging 主要關(guān)注降低方差。(low variance)
▌2.3 隨機(jī)森林(Random Forest)
2.3.1 原理
隨機(jī)森林(Random Forest)是 Bagging 的一個(gè)變體。Ramdon Forest 在以決策樹為基學(xué)習(xí)器構(gòu)建 Bagging 集成的基礎(chǔ)上,進(jìn)一步在決策樹的訓(xùn)練過程中引入隨機(jī)屬性選擇。
原來決策樹從所有屬性中,選擇最優(yōu)屬性。Ramdom Forest 的每一顆決策樹中的每一個(gè)節(jié)點(diǎn),先從該節(jié)點(diǎn)的屬性集中隨機(jī)選擇 K 個(gè)屬性的子集,然后從這個(gè)屬性子集中選擇最優(yōu)屬性進(jìn)行劃分。
K 控制了隨機(jī)性的引入程度,是一個(gè)重要的超參數(shù)。
預(yù)測:
分類:簡單投票法;
回歸:簡單平均法。
2.3.2 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
由于每次不再考慮全部的屬性,而是一個(gè)屬性子集,所以相比于 Bagging 計(jì)算開銷更小,訓(xùn)練效率更高;
由于增加了屬性的擾動(dòng),隨機(jī)森林中基學(xué)習(xí)器的性能降低,使得在隨機(jī)森林在起始時(shí)候性能較差,但是隨著基學(xué)習(xí)器的增多,隨機(jī)森林通常會(huì)收斂于更低的泛化誤差,相比于 Bagging;
兩個(gè)隨機(jī)性的引入,使得隨機(jī)森林不容易陷入過擬合,具有很好的抗噪聲能力;
對數(shù)據(jù)的適應(yīng)能力強(qiáng),可以處理離散和連續(xù)的,無需要規(guī)范化;
可以得到變量的重要性, 基于 oob 誤分類率和基于 Gini 系數(shù)的變化。
缺點(diǎn):
在噪聲較大的時(shí)候容易過擬合。
三、AdaBoost
AdaBoost 是 Boosting 的代表,前面我們提到 Boosting 是集成學(xué)習(xí)中非常重要的一類串行化學(xué)習(xí)方法。
▌3.1 Boosting
Boosting 是指個(gè)體學(xué)習(xí)器之間存在強(qiáng)依賴關(guān)系,必須串行序列化生成的集成學(xué)習(xí)方法。他的思想來源是三個(gè)臭皮匠頂個(gè)諸葛亮。Boosting 意為提升,意思是希望將每個(gè)弱學(xué)習(xí)器提升為強(qiáng)學(xué)習(xí)器。
工作機(jī)制如下:
先從初始訓(xùn)練集中學(xué)習(xí)一個(gè)基學(xué)習(xí)器;
根據(jù)基學(xué)習(xí)器的表現(xiàn)對訓(xùn)練樣本分布進(jìn)行調(diào)整,使得先前基學(xué)習(xí)器做錯(cuò)的訓(xùn)練樣本在后續(xù)收到更多關(guān)注;
基于調(diào)整后的樣本分布來訓(xùn)練下一個(gè)基學(xué)習(xí)器;
如此反復(fù),直到基學(xué)習(xí)器數(shù)目達(dá)到 T,最終將這 T 個(gè)基學(xué)習(xí)器進(jìn)行加權(quán)結(jié)合。
對訓(xùn)練樣本分布調(diào)整,主要是通過增加誤分類樣本的權(quán)重,降低正確分類樣本的權(quán)重。
Boosting 關(guān)注的主要是降低偏差。(low bias)
▌3.2 AdaBoost 原理
面臨兩個(gè)問題:
(1)在每一輪,如何改變訓(xùn)練數(shù)據(jù)的概率分布或者權(quán)值分布。(也可以重采樣,但是 AdaBoost 沒這么做);
(2)如何將弱分類器組合成強(qiáng)分類器。
AdaBoost 的做法:
(1)提高那些被前一輪弱分類器錯(cuò)誤分類樣本的權(quán)值,降低那些被正確分類的樣本的權(quán)值。這樣一來,那些沒有得到正確分類的數(shù)據(jù),由于其權(quán)值的加大而受到后一輪弱分類器的關(guān)注;
(2)采用加權(quán)多數(shù)表決。具體的,加大分類錯(cuò)誤率低的分類器的權(quán)值,使其在表決中起較大作用,減少分類誤差率大的弱分類器的權(quán)值,使其在表決中起較小作用。
弱分類器被線性組合成為一個(gè)強(qiáng)分類器。
訓(xùn)練目標(biāo):
最小化指數(shù)損失函數(shù)。
三部分組成:
(1)分類器權(quán)重更新公式;
(2)樣本分布(也就是樣本權(quán)重)更新公式;
(3)加性模型。 最小化指數(shù)損失函數(shù)。
▌3.3 AdaBoost 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
不改變所給的訓(xùn)練數(shù)據(jù),而不斷改變訓(xùn)練數(shù)據(jù)的權(quán)值分布,使得訓(xùn)練數(shù)據(jù)在基本分類器的學(xué)習(xí)中起不同的作用。這是 AdaBoost 的一個(gè)特點(diǎn);
利用基本分類器的加權(quán)線性組合構(gòu)建最終分類器,是 AdaBoost 的另一個(gè)特點(diǎn);
AdaBoost 被實(shí)踐證明是一種很好的防止過擬合的方法,但至今為什么至今沒從理論上證明。
缺點(diǎn):
AdaBoost 只適用于二分類問題。
四、GBDT
GBDT(Gradient Boosting Decision Tree)又叫 MART(Multiple Additive Regression Tree)。是一種迭代的決策樹算法。
本文從以下幾個(gè)方面進(jìn)行闡述:
Regression Decision Tree(DT);
Gradient Boosting(GB);
Shrinkage(算法的一個(gè)重要演進(jìn)分支,目前大部分源碼都是基于該版本實(shí)現(xiàn));
GBDT 適用范圍;
與隨機(jī)森林的對比。
▌4.1 DT:回歸樹 Regression Decision Tree
GDBT 中的樹全部都是回歸樹,核心就是累加所有樹的結(jié)果作為最終結(jié)果。只有回歸樹的結(jié)果累加起來才是有意義的,分類的結(jié)果加是沒有意義的。
GDBT 調(diào)整之后可以用于分類問題,但是內(nèi)部還是回歸樹。
這部分和決策樹中的是一樣的,無非就是特征選擇?;貧w樹用的是最小化均方誤差,分類樹是用的是最小化基尼指數(shù)(CART)
▌4.2 GB:梯度迭代 Gradient Boosting
首先 Boosting 是一種集成方法。通過對弱分類器的組合得到強(qiáng)分類器,他是串行的,幾個(gè)弱分類器之間是依次訓(xùn)練的。GBDT 的核心就在于,每一顆樹學(xué)習(xí)的是之前所有樹結(jié)論和的殘差。
Gradient 體現(xiàn)在:無論前面一顆樹的 cost function 是什么,是均方差還是均差,只要它以誤差作為衡量標(biāo)準(zhǔn),那么殘差向量都是它的全局最優(yōu)方向,這就是 Gradient。
▌4.3 Shrinkage
Shrinkage(縮減)是 GBDT 算法的一個(gè)重要演進(jìn)分支,目前大部分的源碼都是基于這個(gè)版本的。
核心思想在于:Shrinkage 認(rèn)為每次走一小步來逼近結(jié)果的效果,要比每次邁一大步很快逼近結(jié)果的方式更容易防止過擬合。
也就是說,它不信任每次學(xué)習(xí)到的殘差,它認(rèn)為每棵樹只學(xué)習(xí)到了真理的一小部分,累加的時(shí)候只累加一小部分,通過多學(xué)習(xí)幾棵樹來彌補(bǔ)不足。
具體的做法就是:仍然以殘差作為學(xué)習(xí)目標(biāo),但是對于殘差學(xué)習(xí)出來的結(jié)果,只累加一小部分(step* 殘差)逐步逼近目標(biāo),step 一般都比較小 0.01-0.001, 導(dǎo)致各個(gè)樹的殘差是漸變而不是陡變的。
本質(zhì)上,Shrinkage 為每一顆樹設(shè)置了一個(gè) weight,累加時(shí)要乘以這個(gè) weight,但和 Gradient 沒有關(guān)系。
這個(gè) weight 就是 step。跟 AdaBoost 一樣,Shrinkage 能減少過擬合也是經(jīng)驗(yàn)證明的,目前還沒有理論證明。
▌4.4 GBDT 適用范圍
GBDT 可以適用于回歸問題(線性和非線性),相對于 logistic regression 僅能用于線性回歸,GBDT 適用面更廣;
GBDT 也可用于二分類問題(設(shè)定閾值,大于為正,否則為負(fù))和多分類問題。
▌4.5 GBDT 和隨機(jī)森林
GBDT 和隨機(jī)森林的相同點(diǎn):
都是由多棵樹組成;
最終的結(jié)果都由多棵樹共同決定。
GBDT 和隨機(jī)森林的不同點(diǎn):
組成隨機(jī)森林的可以是分類樹、回歸樹;組成 GBDT 只能是回歸樹;
組成隨機(jī)森林的樹可以并行生成(Bagging);GBDT 只能串行生成(Boosting);
對于最終的輸出結(jié)果而言,隨機(jī)森林使用多數(shù)投票或者簡單平均;而 GBDT 則是將所有結(jié)果累加起來,或者加權(quán)累加起來;
隨機(jī)森林對異常值不敏感,GBDT 對異常值非常敏感;
隨機(jī)森林對訓(xùn)練集一視同仁權(quán)值一樣,GBDT 是基于權(quán)值的弱分類器的集成;
隨機(jī)森林通過減小模型的方差提高性能,GBDT 通過減少模型偏差提高性能。
TIP
1. GBDT 相比于決策樹有什么優(yōu)點(diǎn)
泛化性能更好!GBDT 的最大好處在于,每一步的殘差計(jì)算其實(shí)變相的增大了分錯(cuò)樣本的權(quán)重,而已經(jīng)分對的樣本則都趨向于 0。這樣后面就更加專注于那些分錯(cuò)的樣本。
2. Gradient 體現(xiàn)在哪里?
可以理解為殘差是全局最優(yōu)的絕對方向,類似于求梯度。
3. re-sample
GBDT 也可以在使用殘差的同時(shí)引入 Bootstrap re-sampling,GBDT 多數(shù)實(shí)現(xiàn)版本中引入了這個(gè)選項(xiàng),但是是否一定使用有不同的看法。
原因在于 re-sample 導(dǎo)致的隨機(jī)性,使得模型不可復(fù)現(xiàn),對于評估提出一定的挑戰(zhàn),比如很難確定性能的提升是由于 feature 的原因還是 sample 的隨機(jī)因素。
五、Logistic 回歸
LR 原理;
參數(shù)估計(jì);
LR 的正則化;
為什么 LR 能比線性回歸好?
LR 與 MaxEnt 的關(guān)系。
▌5.1 LR 模型原理
首先必須給出 Logistic 分布:
u 是位置參數(shù),r 是形狀參數(shù)。對稱點(diǎn)是 (u,1/2),r 越小,函數(shù)在 u 附近越陡峭。
然后,二分類 LR 模型,是參數(shù)化的 logistic 分布,使用條件概率來表示:
然后,一個(gè)事件的幾率(odds):指該事件發(fā)生與不發(fā)生的概率比值:
對數(shù)幾率:
那么對于邏輯回歸而言,Y=1 的對數(shù)幾率就是:
最終,輸出 Y=1 的對數(shù)幾率是輸入 x 的線性函數(shù)表示的模型,這就是邏輯回歸模型。
▌5.2 參數(shù)估計(jì)
在統(tǒng)計(jì)學(xué)中,常常使用極大似然估計(jì)法來估計(jì)參數(shù)。即找到一組參數(shù),使得在這組參數(shù)下,我們數(shù)據(jù)的似然度(概率)最大。
似然函數(shù):
對數(shù)似然函數(shù):
對應(yīng)的損失函數(shù):
▌5.3 最優(yōu)化方法
邏輯回歸模型的參數(shù)估計(jì)中,最后就是對 J(W) 求最小值。這種不帶約束條件的最優(yōu)化問題,常用梯度下降或牛頓法來解決。
使用梯度下降法求解邏輯回歸參數(shù)估計(jì)
求 J(W) 梯度:g(w):
更新 Wk:
$$ W_{k+1} = W_k - \lambda*g(W_k) $$
▌5.4 正則化
正則化為了解決過擬合問題。分為 L1 和 L2 正則化。主要通過修正損失函數(shù),加入模型復(fù)雜性評估;
正則化是符合奧卡姆剃刀原理:在所有可能的模型中,能夠很好的解釋已知數(shù)據(jù)并且十分簡單的才是最好的模型。
p 表示范數(shù),p=1 和 p=2 分別應(yīng)用 L1 和 L2 正則。
L1 正則化。向量中各元素絕對值之和。又叫做稀疏規(guī)則算子(Lasso regularization)。關(guān)鍵在于能夠?qū)崿F(xiàn)特征的自動(dòng)選擇,參數(shù)稀疏可以避免非必要的特征引入的噪聲;
L2 正則化。使得每個(gè)元素都盡可能的小,但是都不為零。在回歸里面,有人把他的回歸叫做嶺回歸(Ridge Regression),也有人叫他 “權(quán)值衰減”(weight decay)。
一句話總結(jié)就是:L1 會(huì)趨向于產(chǎn)生少量的特征,而其他的特征都是 0,而 L2 會(huì)選擇更多的特征,這些特征都會(huì)接近于 0.
▌5.5 邏輯回歸 vs 線性回歸
首先,邏輯回歸比線性回歸要好。
兩者都屬于廣義線性模型。
線性回歸優(yōu)化目標(biāo)函數(shù)用的最小二乘法,而邏輯回歸用的是最大似然估計(jì)。邏輯回歸只是在線性回歸的基礎(chǔ)上,將加權(quán)和通過 sigmoid 函數(shù),映射到 0-1 范圍內(nèi)空間。
線性回歸在整個(gè)實(shí)數(shù)范圍內(nèi)進(jìn)行預(yù)測,敏感度一致,而分類范圍,需要在 [0,1]。而邏輯回歸就是一種減小預(yù)測范圍,將預(yù)測值限定為 [0,1] 間的一種回歸模型。
邏輯曲線在 z=0 時(shí),十分敏感,在 z>>0 或 z<<0 處,都不敏感,將預(yù)測值限定為 (0,1)。邏輯回歸的魯棒性比線性回歸要好。
▌5.6 邏輯回歸模型 vs 最大熵模型 MaxEnt
簡單粗暴的說:邏輯回歸跟最大熵模型沒有本質(zhì)區(qū)別。邏輯回歸是最大熵對應(yīng)為二類時(shí)的特殊情況,也就是說,當(dāng)邏輯回歸擴(kuò)展為多類別的時(shí)候,就是最大熵模型。
最大熵原理:學(xué)習(xí)概率模型的時(shí)候,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。
六、SVM 支持向量機(jī)
雖然咱們的目標(biāo)是盡可能的不涉及到公式,但是提到 SVM 就沒有辦法不涉及到公式推導(dǎo),因?yàn)槊嬖囍兄灰獑柕?SVM,最基本也是最難的問題就是:SVM 的對偶問題數(shù)學(xué)公式推導(dǎo)。
所以想學(xué)好機(jī)器學(xué)習(xí),還是要塌下心來,不僅僅要把原理的核心思想掌握了,公式推導(dǎo)也要好好學(xué)習(xí)才行。
▌6.1 SVM 原理
簡單粗暴的說:SVM 的思路就是找到一個(gè)超平面將數(shù)據(jù)集進(jìn)行正確的分類。對于在現(xiàn)有維度不可分的數(shù)據(jù),利用核函數(shù)映射到高緯空間使其線性可分。
支持向量機(jī) SVM 是一種二分類模型。它的基本模型是定義在特征空間上的間隔最大的線性分類器,間隔最大使它有別于感知機(jī)。SVM 的學(xué)習(xí)策略是間隔最大化,可形式化為求解凸二次規(guī)劃問題。
SVM 分為:
線性可分支持向量機(jī)。當(dāng)訓(xùn)練數(shù)據(jù)線性可分時(shí),通過硬間隔最大化,學(xué)習(xí)到的一個(gè)線性分類器;
線性支持向量機(jī)。當(dāng)訓(xùn)練數(shù)據(jù)近似線性可分時(shí),通過軟間隔最大化,學(xué)習(xí)到的一個(gè)線性分類器;
非線性支持向量機(jī)。當(dāng)訓(xùn)練數(shù)據(jù)線性不可分,通過使用核技巧及軟間隔最大化,學(xué)習(xí)非線性支持向量機(jī)。
上圖中,X 表示負(fù)例,O 表示正例。此時(shí)的訓(xùn)練數(shù)據(jù)可分,線性可分支持向量機(jī)對應(yīng)著將兩類數(shù)據(jù)正確劃分并且間隔最大的直線。
6.1.1 支持向量與間隔
支持向量:在線性可分的情況下,訓(xùn)練數(shù)據(jù)樣本集中的樣本點(diǎn)中與分離超平面距離最近的樣本點(diǎn)的實(shí)例稱為支持向量(support vector)。
函數(shù)間隔定義如下:
yi 表示目標(biāo)值,取值為 +1、-1. 函數(shù)間隔雖然可以表示分類預(yù)測的準(zhǔn)確性以及確信度。但是有個(gè)不好的性質(zhì):只要成倍的改變 W 和 B,雖然此時(shí)的超平面并沒有改變,但是函數(shù)間隔會(huì)變大。
所以我們想到了對超平面的法向量 W 施加一些約束,比如規(guī)范化,使得間隔確定,這就引出了幾何間隔:
支持向量學(xué)習(xí)的基本思想就是求解能夠正確劃分訓(xùn)練數(shù)據(jù)集并且?guī)缀伍g隔最大的分類超平面。
6.1.2 對偶問題
為了求解線性可分支持向量機(jī)的最優(yōu)化問題:
將它作為原始最優(yōu)化問題,應(yīng)用拉格朗日對偶性,通過求解對偶問題得到原始問題的最優(yōu)解,這就是線性可分支持向量機(jī)的對偶算法。
本來的算法也可以求解 SVM,但是之所以要用對偶問題來求解,優(yōu)點(diǎn)是:
一是對偶問題往往更容易求解;
二是自然引入核函數(shù),進(jìn)而推廣到非線性分類問題。
說點(diǎn)題外話,這也是面試中會(huì)被問到的一個(gè)問題:原始問題既然可以求解,為什么還要轉(zhuǎn)換為對偶問題。
答案就是上述這兩點(diǎn)。由于篇幅的愿意,此處就不在展開數(shù)學(xué)公式的推導(dǎo)了,大家可以參考《機(jī)器學(xué)習(xí)》與《統(tǒng)計(jì)學(xué)習(xí)方法》。
6.1.3 核函數(shù)
對于在原始空間中不可分的問題,在高維空間中是線性可分的。
對于線性不可分的問題,使用核函數(shù)可以從原始空間映射到高緯空間,使得問題變得線性可分。核函數(shù)還可以使得在高維空間計(jì)算的內(nèi)積在低維空間中通過一個(gè)函數(shù)來完成。
常用的核函數(shù)有:高斯核、線性核、多項(xiàng)式核。
6.1.4 軟間隔
線性可分問題的支持向量機(jī)學(xué)習(xí)方法,對現(xiàn)行不可分訓(xùn)練數(shù)據(jù)是不適用的。所以講間隔函數(shù)修改為軟間隔,對于函數(shù)間隔,在其上加上一個(gè)松弛變量,使其滿足大于等于 1。約束條件變?yōu)椋?/p>
▌6.2 優(yōu)缺點(diǎn)
缺點(diǎn):
時(shí)空開銷比較大,訓(xùn)練時(shí)間長;
核函數(shù)的選取比較難,主要靠經(jīng)驗(yàn)。
優(yōu)點(diǎn):
在小訓(xùn)練集上往往得到比較好的結(jié)果;
使用核函數(shù)避開了高緯空間的復(fù)雜性;
泛化能力強(qiáng)。
七、利用 sklearn 進(jìn)行實(shí)戰(zhàn)
使用 sklearn 用決策樹來進(jìn)行鶯尾花數(shù)據(jù)集的劃分問題。代碼上沒有固定隨機(jī)種子,所以每次運(yùn)行的結(jié)果會(huì)稍有不同。
數(shù)據(jù)集三維可視化:
在 Sepal length 和 Sepal width 二維上的可視化:
運(yùn)行結(jié)果:
Decision Tree 可視化,也就是生成的決策樹:
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315 -
決策樹
+關(guān)注
關(guān)注
2文章
96瀏覽量
13534
原文標(biāo)題:機(jī)器學(xué)習(xí)面試干貨精講
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論