機器學習算法備忘單!
Datawhale干貨 作者:Anthony Barrios,編譯:追風者
機器學習(ML)是人工智能(AI)和計算機科學的一個子領域,主要是利用數(shù)據(jù)和算法來模仿人的學習方式,逐步提高其準確性。使用這個樹狀圖作為指南,以確定使用哪種ML算法來解決你的AI問題。

圖片來源:LatinX 在 AI? 中的機器學習算法備忘單
如果你想知道在不同的應用程序中使用哪些機器學習算法,或者你是一個開發(fā)者,同時為你試圖解決的問題尋找一種方法,請繼續(xù)閱讀下文,并以這些步驟作為指導。
無監(jiān)督學習使用未標記的信息數(shù)據(jù),這樣機器應該在沒有指導的情況下根據(jù)模式、相似性和差異來工作。
另一方面,有監(jiān)督學習有一個 "老師" 存在,他負責通過標記數(shù)據(jù)來訓練機器工作。接下來,機器會收到一些示例,使其能夠產(chǎn)生正確的結果。
但是對于這些類型的學習,有一種混合的方法,這種半監(jiān)督學習適用于有標簽和無標簽的數(shù)據(jù)。這種方法使用一個極小的標記數(shù)據(jù)集來訓練和標記其余數(shù)據(jù),并進行相應的預測,最后給出問題的解決方案。
首先,你需要知道你所處理的維數(shù),它意味著你的問題中輸入的數(shù)量(也被稱為特征)。如果你正在處理一個大數(shù)據(jù)集或許多特征,你可以選擇降維算法。
一、無監(jiān)督學習:降維
數(shù)據(jù)集合中的大量維度可能會對機器學習算法的性能產(chǎn)生重大影響。"維度詛咒" 是一個用來描述大維度可能造成的麻煩的術語,例如,聚類中的 "距離聚集(Distance Concentration)" 問題,即隨著數(shù)據(jù)維度的增加,不同的數(shù)據(jù)點會有相同的值。
最小化訓練數(shù)據(jù)中輸入變量數(shù)量的技術被稱為 "降維"。
現(xiàn)在你需要熟悉特征提取和特征選擇的概念,以便繼續(xù)學習。
將原始數(shù)據(jù)轉化為可以處理的數(shù)字特征,同時保留原始數(shù)據(jù)集的信息,這一過程被稱為特征提取。它比直接將機器學習應用于原始數(shù)據(jù)產(chǎn)生更好的結果。
它用于三種已知的降維算法,包括主成分分析、奇異值分解和線性判別分析,但你需要清楚地知道你想用哪種工具來尋找模式或從數(shù)據(jù)中推斷出新的信息。
如果你不希望合并數(shù)據(jù)中的變量,而是想通過只保留重要的特征來去除不需要的特征,那么你可以使用主成分分析算法。
PCA(主成分分析)
主成分分析是一種降低數(shù)據(jù)集維數(shù)的數(shù)學算法,在保留大部分信息的同時簡化變量的數(shù)量。這種以準確性換取簡單性的方法被廣泛用于在大型數(shù)據(jù)集中尋找模式。

圖片來源:什么是主成分分析?
https://liorpachter.wordpress.com/2014/05/26/what-is-principal-component-analysis/
在線性連接方面,它在有大量數(shù)據(jù)存在的情況下有著廣泛的應用,如媒體編輯、統(tǒng)計質量控制、投資組合分析,以及人臉識別、圖像壓縮等許多應用。
另外,如果你想要一個通過組合你正在使用的數(shù)據(jù)的變量來工作的算法,簡單的PCA可能不是你使用的最佳工具。接下來,你可以有一個概率模型或一個非概率模型。概率數(shù)據(jù)是涉及到隨機選擇的數(shù)據(jù),是大多數(shù)科學家的首選,可以得到更準確的結果。而非概率數(shù)據(jù)不涉及這種隨機性。
如果你正在處理非概率數(shù)據(jù),你應該使用奇異值分解算法。
SVD(奇異值分解)
在機器學習領域,SVD允許數(shù)據(jù)被轉化為一個可以輕松區(qū)分類別的空間。這種算法將一個矩陣分解為三個不同的矩陣。例如,在圖像處理中,使用數(shù)量減少的矢量來重建與原始圖像非常接近的圖片。

使用給定數(shù)量的組件壓縮圖像
與PCA算法相比,兩者都可以對數(shù)據(jù)進行降維處理。但PCA跳過了不太重要的成分,而SVD只是把它們變成特殊的數(shù)據(jù),表示為三個不同的矩陣,更容易操作和分析。
當涉及到概率方法時,對于更抽象的問題,最好使用線性判別分析算法。
LDA(線性判別分析)
線性判別分析(LDA)是一種分類方法,在這種方法中,先前已經(jīng)確定了兩個或更多的組,根據(jù)其特征將新的觀察結果歸為其中一個。
它不同于PCA,因為LDA發(fā)現(xiàn)了一個優(yōu)化組可分離性的特征子空間,而PCA忽略了類標簽,專注于捕捉數(shù)據(jù)集的最高方差方向。
該算法使用貝葉斯定理,這是一個概率定理,用于根據(jù)一個事件與另一個事件的關系來確定其發(fā)生的可能性。
它經(jīng)常被用于人臉識別、客戶識別和醫(yī)學領域,以識別病人的疾病狀況。

從UMIST數(shù)據(jù)庫中隨機選取的五個主體(類)的170張人臉圖像在(a)基于PCA的子空間,(b)基于D-LDA的子空間,以及(c)基于DF-LDA的子空間的分布。
資料來源:Face recognition using LDA-based algorithms
https://www.researchgate.net/publication/5613964FacerecognitionusingLDA-based_algorithms
下一步是選擇你是否希望你的算法有響應,這意味著你要開發(fā)一個基于標記數(shù)據(jù)的預測模型來教導你的機器。如果你愿意使用非標簽數(shù)據(jù),你可以使用聚類技術,這樣你的機器就可以在沒有指導的情況下工作,搜索相似性。
另一方面,選擇相關特征(變量、預測因子)的子集用于模型創(chuàng)建的過程被稱為特征選擇。它有助于簡化模型,使研究人員和用戶更容易理解它們,以及減少訓練周期和避免維度詛咒。
它包括聚類法、回歸法和分類法。
二、監(jiān)督學習:聚類
聚類是一種分離具有相似特征的群體并將其分配到群組的技術。
如果你正在尋找一種分層的算法:
Hierarchical Clustering(層次聚類)
這種類型的聚類是機器學習中最流行的技術之一。層次聚類協(xié)助一個組織對數(shù)據(jù)進行分類,以確定相似性,以及不同的分組和特征,從而使其定價、商品、服務、營銷信息和其他方面的業(yè)務有的放矢。它的層次結構應顯示出類似于樹狀數(shù)據(jù)結構的數(shù)據(jù),即所謂的樹狀圖。有兩種方法對數(shù)據(jù)進行分組:聚類和分化。
聚合式聚類是一種 "自下而上" 的方法。換句話說,每個項目首先被認為是一個單元素集群(葉子)。在該方法的每個階段,最具可比性的兩個集群被連接成一個新的更大的集群(結點)。這種方法反復進行,直到所有的點都屬于單個大簇(根)。
分化聚類以一種 "自上而下" 的方式工作。它從根部開始,所有項目都分組在一個集群中,然后在每個迭代階段將最多的項目分成兩個。迭代程序直到所有的項目都在他們的組中。
如果你不尋找分層解決方案,則必須確定你的方法是否需要指定要使用的集群數(shù)量。如果你不需要定義,你可以利用基于密度的有噪聲的應用程序空間聚類算法。
DBSCAN(基于密度的有噪聲的應用程序空間聚類法)
當涉及到任意形狀的聚類或檢測異常值時,最好使用基于密度的聚類方法。DBSCAN是一種檢測那些任意形狀的聚類和有噪聲的聚類方法,它根據(jù)兩個參數(shù):eps和minPoints將彼此接近的點分組。
eps告訴我們兩個點之間需要有多大的距離才能被視為一個集群。而minPoints是創(chuàng)建一個集群的最小點數(shù)。
我們在分析Netflix服務器的異常值時使用了這種算法。流媒體服務運行著數(shù)以千計的服務器,通常只有不到百分之一的服務器能夠變得不健康,這會降低流媒體的性能。真正的問題是這個問題不容易被發(fā)現(xiàn),為了解決這個問題,Netflix使用DBSCAN指定一個要監(jiān)測的指標,然后收集數(shù)據(jù),最后傳遞給算法來檢測服務器的異常值。

資料來源:Tracking down the Villains: Outlier Detection at Netflix
日常使用可以是電子商務向客戶推薦產(chǎn)品。對用戶之前購買過的產(chǎn)品數(shù)據(jù)應用DBSCAN。
如果你需要指定聚類的數(shù)量,有三種現(xiàn)有的算法可供使用,包括K-Modes、K-Means和高斯混合模型。接下來,你需要知道是否要使用分類變量,這是一種離散變量,通過對觀察值進行分組來捕捉定性的后果。如果你要使用它們,你可以選擇K-Modes。
K-Modes
這種方法被用來對分類變量進行分組。我們確定這些類型的數(shù)據(jù)點之間的總不匹配度。我們的數(shù)據(jù)點之間的差異越少,它們就越相似。
K-Modes和K-Means之間的主要區(qū)別是:對于分類數(shù)據(jù)點,我們不能計算距離,因為它們不是數(shù)字值。
這種算法被用于文本挖掘應用、文檔聚類、主題建模(每個聚類組代表一個特定的主題)、欺詐檢測系統(tǒng)和市場營銷。
對于數(shù)值型數(shù)據(jù),你應該使用K-Means聚類。
K-Means
數(shù)據(jù)被聚類為k個組,其方式是同一聚類中的數(shù)據(jù)點是相關的,而其他聚類中的數(shù)據(jù)點則相距較遠。這種距離經(jīng)常用歐幾里得距離來衡量。換句話說,K-Means算法試圖最小化聚類內的距離,最大化不同聚類之間的距離。
搜索引擎、消費者細分、垃圾郵件檢測系統(tǒng)、學術表現(xiàn)、缺陷診斷系統(tǒng)、無線通信和許多其他行業(yè)都使用K-Means聚類。
如果預期的結果是基于概率的,那么你應該使用高斯混合模型。
GMM(高斯混合模型)
這種方法意味著存在許多高斯分布,每個高斯分布代表一個集群。該算法將確定每個數(shù)據(jù)點屬于給定批次數(shù)據(jù)的每個分布的概率。
GMM與K-Means不同,因為在GMM中,我們不知道一個數(shù)據(jù)點是否屬于一個指定的聚類,我們使用概率來表達這種不確定性。而K-Means方法對一個數(shù)據(jù)點的位置是確定的,并開始在整個數(shù)據(jù)集上迭代。
高斯混合模型經(jīng)常被用于信號處理、語言識別、異常檢測和音樂的流派分類。
在使用標記數(shù)據(jù)來訓練機器的情況下,首先,你需要指定它是否要預測數(shù)字,這種數(shù)字預測將有助于算法解決問題。如果是這樣的話,你可以選擇回歸算法。
三、監(jiān)督學習:回歸
回歸是一種機器學習算法,其結果被預測為一個連續(xù)的數(shù)值。這種方法通常用于銀行、投資和其他領域。
在這里,你需要對速度和準確性做出取舍。如果你正在尋找速度,你可以使用決策樹算法或線性回歸算法。
決策樹
決策樹是一個類似樹形數(shù)據(jù)結構的流程圖。在這里,數(shù)據(jù)根據(jù)一個給定的參數(shù)被連續(xù)分割。每個參數(shù)允許在一個樹節(jié)點中,而整個樹的結果位于葉子中。有兩種類型的決策樹。
分類樹(是/否類型),這里的決策變量是分類的。 回歸樹(連續(xù)數(shù)據(jù)類型),這里的決策或結果變量是連續(xù)的。
當特征和輸出變量之間存在復雜的相互作用時,決策樹就會派上用場。當存在缺失的特征,類別和數(shù)字特征的混合,或特征大小的巨大差異時,與其他方法相比,它們的表現(xiàn)更好。
該算法用于提高促銷活動的準確性、欺詐檢測以及患者嚴重或可預防疾病的檢測。
線性回歸
基于一個給定的自變量,這種方法預測因變量的值。因此,這種回歸方法決定了輸入(自變量)和輸出(因變量)之間是否存在線性聯(lián)系。這也是線性回歸這一術語的由來。
線性回歸非常適合于那些特征和輸出變量具有線性關系的數(shù)據(jù)集。
它通常用于預測(這對小公司了解銷售效果特別有用),了解廣告支出和收入之間的聯(lián)系,以及在醫(yī)療行業(yè)了解藥物劑量和病人血壓之間的相關性。
另外,如果你的算法需要準確性,你可以使用以下三種算法。神經(jīng)網(wǎng)絡、梯度提升樹和隨機森林。
神經(jīng)網(wǎng)絡
需要一個神經(jīng)網(wǎng)絡來學習特征和目標之間復雜的非線性關系。它是一種模擬人腦中神經(jīng)元工作的算法。有幾種類型的神經(jīng)網(wǎng)絡,包括香草神經(jīng)網(wǎng)絡(只處理結構化數(shù)據(jù)),以及循環(huán)神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡,它們都可以處理非結構化數(shù)據(jù)。
當你有大量的數(shù)據(jù)(和處理能力),并且準確性對你很重要時,你幾乎肯定會利用神經(jīng)網(wǎng)絡。
這種算法有很多應用,例如釋義檢測、文本分類、語義解析和問答。
Gradient Boosting Tree(梯度提升樹)
梯度提升樹是一種將不同樹的輸出合并進行回歸或分類的方法。這兩種監(jiān)督學習都結合了大量的決策樹,以減少每棵樹單獨面對的過擬合的危險(一種統(tǒng)計建模錯誤,當一個函數(shù)與少量數(shù)據(jù)點過于緊密匹配時,就會出現(xiàn)這種情況,使得模型的預測能力下降)。這種算法采用了Boosting,它需要連續(xù)組合弱學習器(通常是只有一次分裂的決策樹,稱為決策樹樁),以便每棵新樹都糾正前一棵樹的錯誤。
當我們希望減少偏差誤差時,也就是模型的預測與目標值之間的差異,我們通常采用梯度提升算法。
當數(shù)據(jù)的維度較少,基本的線性模型表現(xiàn)不佳,可解釋性并不重要,而且沒有嚴格的延遲限制時,梯度提升算法是最有利的。
它被用在很多研究中,比如基于大師級運動員動機的性別預測算法,使用梯度提升決策樹,探索他們基于心理維度預測性別的能力,評估參加大師級運動的原因作為統(tǒng)計方法。
隨機森林
隨機森林是一種解決回歸和分類問題的方法。它利用了集成學習,這是一種通過結合幾個分類器來解決復雜問題的技術。
它由許多決策樹組成,其中每一個決策樹的結果都會以平均或平均決策的方式得出最終結果。樹的數(shù)量越多,結果的精確度就越高。
當我們有一個巨大的數(shù)據(jù)集并且可解釋性不是一個關鍵問題時,隨機森林是合適的,因為隨著數(shù)據(jù)集的增大,它變得越來越難以把握。
這種算法被用于股票市場分析、醫(yī)療領域的病人診斷、預測貸款申請人的信用度,以及欺詐檢測。
對于非數(shù)字預測算法,你可以選擇分類方法而不是回歸。
四、監(jiān)督學習:分類
與回歸方法一樣,你選擇的結果是偏向于速度還是準確性。
如果你在尋找準確性,你不僅可以選擇核支持向量機,還可以使用之前提到的其他算法,如神經(jīng)網(wǎng)絡、梯度提升樹和隨機森林?,F(xiàn)在,讓我們來介紹一下這個新算法。
Kernel Support Vector Machine(核支持向量機)
在支持向量機模型中,通常使用核技術來連接線性和非線性。為了理解這一點,有必要知道SVM方法學習如何通過形成決策邊界來分離不同的組。
但是,當我們在一個維度較高的數(shù)據(jù)集面前,而且成本昂貴時,建議使用這種核方法。它使我們能夠在原始特征空間中工作,而不必在高維空間中計算數(shù)據(jù)的坐標。
它主要用于文本分類問題,因為大多數(shù)問題都可以被線性分離。
當需要速度的時候,我們需要看看我們要采用的技術是否是可解釋的,這意味著它可以解釋你的模型中從頭到尾發(fā)生了什么。在這種情況下,我們可能會使用決策樹算法或Logistic回歸算法。
Logistic Regression(邏輯回歸)
當因變量是分類的時候,就會使用Logistic回歸。通過概率估計,它有助于理解因變量和一個或多個自變量之間的聯(lián)系。
有三種不同類型的Logistic回歸。
二元邏輯回歸,響應只有兩個可能的值。 多項式Logistic回歸,三個或更多的結果,沒有順序。 有序邏輯回歸,三個或更多的類別,有順序。
邏輯回歸算法在酒店預訂中被廣泛使用,它(通過統(tǒng)計研究)向你展示了你在預訂中可能想要的選項,如酒店房間、該地區(qū)的一些行程等等。
如果你只對問題的輸入和輸出感興趣,你可以檢查你所處理的數(shù)據(jù)是否太大。如果數(shù)量很大,你可以使用線性支持向量機。
Linear Support Vector Machine(線性支持向量機)
線性SVM用于線性可分離的數(shù)據(jù)。它在具有不同變量的數(shù)據(jù)(線性可分離數(shù)據(jù))中工作,這些變量可以用一條簡單的直線(線性SVM分類器)來分離。這條直線代表了用戶的行為或通過既定問題的結果。
由于文本通常是線性可分離的,并且有很多特征,因此線性SVM是用于其分類的最佳選擇。
在我們的下一個算法中,如果數(shù)據(jù)量大或者不大,你都可以使用它。
Na?ve Bayes(樸素貝葉斯)
這種算法是基于貝葉斯定理的。它包括通過對象的概率進行預測。它被稱為Na?ve(樸素),是因為它假設一個特征的出現(xiàn)與其他特征的出現(xiàn)無關。
這種方法深受歡迎,因為它甚至可以超越最復雜的分類方法。此外,它構造簡單,可迅速建立。
由于其易于使用和高效,它被用來做實時決策。與此同時,Gmail使用這種算法來知道一封郵件是否是垃圾郵件。
Gmail垃圾郵件檢測選擇一組詞或 "標記" 來識別垃圾郵件(這種方法也用于文本分類,它通常被稱為詞袋)。接下來,他們使用這些tokens(令牌),將其與垃圾郵件和非垃圾郵件進行比較。最后,使用Na?ve Bayes算法,他們計算出該郵件是否是垃圾郵件的概率。
總結
我們發(fā)現(xiàn),機器學習是一種被廣泛使用的技術,由于它經(jīng)常發(fā)生,因此我們無法識別許多應用。在這篇文章中,我們不僅區(qū)分了機器學習的不同方法,還區(qū)分了如何根據(jù)我們正在處理的數(shù)據(jù)和我們想要解決的問題來使用它們。
要學習機器學習,你必須具備一些微積分、線性代數(shù)、統(tǒng)計學和編程技能的知識。你可以使用不同的編程語言來實現(xiàn)其中一種算法,從Python到C++,以及R語言。這取決于你做出最好的決定,并與你的機器一起開始學習。
原文鏈接??:
https://medium.com/accel-ai/machine-learning-algorithms-cheat-sheet-990104aaaabc
整理不易,點贊三連↓
