帶你快速找到適合自己的算法!
本文主要適用于初學(xué)者到中級數(shù)據(jù)科學(xué)家或分析師,可以應(yīng)用機(jī)器學(xué)習(xí)算法來解決他們感興趣的問題。
一個初學(xué)者面臨各種機(jī)器學(xué)習(xí)算法的典型問題是“我應(yīng)該使用哪種算法?”問題的答案取決于許多因素,包括:
數(shù)據(jù)的大小、質(zhì)量和性質(zhì)。
可用計算時間。
任務(wù)的緊迫性。
你想用數(shù)據(jù)做什么
即使是經(jīng)驗豐富的數(shù)據(jù)科學(xué)家也不能在嘗試不同的算法之前,判斷哪種算法會最好。?我們并不是倡導(dǎo)一個一步到位的方法,但是我們希望首先根據(jù)一些明確的因素來提供一些嘗試哪些算法的指導(dǎo)。
1
機(jī)器學(xué)習(xí)算法速查表

機(jī)器學(xué)習(xí)算法速查表幫助你從各種機(jī)器學(xué)習(xí)算法中選擇,以找到適合你的具體問題的算法。?本文將引導(dǎo)你完成如何使用速查表的過程。
由于該速查表是專為初學(xué)者數(shù)據(jù)科學(xué)家和分析師設(shè)計的,所以在討論算法時,我們將作出一些簡化的假設(shè)。
這里推薦的算法是來自幾個數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)專家和開發(fā)人員的編譯反饋和提示。有幾個問題,我們還沒有達(dá)成協(xié)議,對于這些問題,我們試圖突出共性及調(diào)和差異。
稍后將會添加其他算法,因為我們的庫增長包含一套更完整的可用方法。
如何使用速查表?
將圖表上的路徑和算法標(biāo)簽讀為“如果?<路徑標(biāo)簽>?則使用<算法>”。例如:
如果要進(jìn)行降維,則使用主成分分析法。
如果需要快速的數(shù)值預(yù)測,請使用決策樹或邏輯回歸。
如果需要分層結(jié)果,請使用層次聚類。
有時多個分支適用,其他時候他們都不是絕配。?重要的是要記住這些路徑旨在作為有經(jīng)驗的建議,因此有些建議并不準(zhǔn)確。我談到的幾位數(shù)據(jù)科學(xué)家說,找到最好算法的唯一方法就是嘗試所有的算法。
2
機(jī)器學(xué)習(xí)算法的類型
本節(jié)提供最受歡迎的機(jī)器學(xué)習(xí)類型的概述。?如果你熟悉這些類型,并希望繼續(xù)討論特定的算法,則可以跳過本節(jié)并轉(zhuǎn)到下面的“何時使用特定算法”。
1. 監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)算法基于一組示例進(jìn)行預(yù)測。例如,可以使用歷史銷售來估計未來價格。通過監(jiān)督學(xué)習(xí),你有一個輸入變量,由標(biāo)記的訓(xùn)練數(shù)據(jù)和期望的輸出變量組成。你使用算法分析訓(xùn)練數(shù)據(jù),來得到將輸入映射到輸出的函數(shù)。這個推斷函數(shù)通過從訓(xùn)練數(shù)據(jù)推廣來預(yù)測未知情況下的結(jié)果來映射新的未知示例。
分類:當(dāng)數(shù)據(jù)用于預(yù)測分類變量時,監(jiān)督學(xué)習(xí)也稱為分類。?當(dāng)分配標(biāo)簽或指示符時,狗或貓分配給圖像就是這種情況。?當(dāng)只有兩個標(biāo)簽時,這被稱為二進(jìn)制分類。當(dāng)有兩類以上時,這些問題被稱為多類分類。
回歸:當(dāng)預(yù)測連續(xù)值時,問題變成一個回歸問題。
預(yù)測:這是基于過去和現(xiàn)在的數(shù)據(jù)來預(yù)測未來的過程。這是最常用的分析趨勢。一個常見的例子可能是根據(jù)本年和前幾年的銷售額估計下一年的銷售額。
2.?半監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)的挑戰(zhàn)是標(biāo)注數(shù)據(jù)可能是昂貴和耗時的。?如果標(biāo)簽有限,你可以使用未標(biāo)記的示例來增強(qiáng)監(jiān)督學(xué)習(xí)。?因為在這種情況下機(jī)器沒有被完全監(jiān)督,所以我們說機(jī)器是半監(jiān)督的。?使用半監(jiān)督學(xué)習(xí),你可以使用少量標(biāo)簽數(shù)據(jù)的未標(biāo)記示例來提高學(xué)習(xí)準(zhǔn)確性。
3. 非監(jiān)督學(xué)習(xí)
執(zhí)行非監(jiān)督學(xué)習(xí)時,機(jī)器將呈現(xiàn)完全未標(biāo)記的數(shù)據(jù)。?被要求發(fā)現(xiàn)基礎(chǔ)數(shù)據(jù)的固有模式,如聚類結(jié)構(gòu),低維流形或稀疏樹和圖。
聚類:分組一組數(shù)據(jù)示例,使一個組(或一個集群)中的示例與其他組中的示例更相似(根據(jù)某些標(biāo)準(zhǔn))。?這通常用于將整個數(shù)據(jù)集分成幾組。?可以在每個組中進(jìn)行分析,以幫助用戶找到固有模式。
降維:減少考慮的變量數(shù)量。?在許多應(yīng)用中,原始數(shù)據(jù)具有非常高的維度特征,并且一些特征是冗余的或與任務(wù)無關(guān)的。?降低維度有助于找到真實的,潛在的關(guān)系。
4. 增強(qiáng)學(xué)習(xí)
增強(qiáng)學(xué)習(xí)根據(jù)環(huán)境的反饋分析和優(yōu)化agent行為。機(jī)器嘗試不同的場景來發(fā)現(xiàn)哪些行為會產(chǎn)生最大的回報,而不是被告知要采取哪些行動。
3
選擇算法時的注意事項
選擇算法時,請務(wù)必考慮這些方面:準(zhǔn)確度,訓(xùn)練時間和易用性。?許多用戶將準(zhǔn)確度放在第一位,而初學(xué)者則傾向于關(guān)注他們最了解的算法。
當(dāng)被提供一個數(shù)據(jù)集時,首先要考慮的是如何獲得結(jié)果,無論這些結(jié)果如何。初學(xué)者傾向于選擇易于實現(xiàn)的算法,并可以快速獲得結(jié)果。?這樣做很好,因為這只是過程的第一步。?獲得一些結(jié)果并熟悉數(shù)據(jù)后,你可以花費(fèi)更多時間使用更復(fù)雜的算法來加強(qiáng)對數(shù)據(jù)的理解,從而進(jìn)一步改進(jìn)結(jié)果。
即使在這個階段,最好的算法可能不是實現(xiàn)最高報告精度的方法,因為算法通常需要仔細(xì)調(diào)整和廣泛的訓(xùn)練才能獲得最佳的可實現(xiàn)性能。
何時使用特定的算法?
更加仔細(xì)地查看各個算法可以幫助你了解它們提供的內(nèi)容以及如何使用它們。?這些描述提供了更多的細(xì)節(jié),并提供了什么時候使用特定算法,與速查表對準(zhǔn)。
4
線性回歸和邏輯回歸


線性回歸是對連續(xù)因變量y與一個或多個預(yù)測變量X之間的關(guān)系進(jìn)行建模的方法。Y和X之間的關(guān)系可以線性建模為
。根據(jù)訓(xùn)練樣本
,可以學(xué)習(xí)參數(shù)向量β。
如果因變量不是連續(xù)的而是分類的,則可以使用logit鏈接函數(shù)將線性回歸轉(zhuǎn)換為邏輯回歸。邏輯回歸是一種簡單,快速而強(qiáng)大的分類算法。這里我們討論二進(jìn)制的情況,其中因變量y只取二進(jìn)制值
(它可以容易地擴(kuò)展到多類分類問題)。
在邏輯回歸中,我們使用不同的假設(shè)類來嘗試預(yù)測給定示例屬于“1”類的概率,而不是它屬于“-1”類的概率。具體來說,我們將嘗試學(xué)習(xí)以下形式的函數(shù):
和
。這里
是sigmoid函數(shù)。給定訓(xùn)練樣例
,可以通過使給定數(shù)據(jù)集β的對數(shù)似然度最大化來得知參數(shù)向量β。


1. 線性SVM和核SVM
核機(jī)制用于將非線性可分離函數(shù)映射為更高維度的線性可分離函數(shù)。支持向量機(jī)(SVM)訓(xùn)練算法找到由超平面的法向量w和偏差b表示的分類器。這個超平面(邊界)將不同的類分隔開盡可能大的邊距。該問題可以轉(zhuǎn)化為約束優(yōu)化問題:

支持向量機(jī)(SVM)訓(xùn)練算法找到由超平面的法向量w和偏差b表示的分類器。這個超平面(邊界)將不同的類分隔開盡可能大的邊距。該問題可以轉(zhuǎn)化為約束優(yōu)化問題:

當(dāng)類不可線性分離時,可以使用核機(jī)制將非線性可分離空間映射到更高維度的線性可分離空間。
當(dāng)大多數(shù)因變量是數(shù)字時,邏輯回歸和SVM應(yīng)該是分類的第一個嘗試。這些機(jī)型易于實現(xiàn),其參數(shù)易調(diào),性能也相當(dāng)不錯。所以這些模式適合初學(xué)者。
2. 樹和集成樹

決策樹、隨機(jī)森林和梯度提升都是基于決策樹的算法。決策樹有許多變種,但它們都做同樣的事情--將特征空間細(xì)分為具有相同標(biāo)簽的區(qū)域。決策樹易于理解和實施。然而,當(dāng)我們剪枝并深度運(yùn)行樹時往往過度擬合數(shù)據(jù)。隨機(jī)森林和梯度提升是使用樹算法實現(xiàn)良好準(zhǔn)確性以及克服過擬合問題的兩種流行方式。
2. 神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)

20世紀(jì)80年代中期,由于并行和分布式處理能力,神經(jīng)網(wǎng)絡(luò)蓬勃發(fā)展。但是,這一領(lǐng)域的研究受到廣泛用于優(yōu)化神經(jīng)網(wǎng)絡(luò)參數(shù)的反向傳播訓(xùn)練算法的無效性的阻礙。支持向量機(jī)(SVM)等簡單模型,可以通過解決凸優(yōu)化問題輕松訓(xùn)練,逐漸取代機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)。
近年來,新的和改進(jìn)的訓(xùn)練技術(shù),如非監(jiān)督的預(yù)訓(xùn)練和逐層貪婪訓(xùn)練,導(dǎo)致對神經(jīng)網(wǎng)絡(luò)興趣的興起。越來越強(qiáng)大的計算能力,如圖形處理單元(GPU)和大規(guī)模并行處理(MPP),也激發(fā)了神經(jīng)網(wǎng)絡(luò)的復(fù)興。神經(jīng)網(wǎng)絡(luò)復(fù)興的研究引起了成千上萬層模型的發(fā)明。
換句話說,淺層神經(jīng)網(wǎng)絡(luò)已經(jīng)演變成深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)。深層神經(jīng)網(wǎng)絡(luò)對于監(jiān)督學(xué)習(xí)已經(jīng)非常成功。當(dāng)用于語言和圖像識別時,深層次的學(xué)習(xí)表現(xiàn)與甚至比人類更好。適用于非監(jiān)督的學(xué)習(xí)任務(wù),如特征提取,深度學(xué)習(xí)還從原始圖像或語音中提取少量人為干預(yù)的特征。

神經(jīng)網(wǎng)絡(luò)由三部分組成:輸入層,隱層和輸出層。訓(xùn)練樣本定義了輸入和輸出層。當(dāng)輸出層是分類變量時,神經(jīng)網(wǎng)絡(luò)是解決分類問題的一種方式。當(dāng)輸出層是連續(xù)變量時,網(wǎng)絡(luò)可以用來做回歸。當(dāng)輸出層與輸入層相同時,可以使用網(wǎng)絡(luò)來提取內(nèi)在特征。隱藏層的數(shù)量定義了模型的復(fù)雜性和建模能力。
3. K-means/ K-modes,GMM(高斯混合模型)聚類


K-means/ K-modes,GMM聚類旨在將n個觀察值分為k個集群。K-means定義硬分配:樣本將是且僅與一個集群相關(guān)聯(lián)。然而,GMM為每個樣本定義一個軟分配。每個樣本具有與每個集群相關(guān)聯(lián)的概率。當(dāng)給定集群k的數(shù)量時,兩種算法都是簡單且足夠快的聚類。
4. DBSCAN
當(dāng)聚類數(shù)k沒有給出時,可以通過密度擴(kuò)散連接樣本來使用DBSCAN(基于密度的空間聚類)。
5. 分層聚類

可以使用樹結(jié)構(gòu)(樹形圖)來可視化分層分區(qū)。它不需要集群的數(shù)量作為輸入,并且可以使用不同的K來以不同的粒度級(即,可以細(xì)化/粗化的集群)來查看分區(qū)。
6. PCA, SVD?和?LDA
我們通常不想將大量的特征直接饋送到機(jī)器學(xué)習(xí)算法中,因為一些特征可能是不相關(guān)的,或者“固有的”維度可能小于特征的數(shù)量。主成分分析(PCA),奇異值分解(SVD)和潛在Dirichlet分配(LDA)均可用于降維。
PCA是一種非監(jiān)督的聚類方法,將原始數(shù)據(jù)空間映射到較低維數(shù)空間,同時保留盡可能多的信息。PCA基本上找到一個最保留數(shù)據(jù)方差的子空間,其中子空間由數(shù)據(jù)協(xié)方差矩陣的主要特征向量定義。
SVD與PCA相關(guān),意思是中心數(shù)據(jù)矩陣(特征與樣本)的SVD提供了定義與PCA相同的子空間的主要左奇異向量。然而,SVD是一種更通用的技術(shù),因為它也可以做PCA可能不做的事情。例如,用戶對電影矩陣的SVD能夠提取可以在推薦系統(tǒng)中使用的用戶資料和電影簡介。此外,SVD也被廣泛用作自然語言處理(NLP)中稱為潛在語義分析的主題建模工具。
NLP中的相關(guān)技術(shù)是潛在的Dirichlet分配(LDA)。LDA是概率主題模型,它以與高斯混合模型(GMM)類似的方式將文檔分解為主題,將連續(xù)數(shù)據(jù)分解為高斯密度。與GMM不同,LDA模型離散數(shù)據(jù),并且限制了主題根據(jù)Dirichlet分布先驗分布。
4
結(jié) 論
這是易于遵循的工作流程。在此得出的當(dāng)試圖解決一個新問題時的結(jié)論:
定義問題。你想解決什么問題?
從簡單的開始。熟悉數(shù)據(jù)和基線結(jié)果。
然后嘗試更復(fù)雜的東西。
End.
來源:云棲社區(qū)組織翻譯
作者:Hui Li
譯者:tiamo_zn
推 薦關(guān) 注 ▼
