機器學習常用35大算法
原文鏈接:https://www.52ml.net/19675.html
本文將帶你遍歷機器學習領域最受歡迎的算法。系統的了解這些算法有助於進一步掌握機器學習。當然,本文收錄的算法並不完全,分類的方式也不唯一。不過,看完這篇文章后,下次再有算法提起,你想不起它長處和用處的可能性就很低了。本文還附有兩張算法思維導圖供學習使用。
在本文中,我將提供兩種分類機器學習算法的方法。一是根據學習方式分類,二是根據類似的形式或功能分類。這兩種方法都很有用,不過,本文將側重后者,也就是根據類似的形式或功能分類。在閱讀完本文以后,你將會對監督學習中最受歡迎的機器學習算法,以及它們彼此之間的關系有一個比較深刻的了解。
事先說明一點,我沒有涵蓋機器學習特殊子領域的算法,比如計算智能(進化算法等)、計算機視覺(CV)、自然語言處理(NLP)、推薦系統、強化學習和圖模型。
從學習方式分類
算法對一個問題建模的方式很多,可以基於經歷、環境,或者任何我們稱之為輸入數據的東西。機器學習和人工智能的教科書通常會讓你首先考慮算法能夠采用什么方式學習。實際上,算法能夠采用的學習方式或者學習模型只有幾種,下面我會一一說明。對機器學習算法進行分類是很有必要的事情,因為這迫使你思考輸入數據的作用以及模型准備過程,從而選擇一個最適用於你手頭問題的算法。
一、五大類別
-
監督學習
輸入數據被稱為訓練數據,並且每一個都帶有標簽,比如"廣告/非廣告",或者當時的股票價格。通過訓練過程建模,模型需要做出預測,如果預測出錯會被修正。直到模型輸出准確的結果,訓練過程會一直持續。常用於解決的問題有分類和回歸。常用的算法包括邏輯回歸、隨機森林、決策樹和BP神經網絡等等。
-
無監督學習
輸入數據沒有標簽,輸出沒有標准答案,就是一系列的樣本。無監督學習通過推斷輸入數據中的結構建模。這可能是提取一般規律,可以是通過數學處理系統地減少冗余,或者根據相似性組織數據。常用於解決的問題有聚類、降維和關聯規則的學習。常用的算法包括 Apriori 算法和 K 均值算法。
-
半監督學習
半監督學習的輸入數據包含帶標簽和不帶標簽的樣本。半監督學習的情形是,有一個預期中的預測,但模型必須通過學習結構整理數據從而做出預測。常用於解決的問題是分類和回歸。常用的算法是所有對無標簽數據建模進行預測的算法(即無監督學習)的延伸。
從功能角度分類
研究人員常常通過功能相似對算法進行分類。例如,基於樹的方法和基於神經網絡的方法。這種方法也是我個人認為最有用的分類方法。不過,這種方法也並非完美,比如學習矢量量化(LVQ),就既可以被歸為神經網絡方法,也可以被歸為基於實例的方法。此外,像回歸和聚類,就既可以形容算法,也可以指代問題。
為了避免重復,本文將只在最適合的地方列舉一次。下面的算法和分類都不齊備,但有助於你了解整個領域大概。(說明:用於分類和回歸的算法帶有很大的個人主觀傾向;歡迎補充我遺漏的條目。)
-
強化學習
詳解鏈接:強化學習涉及的學科及其特點http://blog.sciencenet.cn/home.php?mod=space&uid=3360373&do=blog&id=1086532
沒有明確的指導信號,reward(獎勵)可以看做是指導信號,類比SL是求解函數
y =f(x,z) ,其中x是Agent(代理)的狀態(state),z是Agent在該狀態獲得的獎勵reward,f是要求解的策略policy,y則是輸出的動作action,即根據狀態和獎勵序列求解最優策略。reward是指((你給我Reward這個值是什么意思?我到底能不能做的更好?給我100分?我怎么100分的Reward好不好?萬一其他Action可以拿到10000分呢?))
強化學習是通過對未知環境一邊探索一邊建立環境模型以及學得一個最優策略。有監督學習則是事先給你了一批樣本,並告訴你哪些樣本是優的哪些是劣的(樣本的標記信息),通過學習這些樣本而建立起對象的模型及其策略。在強化學習中沒有人事先告訴你在什么狀態下應該做什么,只有在摸索中反思之前的動作是否正確來學習。從這個角度看,可以認為強化學習是有時間延遲標記信息的有監督學習。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)
-
遷移學習
遷移學習(Transfer learning) 顧名思義就是就是把已學訓練好的模型參數遷移到新的模型來幫助新模型訓練。考慮到大部分數據或任務是存在相關性的,所以通過遷移學習我們可以將已經學到的模型參數(也可理解為模型學到的知識)通過某種方式來分享給新模型從而加快並優化模型的學習效率不用像大多數網絡那樣從零學習(starting from scratch,tabula rasa)。
二、各算法介紹
2.1回歸算法
監督學習指的是有目標變量或預測目標的機器學習方法。回歸與分類的不同,就在於其目標變量是連續數值型。
回歸分析是研究自變量和因變量之間關系的一種預測模型技術。這些技術應用於預測時間序列模型和找到變量之間關系。回歸分析也是一種常用的統計學方法,經由統計機器學習融入機器學習領域。"回歸"既可以指算法也可以指問題,因此在指代的時候容易混淆。實際上,回歸就是一個過程而已。
常用的回歸算法包括:
-
普通最小二乘回歸(OLSR)
-
線性回歸
-
逐步回歸
-
多元自適應回歸樣條法(MARS)
-
局部估計平滑散點圖(LOESS)
-
邏輯回歸(是分類算法)
2.2基於實例的學習算法
基於實例的學習通過訓練數據的樣本或事例建模,這些樣本或事例也被視為建模所必需的。這類模型通常會建一個樣本數據庫,比較新的數據和數據庫里的數據,通過這種方式找到最佳匹配並做出預測。換句話說,這類算法在做預測時,一般會使用相似度准則,比對待預測的樣本和原始樣本之間的相似度,再做出預測。因此,基於實例的方法也被稱之為贏家通吃的方法(winner-take-all)和基於記憶的學習(memory-based learning)。
常用的基於實例的學習算法包括:
-
k-鄰近算法(KNN)
-
學習矢量量化算法(LVQ)
-
自組織映射算法(SOM)
-
局部加權學習算法(LWL)
2.3正則化算法
正則化算法背后的思路是,參數值比較小的時候模型更加簡單。對模型的復雜度會有一個懲罰值,偏好簡單的、更容易泛化的模型,正則化算法可以說是這種方法的延伸。我把正則化算法單獨列出來,原因就是我聽說它們十分受歡迎、功能強大,而且能夠對其他方法進行簡單的修飾。常用的正則化算法包括:
-
嶺回歸
-
LASSO算法
-
Elastic Net
-
最小角回歸算法
2.4決策樹算法
決策樹算法的目標是根據數據屬性的實際值,創建一個預測樣本目標值的模型。訓練時,樹狀的結構會不斷分叉,直到作出最終的決策。也就是說,預測階段模型會選擇路徑進行決策。決策樹常被用於分類和回歸。決策樹一般速度快,結果准,因此也屬於最受歡迎的機器學習算法之一。
常用的決策樹算法包括:
-
分類和回歸樹(CART)
-
ID3算法
-
C4.5算法和C5.0算法(它們是一種算法的兩種不同版本)
-
CHAID算法
-
單層決策樹
-
M5算法
-
條件決策樹
2.5貝葉斯算法
貝葉斯方法指的是那些明確使用貝葉斯定理解決分類或回歸等問題的算法。
常用的貝葉斯算法包括:
-
朴素貝葉斯算法
-
高斯朴素貝葉斯算法
-
多項式朴素貝葉斯算法
-
AODE算法
-
貝葉斯信念網絡(BBN)
-
貝葉斯網絡(BN)
2.6聚類算法
聚類跟回歸一樣,既可以用來形容一類問題,也可以指代一組方法。聚類方法通常涉及質心(centroid-based)或層次(hierarchal)等建模方式,所有的方法都與數據固有的結構有關,目標是將數據按照它們之間共性最大的組織方式分成幾組。換句話說,算法將輸入樣本聚成圍繞一些中心的數據團,通過這樣的方式發現數據分布結構中的規律。
常用的聚類算法包括:
-
K-均值
-
K-中位數
-
EM算法
-
分層聚類算法
2.7關聯規則學習
關聯規則學習在數據不同變量之間觀察到了一些關聯,算法要做的就是找出最能描述這些關系的規則,也就是獲取一個事件和其他事件之間依賴或關聯的知識。常用的關聯規則算法有:
-
Apriori算法
-
FP-Growth算法
-
Profixspan算法
-
Eclat算法
2.8人工神經網絡
人工神經網絡是一類受生物神經網絡的結構及/或功能啟發而來的模型。它們是一類常用於解決回歸和分類等問題的模式匹配,不過,實際上是一個含有成百上千種算法及各種問題變化的子集。注意這里我將深度學習從人工神經網絡算法中分離了出去,因為深度學習實在太受歡迎。人工神經網絡指的是更加經典的感知方法。
常用的人工神經網絡包括:
-
感知機
-
反向傳播算法(BP神經網絡)
-
Hopfield網絡
-
徑向基函數網絡
2.9深度學習算法
深度學習算法是人工神經網絡的升級版,充分利用廉價的計算力。近年來,深度學習得到廣泛應用,尤其是語音識別、圖像識別。深度學習算法會搭建規模更大、結構更復雜的神經網絡,正如上文所說,很多深度學習方法都涉及半監督學習問題,這種問題的數據一般量極大,而且只有很少部分帶有標簽。
常用的深度學習算法包括:
-
深度玻爾茲曼機(DBM)
-
深度信念網絡(DBN)
-
卷積神經網絡(CNN)
-
棧式自編碼算法(Stacked Auto-Encoder)
2.10降維算法
降維算法和聚類有些類似,也是試圖發現數據的固有結構。但是,降維算法采用的是無監督學習的方式,用更少(更低維)的信息進行總結和描述。降維算法可以監督學習的方式,被用於多維數據的可視化或對數據進行簡化處理。很多降維算法經過修改后,也被用於分類和回歸的問題。
常用的降維算法包括:
-
主成分分析法(PCA)
-
主成分回歸(PCR)
-
偏最小二乘回歸(PLSR)
-
多維尺度分析法(MDS)
-
線性判別分析法(LDA)
-
二次判別分析法(QDA)
-
投影尋蹤法(PP)
2.11模型融合算法
模型融合算法將多個簡單的、分別單獨訓練的弱機器學習算法結合在一起,這些弱機器學習算法的預測以某種方式整合成一個預測。通常這個整合后的預測會比單獨的預測要好一些。構建模型融合算法的主要精力一般用於決定將哪些弱機器學習算法以什么樣的方式結合在一起。模型融合算法是一類非常強大的算法,因此也很受歡迎。
常用的模型融合增強方法包括:
-
Boosting
-
Bagging
-
AdaBoost
-
堆疊泛化(混合)
-
GBM算法
-
GBRT算法
-
隨機森林
2.12其他
還有很多算法都沒有涉及。例如,支持向量機(SVM)應該被歸為哪一組?還是說它自己單獨成一組?
我還沒有提到的機器學習算法包括:
-
特征選擇算法
-
Algorithm accuracy evaluation
-
Pderformance measures
再附一張思維導圖