《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 一文讀懂如何選擇正確的機器學(xué)習算法

一文讀懂如何選擇正確的機器學(xué)習算法

2018-07-09
關(guān)鍵詞: 機器學(xué)習算法 Binning PCA

  機器學(xué)習既是一門科學(xué),也是一種藝術(shù)??v觀各類機器學(xué)習算法,并沒有一種普適的解決方案或方法。事實上,有幾個因素會影響你對機器學(xué)習算法的選擇。

  有些問題是非常特別的,需要用一種特定的解決方法。例如,如果你對推薦系統(tǒng)有所了解,你會發(fā)現(xiàn)它是一類很常用的機器學(xué)習算法,用來解決一類非常特殊的問題。而其它的一些問題則非常開放,可能需要一種試錯方法(例如:強化學(xué)習)。監(jiān)督學(xué)習、分類、回歸等問題都是非常開放的,可以被用于異常檢測或建立更加廣泛的預(yù)測模型。

  此外,我們在選擇機器學(xué)習算法時所做出的一些決定與算法的優(yōu)化或技術(shù)層面關(guān)系并不大,而更多地與業(yè)務(wù)決策相關(guān)。下面,讓我們一起來看看有哪些因素能幫你縮小機器學(xué)習算法的選擇范圍。

  數(shù)據(jù)科學(xué)過程

  在你開始研究不同的機器學(xué)習算法前,你需要對自己擁有的數(shù)據(jù)、面對的問題及相關(guān)約束有清晰的了解。

  理解你的數(shù)據(jù)

  當我們決定使用哪種算法時,我們所擁有的數(shù)據(jù)的類型和形態(tài)起著關(guān)鍵性的作用。有些算法可以利用較小的樣本集合工作,而另一些算法則需要海量的樣本。特定的算法對特定類型的數(shù)據(jù)起作用。例如,樸素貝葉斯算法對處理待分類的輸入特別有效,但是對于缺失值則一點都不敏感。

  因此,你需要做到:

  了解你的數(shù)據(jù)

  1. 查看總結(jié)統(tǒng)計和數(shù)據(jù)可視化的結(jié)果

  百分比可以幫助你識別大多數(shù)數(shù)據(jù)的范圍

  平均數(shù)和中位數(shù)可以描述集中趨勢

  相關(guān)系數(shù)可以指出強的關(guān)聯(lián)性

  2. 數(shù)據(jù)可視化

  箱形圖可以識別出異常值

  密度圖和直方圖可以顯示出數(shù)據(jù)的散布情況

  散點圖可以描述二元關(guān)系

  數(shù)據(jù)清洗

  1. 處理缺失值。

  缺失的數(shù)據(jù)對于某些模型的影響比對其它模型更大。即使是對于那些被用于處理缺失數(shù)據(jù)的模型來說,它們也可能對缺失數(shù)據(jù)很敏感(某些變量的缺失數(shù)據(jù)可能導(dǎo)致預(yù)測性能變差)

  2. 選擇處理異常值的方法

  異常值在多維數(shù)據(jù)中十分常見。

  有些模型對異常值的敏感性比其它模型要低。通常而言,樹模型對于異常值的存在不太敏感。然而回歸模型、或者任何試圖使用方程的模型都會受到異常值的嚴重影響。

  異常值可能是糟糕的數(shù)據(jù)收集造成的,也可能是合理的極值。

  3. 數(shù)據(jù)需要被聚合嗎?

  數(shù)據(jù)增強

  1.特征工程是從原始數(shù)據(jù)中產(chǎn)生能夠被用于建模的數(shù)據(jù)的過程,可以起到以下幾種作用:

  使模型更容易被解釋(如數(shù)據(jù)分箱(binning))

  捕獲更復(fù)雜的關(guān)系(如神經(jīng)網(wǎng)絡(luò))

  減少數(shù)據(jù)冗余并降低數(shù)據(jù)維度(如主成分分析(PCA))

  重新縮放變量(如標準化或歸一化)

  2. 不同的模型可能有不同的特征工程的要求。有的模型有內(nèi)置的特征工程。

  對問題進行分類

  下一步是對問題進行分類。這是一個需要分兩步實現(xiàn)的過程。

  1. 根據(jù)輸入分類:

  如果你擁有的是帶標簽的數(shù)據(jù),那么這就是一個監(jiān)督學(xué)習問題。

  如果你擁有的是未標注過的數(shù)據(jù),并且希望從中找到有用的結(jié)構(gòu),那么這就是一個無監(jiān)督學(xué)習問題。

  如果你想要通過與環(huán)境的交互來優(yōu)化一個目標函數(shù),那么這就是一個強化學(xué)習問題。

  2. 根據(jù)輸出分類:

  如果模型的輸出是一個(連續(xù)的)數(shù)字,那么這就是一個回歸問題。

  如果模型的輸出是一個類別,那么這就是一個分類問題。

  如果模型的輸出是一組用輸入數(shù)據(jù)劃分出的簇,那么這就是一個聚類問題。

  你想發(fā)現(xiàn)一個異常點嗎?此時你面對的就是一個異常檢測問題。

  理解你要滿足的約束條件

  你需要考慮你能夠存儲數(shù)據(jù)的容量有多大?這取決于系統(tǒng)的存儲容量,你可能無法存儲若干 GB 大小的分類、回歸模型或者若干 GB 的用于聚類分析的數(shù)據(jù)。例如,在嵌入式系統(tǒng)中,你就會面臨這種情況。

  對預(yù)測過程的速度是否有要求?在實時應(yīng)用中,很顯然,盡快得出預(yù)測結(jié)果是十分重要的。例如,在自動駕駛問題中,應(yīng)用必須盡可能快地對道路標志進行分類,以免發(fā)生交通事故。

  對學(xué)習過程的速度是否有要求?在某些情況下,快速訓(xùn)練模型是十分必要的:有時,你需要使用不同的數(shù)據(jù)集快速地實時更新你的模型。

  尋找可用的算法

  當對自己的任務(wù)環(huán)境有了一個清晰的認識后,你就可以使用你所掌握的工具確定適用于待解決的問題并切實可行的算法。一些影響你選擇模型的因素如下:

  模型是否滿足業(yè)務(wù)目標

  模型需要多少數(shù)據(jù)預(yù)處理工作

  模型有多準確

  模型的可解釋性如何

  模型運行的速度有多快:構(gòu)造模型需要多久?模型做出預(yù)測需要多長時間?

  模型的可伸縮性如何

  模型的復(fù)雜度是一個影響算法選擇的重要標準。一般來說,一個更復(fù)雜的模型具備下列特征:

  它依賴于更多的特征進行學(xué)習和預(yù)測(例如,使用十個而不是兩個特征來預(yù)測目標)

  它依賴于更復(fù)雜的特征工程(例如,使用多項式特征、交互特征或主成分)

  它有更大的計算開銷(例如,需要一個由 100 棵決策樹組成的隨機森林,而不是一棵單獨的決策樹)

  除此之外,同樣的機器學(xué)習算法可以基于參數(shù)的個數(shù)和某些超參數(shù)的選擇而變得更加復(fù)雜。例如:

  回歸模型可以擁有更多的特征,或者多項式項和交互項。

  決策樹可以擁有更大或更小的深度。

  將相同的算法變得更加復(fù)雜增加了發(fā)生過擬合的幾率。

1.png

  常用的機器學(xué)習算法

  線性回歸

  這可能是機器學(xué)習中最簡單的算法。例如,當你想要計算一些連續(xù)值,而不是將輸出分類時,可以使用回歸算法。因此,當你需要預(yù)測一個正在運行的過程未來的值時,你可以使用回歸算法。然而,當特征冗余,即如果存在多重共線性(multicollinearity)時,線性回歸就不太穩(wěn)定。

  在下列情況下可以考慮使用線性回歸:

  從一個地方移動到另一個地方所需的時間

  預(yù)測下個月某種產(chǎn)品的銷售情況

  血液中的酒精含量對協(xié)調(diào)能力的影響

  預(yù)測每個月禮品卡的銷售情況,并改善年收入的估算

  Logistic 回歸

  Logistic 回歸執(zhí)行二進制分類,因此輸出二值標簽。它將特征的線性組合作為輸入,并且對其應(yīng)用非線性函數(shù)(sigmoid),因此它是一個非常小的神經(jīng)網(wǎng)絡(luò)的實例。

  logistic 回歸提供了許多方法對你的模型進行正則化處理,因此正如在樸素貝葉斯算法中那樣,你不必擔心你的特征是否相關(guān)。該模型還有一個很好的概率化的解釋。不像在決策樹或者支持向量機中那樣,你可以很容易地更新你的模型以獲取新的數(shù)據(jù)。如果你想要使用一個概率化的框架,或者你希望在未來能夠快速地將更多的訓(xùn)練數(shù)據(jù)融合到你的模型中,你可以使用 logistic 回歸算法。logistic 回歸還可以幫助你理解預(yù)測結(jié)果背后起作用的因素,它不完全是一個黑盒方法。

  在下列情況下可以考慮使用 logistic 回歸算法:

  預(yù)測客戶流失

  信用評分和欺詐檢測

  評價市場營銷活動的效果

  決策樹

  決策樹很少被單獨使用,但是不同的決策樹可以組合成非常高效的算法,例如隨機森林或梯度提升樹算法。

  決策樹很容易處理特征交互,并且決策樹是一種非參數(shù)模型,所以你不必擔心異常值或者數(shù)據(jù)是否是線性可分的。決策樹算法的一個缺點是,它們不支持在線學(xué)習,因此當你要使用新的樣本時,你不得不重新構(gòu)建決策樹。決策樹的另一個缺點是,它很容易發(fā)生過擬合,而這就是像隨機森林(或提升樹)這樣的集成學(xué)習方法能夠派上用場的地方。決策樹也需要大量的內(nèi)存空間(擁有的特征越多,你的決策樹可能會越深、越大)

  決策樹能夠很好地幫助你在諸多行動路徑中做出選擇:

  做出投資決策

  預(yù)測客戶流失

  找出可能拖欠銀行貸款的人

  在「建造」和「購買」兩種選擇間進行抉擇

  銷售主管的資質(zhì)審核

  K-均值

  有時,你完全沒有數(shù)據(jù)的標簽信息,并且你的目的是根據(jù)對象的特征來為其打上標簽。這種問題被稱為聚類任務(wù)。聚類算法可以在這種情況下被使用:例如,當你有一大群用戶,你希望根據(jù)他們共有的一些屬性將其劃分到一些特定的組中。

  如果在你的問題聲明中有這樣的問題:例如,找出一群個體的組織形式,或?qū)⒛承〇|西分組,或找出特定的組。這時,你就應(yīng)該使用聚類算法。

  該方法最大的缺點是,K-均值算法需要提前知道你的數(shù)據(jù)會有多少簇,因此這可能需要進行大量的試驗去「猜測」我們最終定義的簇的最佳個數(shù)——K。

  主成分分析(PCA)

  主成分分析能夠?qū)?shù)據(jù)進行降維。有時,你擁有各種各樣的特征,這些特征之間的相關(guān)性可能很高,而模型如果使用如此大量的數(shù)據(jù)可能會產(chǎn)生過擬合現(xiàn)象。這時,你可以使用主成分分析(PCA)技術(shù)。

  主成分分析(PCA)能夠起作用的關(guān)鍵因素是:除了低維的樣本表征,它還提供了各種變量的一種同步的低維表征。同步的樣本和變量的表征提供了一種能夠可視化地找到能夠表示一組樣本的特征的變量的方法。

  支持向量機

  支持向量機(SVM)是一種在模式識別和分類問題中被廣泛應(yīng)用的監(jiān)督機器學(xué)習技術(shù)——當你的數(shù)據(jù)恰好有兩類時。

  支持向量機準確率高,對于防止過擬合很好的理論保障。當你使用一個合適的核函數(shù)時,即使你的數(shù)據(jù)在基(低維)特征空間中是線性不可分的,他們也可以很好地工作。支持向量機在文本分類問題中非常流行,在該問題中,輸入是一個維度非常高的空間是很正常的。然而,SVM 是一種內(nèi)存密集型算法,它很難被解釋,并且對其進行調(diào)優(yōu)十分困難。

  在下列現(xiàn)實世界的應(yīng)用中,你可以使用支持向量機:

  發(fā)現(xiàn)患有糖尿病等常見疾病的人

  手寫字符識別

  文本分類——將文章按照話題分類

  股票市場價格預(yù)測

  樸素貝葉斯

  這是一種基于貝葉斯定理的分類技術(shù),它很容易構(gòu)建,非常適用于大規(guī)模數(shù)據(jù)集。除了結(jié)構(gòu)簡單,據(jù)說樸素貝葉斯的表現(xiàn)甚至比一些復(fù)雜得多的分類方法更好。當 CPU 和內(nèi)存資源有限時,樸素貝葉斯算法也是一個很好的選項。

  樸素貝葉斯非常簡單,你僅僅是在做大量的計數(shù)工作。如果樸素貝葉斯的條件獨立假設(shè)確實成立,樸素貝葉斯分類器的收斂速度會比 logistic 回歸這樣的判別模型更快,因此需要的訓(xùn)練數(shù)據(jù)更少。即使樸素貝葉斯的假設(shè)不成立,樸素貝葉斯分類器往往也能很好地完成任務(wù)。如果你想使用一種快速的、簡單的、性能也不錯的模型,樸素貝葉斯是一個很好的選擇。這種算法最大的缺點就是它不能學(xué)習到特征之間的相互作用。

  在下列真實世界的應(yīng)用中,你可以使用樸素貝葉斯:

  情感分析和文本分類

  類似于 Netflix、Amazon 這樣的推薦系統(tǒng)

  識別垃圾郵件

  人臉識別

  隨機森林

  隨機森林是一種決策樹的集成方法。它能夠同時解決具有大規(guī)模數(shù)據(jù)集的回歸問題和分類問題,還有助于從數(shù)以千計的輸入變量中找出最重要的變量。隨機森林具有很強的可伸縮性,它適用于任何維數(shù)的數(shù)據(jù),并且通常具有相當不錯的性能。此外,還有一些遺傳算法,它們可以在具有最少的關(guān)于數(shù)據(jù)本身的知識的情況下,很好地擴展到任何維度和任何數(shù)據(jù)上,其中最簡單的實現(xiàn)就是微生物遺傳算法。然而,隨機森林學(xué)習的速度可能會很慢(取決于參數(shù)設(shè)置),并且這種方法不能迭代地改進生成模型。

  在下列現(xiàn)實世界的應(yīng)用中,你可以使用隨機森林:

  預(yù)測高?;颊?/p>

  預(yù)測零件在生產(chǎn)中的故障

  預(yù)測拖欠貸款的人

  神經(jīng)網(wǎng)絡(luò)

  神經(jīng)網(wǎng)絡(luò)中包含著神經(jīng)元之間連接的權(quán)重。這些權(quán)重是平衡的,逐次對數(shù)據(jù)點進行學(xué)習。當所有的權(quán)重都被訓(xùn)練好后,如果需要對新給定的數(shù)據(jù)點進行回歸,神經(jīng)網(wǎng)絡(luò)可以被用于預(yù)測分類結(jié)果或一個具體數(shù)值。利用神經(jīng)網(wǎng)絡(luò),可以對特別復(fù)雜的模型進行訓(xùn)練,并且將其作為一種黑盒方法加以利用,而在訓(xùn)練模型之前,我們無需進行不可預(yù)測的復(fù)雜特征工程。通過與「深度方法」相結(jié)合,甚至可以采用更加不可預(yù)測的模型去實現(xiàn)新任務(wù)。例如,最近人們已經(jīng)通過深度神經(jīng)網(wǎng)絡(luò)大大提升了物體識別任務(wù)的結(jié)果。深度學(xué)習還被應(yīng)用于特征提取這樣的非監(jiān)督學(xué)習任務(wù),也可以在人為干預(yù)更少的情況下,從原始圖像或語音中提取特征。

  另一方面,神經(jīng)網(wǎng)絡(luò)很難被解釋清楚,其參數(shù)設(shè)置也復(fù)雜地讓人難以置信。此外,神經(jīng)網(wǎng)絡(luò)算法也都是資源密集型和內(nèi)存密集型的。

  SCIKIT 參考手冊

  Scikit learning 為大家提供了一個非常深入的、解釋地很清楚的流程圖,它能夠幫助你選擇正確的算法。我認為此圖十分方便。

1.png

  結(jié)論

  一般來說,你可以根據(jù)上面介紹的要點來篩選出一些算法,但是要想在一開始就知道哪種方法最好是很難的。你最好多迭代幾次選擇算法的過程。將你的數(shù)據(jù)輸入給那些你確定的潛在優(yōu)秀機器學(xué)習算法,通過并行或串行的方式運行這些算法,最終評估算法性能,從而選擇出最佳的算法。

  在最后,我想告訴你:為現(xiàn)實生活中的問題找到正確的解決方案,通常不僅僅是一個應(yīng)用數(shù)學(xué)方法的問題。這要求我們對業(yè)務(wù)需求、規(guī)則和制度、相關(guān)利益者的關(guān)注點有所了解,并且具備大量的專業(yè)知識。在解決一個機器學(xué)習問題的同時,能夠結(jié)合并平衡這些問題是至關(guān)重要的,那些能做到這一點的人可以創(chuàng)造最大的價值。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。