
在實(shí)際項(xiàng)目中,如何選擇合適的機(jī)器學(xué)習(xí)模型
在這個文章中,我們主要面向初學(xué)者或中級數(shù)據(jù)分析師,他們對識別和應(yīng)用機(jī)器學(xué)習(xí)算法都非常感興趣,但是初學(xué)者在面對各種機(jī)器學(xué)習(xí)算法時(shí),都會遇到一個問題是 “在實(shí)際項(xiàng)目中,我到底應(yīng)該使用哪種算法呢?”。
這個問題的答案取決于許多的因素,其中包括:
數(shù)據(jù)的維度大小,數(shù)據(jù)的質(zhì)量和數(shù)據(jù)的特征屬性;
你可以利用的計(jì)算資源;
你所在的項(xiàng)目組對該項(xiàng)目的時(shí)間預(yù)計(jì);
你手上的數(shù)據(jù)能應(yīng)用在哪些項(xiàng)目中;
即使是一位經(jīng)驗(yàn)豐富的數(shù)據(jù)科學(xué)家,在沒有對數(shù)據(jù)嘗試很多種不同的算法之前,他也不能確定哪一種算法在數(shù)據(jù)上面有更好的表現(xiàn)。但是,我們并不主張這種方式,一個一個算法去試驗(yàn)。
我們希望自己有一點(diǎn)先驗(yàn)知識,可以指導(dǎo)我們?nèi)ト绾芜x擇算法模型,幫助我們少走一點(diǎn)彎路。
上面的機(jī)器學(xué)習(xí)算法表可以幫助我們?nèi)绾稳ミx擇一個合適的機(jī)器學(xué)習(xí)算法,對于我們特定的項(xiàng)目問題。這篇文章,我們主要來講講如何去使用這個表格。
因?yàn)檫@個表格是為初學(xué)者所設(shè)定的,所以我們在討論這些算法的時(shí)候,會做一些簡化的假設(shè)工作。
這里所推薦的機(jī)器學(xué)習(xí)算法是由幾位數(shù)據(jù)科學(xué)家,機(jī)器學(xué)習(xí)專家和算法開發(fā)人員所共同反饋總結(jié)的。隨著后續(xù)的發(fā)展,我們會收集更加全的算法來更新這張表。
如何使用這種算法表
其實(shí)閱讀這種算法表非常簡單,我們可以采取 如果你想要進(jìn)行,那么你可以使用這種模式來讀取。比如:
如果你想要進(jìn)行數(shù)據(jù)分層操作,那么你可以使用分層聚類。
有時(shí)候,我們可能會有很多的條件需要去匹配算法,但有時(shí)候可能我們連一條總結(jié)的規(guī)則都沒有,以至于不能去利用這個算法表。其實(shí),這是很正常的,因?yàn)檫@個算法表是我們憑借工程師的經(jīng)驗(yàn)總結(jié)處理的,因此有一些規(guī)則并不是很準(zhǔn)確。
我和幾個好朋友一起討論過這個問題,我們一直覺得尋找最好的算法的唯一路徑可能就是去嘗遍所有的算法。但是這種方法非常 “蠢”。
這部分我們會介紹一些最流行的機(jī)器學(xué)習(xí)模型類型。如果你對這些類別比較熟悉,那么對你以后去選擇機(jī)器學(xué)習(xí)模型是非常有利的。
監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)算法是基于一組標(biāo)記數(shù)據(jù)進(jìn)行預(yù)測的。
比如,歷史銷售數(shù)據(jù)可以來預(yù)測未來的銷售價(jià)格。應(yīng)用監(jiān)督學(xué)習(xí)算法,我們需要一個包含標(biāo)簽的訓(xùn)練數(shù)據(jù)集。我們可以使用這個訓(xùn)練數(shù)據(jù)集去訓(xùn)練我們的模型,從而得到一個從輸入數(shù)據(jù)到輸出期望數(shù)據(jù)之間的映射函數(shù)。
這個模型的推斷作用是從一個數(shù)據(jù)集中學(xué)習(xí)出一種模式,可以讓這個模型適應(yīng)新的數(shù)據(jù),也就是說去預(yù)測一些沒有看到過的數(shù)據(jù)。
分類:當(dāng)數(shù)據(jù)被用于預(yù)測一個分類時(shí),監(jiān)督學(xué)習(xí)算法也可以稱為是一種分類算法。比如,我們的一張圖片可以被分類標(biāo)記為狗或者貓。如果我們的分類標(biāo)簽只有兩個類別,那么我們也把這個分類稱之為二分類問題。當(dāng)我們需要分類的東西超過兩個類別的時(shí)候,這個模型就是一個多分類模型了。
回歸:當(dāng)我們預(yù)測的值是一個連續(xù)值時(shí),這個問題就變成了一個回歸問題。
預(yù)測:這是根據(jù)過去和現(xiàn)在的一些歷史數(shù)據(jù),來預(yù)測將來的數(shù)據(jù)。最常用的一個領(lǐng)域就是趨勢分析。比如,我們可以根現(xiàn)在和過去幾年的銷售額來預(yù)測下一年的銷售額。
監(jiān)督學(xué)習(xí)帶來的最大挑戰(zhàn)是標(biāo)注數(shù)據(jù),這是一項(xiàng)非常耗時(shí)的工程而且非常昂貴。那么如果標(biāo)簽的數(shù)量有限,我們應(yīng)該怎么辦呢?我們可以使用一些非標(biāo)記的數(shù)據(jù)來加強(qiáng)監(jiān)督學(xué)習(xí)。
由于在這種情況下我們的機(jī)器學(xué)習(xí)算法不是完全的監(jiān)督學(xué)習(xí),所有我們把該算法稱之為半監(jiān)督學(xué)習(xí)算法。
在半監(jiān)督學(xué)習(xí)中,我們可以使用未標(biāo)記的數(shù)據(jù)和一小部分的標(biāo)記數(shù)據(jù)來訓(xùn)練我們的模型,從而來提高我們模型的準(zhǔn)確性。
無監(jiān)督學(xué)習(xí)
在使用無監(jiān)督學(xué)習(xí)的時(shí)候,我們所使用的數(shù)據(jù)都是不用進(jìn)行標(biāo)記的。我們的算法模型會自動的去發(fā)現(xiàn)數(shù)據(jù)內(nèi)在的一些模式,比如聚類結(jié)構(gòu),層次結(jié)構(gòu),稀疏樹和圖等等。
聚類:將一組數(shù)據(jù)進(jìn)行分組,使得一個組里面的數(shù)據(jù)跟別的組里面的數(shù)據(jù)是有一定的區(qū)別,也就是說每一個組即使一個聚類。這種方法經(jīng)常被用來做數(shù)據(jù)切分,也就是把一個大的數(shù)據(jù)集先切割成幾個小的數(shù)據(jù)集,而每一個小的數(shù)據(jù)集都是一個高度相似的數(shù)據(jù)集。這樣可以幫助分析者從中更好的找到數(shù)據(jù)之間的內(nèi)部結(jié)構(gòu)。
降維:減少數(shù)據(jù)變量中的維度。在很多的應(yīng)用中,原始數(shù)據(jù)都是非常高維度的特征,但是這些維度中很多的特征都是多余的,或者說跟任務(wù)的沒有相關(guān)性。降低維度可以幫助我們更好的而發(fā)現(xiàn)真實(shí)數(shù)據(jù)之間潛在的內(nèi)部關(guān)系。
強(qiáng)化學(xué)習(xí)是根據(jù)環(huán)境對智能體(agent)的反饋來分析和優(yōu)化智能體的行為。智能體根據(jù)不同的場景會去嘗試不同的動作,然后分析不同動作所會帶來什么的回報(bào),選取其中最大回報(bào)作為所采取的最終動作。
反復(fù)試錯和獎勵機(jī)制是強(qiáng)化學(xué)習(xí)和別的算法最不同的地方。
那么如何選擇這些類別的算法呢?
當(dāng)我們?nèi)ミx擇一個算法的時(shí)候,總是會考慮到很多的方面,比如:模型準(zhǔn)確率,訓(xùn)練時(shí)間,可擴(kuò)展性等等。這其中,最重要的可能就是準(zhǔn)確率,但是對于初學(xué)者而言,可能最重要的是他們的熟悉程度。如果他們對一個模型很熟悉,那么第一個嘗試的往往就是這個模型。
當(dāng)給定一個數(shù)據(jù)集的時(shí)候,我們首先想到的應(yīng)該是如何快速的得到一個結(jié)果,也就是我們常說的 demo 算法。在這個過程中,我們首先關(guān)心的并不是算法結(jié)果的好壞,而是一整個算法在數(shù)據(jù)上面運(yùn)行的流程。
初學(xué)者更加傾向于去選擇一些容易實(shí)現(xiàn)的算法,并且可以快速得到結(jié)果。這樣的工作節(jié)奏是非常好的,一旦你獲得了一些結(jié)果并且熟悉了數(shù)據(jù),你可能就會愿意花更多的時(shí)候去使用更加復(fù)雜的算法來理解這些數(shù)據(jù),從而獲得更好的結(jié)果。
即使我們到了這個階段,最好的算法可能也不是那個獲得最高準(zhǔn)確率的算法,因?yàn)閷τ谝粋€算法我們需要仔細(xì)的去調(diào)整參數(shù)和長時(shí)間訓(xùn)練才能得到一個算法模型的最佳性能。而上面我們只是去簡單的運(yùn)行了一下模型,得到一個結(jié)果而已。
選擇算法時(shí)的注意事項(xiàng)
正確率
獲得最準(zhǔn)確的答案可能不總是最必要的。有時(shí)一個近似答案也是足夠了,當(dāng)然這取決于你想要如何去使用你自己的算法模型。如果是這種情況,你可以采用一個近似的方法來縮短你構(gòu)建模型的時(shí)間。
這種近似的處理方式還有另一個優(yōu)點(diǎn),就是可以幫助我們一定程度上面避免過擬合。
訓(xùn)練時(shí)間
訓(xùn)練模型所需要的時(shí)間在不同算法之間是變化很大的,有些算法可能幾分鐘就可以訓(xùn)練完成,有些算法可能需要幾個小時(shí)才能訓(xùn)練完成。訓(xùn)練時(shí)間往往與模型準(zhǔn)確率是密切相關(guān)的,簡單的說,可能訓(xùn)練時(shí)間越長,模型的準(zhǔn)確率就越高。
另外,有些算法可能對數(shù)值離散點(diǎn)數(shù)據(jù)更加敏感,而有些可能對連續(xù)數(shù)據(jù)更加敏感。如果我們的數(shù)據(jù)集非常大,而且時(shí)間非常緊,那么根據(jù)模型的訓(xùn)練時(shí)間來選擇算法是一條非常好的路徑。
線性
很多的機(jī)器學(xué)習(xí)算法是可以利用線性模型來解決的。線性分類算法假設(shè)數(shù)據(jù)是可以利用一條直線來進(jìn)行分裂的。
線性回歸模型假設(shè)數(shù)據(jù)遵循一條直線劃分,這些假設(shè)對于一些數(shù)據(jù)分析并不是一個很壞的假設(shè),但是在某些方面,這些假設(shè)可能就會降低很多的準(zhǔn)確率。
對于一些非線性邊界 —— 依賴于線性分類模型就會降低很多的精度了。
有些數(shù)據(jù)可能無法簡單的判斷數(shù)據(jù)是線性的還是非線性的,但是在實(shí)際項(xiàng)目中很多的數(shù)據(jù)都會有一種非線性趨勢,這也是我們使用線性回歸方法產(chǎn)生比較大的誤差的一個原因。
盡管線性模型存在很多的不好方面,但是他往往是最簡單的算法,我們可以進(jìn)行快速開發(fā)和試錯。
模型參數(shù)
參數(shù)是機(jī)器學(xué)習(xí)模型中最重要的部分。比如,模型的迭代次數(shù),模型的規(guī)模大小等等都會影響到最后我們需要得到的結(jié)果,對算法的訓(xùn)練時(shí)間和準(zhǔn)確性都是非常敏感的。
通常,具有大量參數(shù)的算法都需要我們更多的實(shí)驗(yàn)和調(diào)參來找到一個最好的參數(shù)組合。
當(dāng)然大型的參數(shù)組合也是具有很多好處的,比如算法的靈活性會更加的強(qiáng)大。通常,我們可以得到一個更加好的模型結(jié)果。
個別算法的精準(zhǔn)使用
對于個別算法,我們需要認(rèn)真仔細(xì)的研究它的 “脾氣”,知道這些算法的輸入數(shù)據(jù)特征是什么,算法具體描述是什么,他們是如何工作的額,以及他們的輸出結(jié)果是代表什么含義。接下來,我們來學(xué)習(xí)幾個例子。
線性回歸是利用數(shù)理統(tǒng)計(jì)中回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法。預(yù)測值 y 與變量 X 之間的關(guān)系是:
其中訓(xùn)練數(shù)據(jù)集是:
參數(shù)向量 β 是我們需要模型學(xué)習(xí)的。
如果因變量不是連續(xù)的,而是離散分類的,那么線性回歸就需要被轉(zhuǎn)換成邏輯回歸。邏輯回歸是一種非常簡單,但是非常強(qiáng)大的分類算法。因此,當(dāng)我們討論二分類問題時(shí),可以把等式寫成:
在邏輯回歸中,我們使用不同的假設(shè)估計(jì)來區(qū)分屬于類別 “1” 的概率和屬于類別 “-1” 的概率。具體的說,我們嘗試學(xué)習(xí)的函數(shù)是:
其中,
決策樹和集成樹
決策樹,隨機(jī)森林和梯度提升都是基于決策樹實(shí)現(xiàn)的算法。決策樹有很多種,但是所有的變種都只做一件事 —— 將特征標(biāo)簽細(xì)分到特定相同的區(qū)域里面。決策樹是非常容易理解的,而且非常容易實(shí)現(xiàn)。
然而,當(dāng)我們把樹的深度做的很深的時(shí)候,模型就非常容易過擬合。這時(shí)候,采用隨機(jī)森林和梯度提升算法可以獲得良好的性能,這兩種模型也是目前比較流行的方式。
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)
神經(jīng)網(wǎng)絡(luò)是在 20 世紀(jì) 80 年代中期由于其并行和分布式的處理能力而興起的。近年來,由于卷積神經(jīng)網(wǎng)絡(luò),循環(huán)神經(jīng)網(wǎng)絡(luò)和一些無監(jiān)督學(xué)習(xí)算法的興起,圖形處理單元(GPU)和大規(guī)模并行處理(MPP)等越來越強(qiáng)大的計(jì)算能力,使得神經(jīng)網(wǎng)絡(luò)再次得到了復(fù)興。
換句話說,以前的淺層神經(jīng)網(wǎng)絡(luò)已經(jīng)演變成了深層神經(jīng)網(wǎng)絡(luò)。深度神經(jīng)網(wǎng)絡(luò)在監(jiān)督學(xué)習(xí)中取得了非常好的表現(xiàn),比如語音識別和圖像分類領(lǐng)域都獲得了比人類好的正確率。在無監(jiān)督領(lǐng)域,比如特征提取,深度學(xué)習(xí)也取得了很好的效果。
一般情況下,一個神經(jīng)網(wǎng)絡(luò)主要由三方面組成:輸入層,隱藏層和輸出層。訓(xùn)練數(shù)據(jù)定義了輸入層和輸出層的維度大小。當(dāng)我們的輸出層是一些分類標(biāo)簽的時(shí)候,那么那么我們整個模型所處理的就是一個分類問題。當(dāng)輸出層是一個連續(xù)變量的時(shí)候,那么我們的整個模型所處理的就是一個回歸問題。當(dāng)我們的輸出層和輸入層相同時(shí),那么我們的這個模型所處理的可能是提取數(shù)據(jù)內(nèi)部的特征。中間的隱藏層大小決定了整個模型的復(fù)雜性和建模能力。
總結(jié)
至此,我們已經(jīng)學(xué)習(xí)了幾個算法的精準(zhǔn)使用。在我們實(shí)際的項(xiàng)目中,我們需要做到對自己所熟悉的個別算法靈活使用。具體的算法表,可以查看下面這個:
圖中標(biāo)記解釋:● - 表示擁有卓越的精確度,快速訓(xùn)練時(shí)間和線性度 ;○ - 表示良好的準(zhǔn)確性和適中的訓(xùn)練時(shí)間。參數(shù)字段中的數(shù)值越大表示模型需要的參數(shù)數(shù)量越多。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03