0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于機(jī)器學(xué)習(xí)面試精講

8g3K_AI_Thinker ? 來源:未知 ? 作者:李倩 ? 2018-03-26 17:02 ? 次閱讀

序言

本文盡可能的不涉及到繁雜的數(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 可視化,也就是生成的決策樹:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8353

    瀏覽量

    132315
  • 決策樹
    +關(guān)注

    關(guān)注

    2

    文章

    96

    瀏覽量

    13534

原文標(biāo)題:機(jī)器學(xué)習(xí)面試干貨精講

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    多練MATLAB

    多練MATLAB本書系統(tǒng)地講述了MATLAB的基本技術(shù),內(nèi)容包括基本計(jì)算、矩陣處理、符號運(yùn)算、計(jì)算結(jié)果的可視化、程序設(shè)計(jì)和用戶圖形界面設(shè)計(jì)等方面。會(huì)書結(jié)合實(shí)際問題,計(jì)練結(jié)合,注重
    發(fā)表于 07-07 12:16

    PID

    本帖最后由 eehome 于 2013-1-5 09:52 編輯 PID
    發(fā)表于 08-18 07:22

    伏秒乘積

    伏秒乘積,,,,,,,,,,
    發(fā)表于 06-11 16:28

    時(shí)鐘分頻電路

    時(shí)鐘分頻電路
    發(fā)表于 07-11 09:37

    干貨!java經(jīng)典面試套路視頻教程免費(fèi)分享!

    怎么解決呢?今天給大家分享一個(gè)java經(jīng)典面試套路視頻教程,需要的朋友可以看看,希望能幫助到大家,找到一份好的工作!課程目錄:1、 String Stringbuffer Stringbuilder 深度
    發(fā)表于 06-23 16:21

    java基礎(chǔ):Java七大外企經(jīng)典面試視頻

    java基礎(chǔ):Java七大外企經(jīng)典面試視頻對于很多應(yīng)聘java程序員的求職者來說,全面掌握java面試技巧,確實(shí)是自己找到一個(gè)好工作的敲門磚。今天小編在這里給大家分享一個(gè)
    發(fā)表于 06-29 15:00

    java面試考點(diǎn)視頻教程!

    java面試考點(diǎn)視頻教程!Java語言是一門很實(shí)用的語言,在互聯(lián)網(wǎng)的應(yīng)用十分廣泛,目前采用JAVA語言開發(fā)的網(wǎng)站也越來越多,所以對Java開發(fā)人才的需求量也是倍增。java工程師在面試
    發(fā)表于 07-01 15:26

    面試必看:java面試考點(diǎn)視頻教程

    面試必看:java面試考點(diǎn)視頻教程 Java作為目前比較火的計(jì)算機(jī)語言之一,連續(xù)幾年蟬聯(lián)最受程序員歡迎的計(jì)算機(jī)語言榜首,因此每年新入職Java程序員也數(shù)不勝數(shù)。很多java程序員在
    發(fā)表于 07-06 12:46

    Java面試筆試考點(diǎn)視頻教程

    Java面試筆試考點(diǎn)視頻教程Java作為目前比較火的計(jì)算機(jī)語言之一,連續(xù)幾年蟬聯(lián)最受程序員歡迎的計(jì)算機(jī)語言榜首,因此每年新入職Java程序員也數(shù)不勝數(shù)。很多java程序員在學(xué)成之后,會(huì)面臨著就業(yè)
    發(fā)表于 07-10 14:11

    Java經(jīng)典面試視頻課程免費(fèi)了!

    Java經(jīng)典面試視頻課程免費(fèi)了!Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執(zhí)行的語言,語法規(guī)則和C++類似。同時(shí),Java也是一種跨平臺的程序設(shè)計(jì)語言。本教程主要給大家講解
    發(fā)表于 07-14 10:54

    25個(gè)機(jī)器學(xué)習(xí)面試題,你都會(huì)嗎?

    復(fù)雜的細(xì)節(jié),并最終能夠很好地接受它們。事實(shí)上,網(wǎng)絡(luò)上有很多關(guān)于機(jī)器學(xué)習(xí)面試問題」的文章,本文希望能稍微用不一樣的、有趣的方式來討論這些問題。聲明:我將這些問題列舉出來只是為了啟發(fā)大家
    發(fā)表于 09-29 09:39

    開關(guān)電源控制環(huán)路PDF學(xué)習(xí)資料文檔電子書

    開關(guān)電源控制環(huán)路,英文版本感興趣的可以下載學(xué)習(xí)~回復(fù)本帖查看隱藏下載鏈接:[hide][/hide]
    發(fā)表于 07-01 18:50

    吳大正《信號與線性系統(tǒng)分析》考點(diǎn)

    吳大正版信號與線性系統(tǒng)分析考點(diǎn),大家一起學(xué)習(xí)
    發(fā)表于 12-23 14:07 ?0次下載

    開關(guān)電源原理圖

    開關(guān)電源原理圖,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-18 17:59 ?97次下載

    開關(guān)電源原理

    開關(guān)電源原理非常適合初學(xué)者!
    發(fā)表于 05-25 14:43 ?17次下載