可利用的算法非常之多。困難之處在於既有不同種類的方法,也有對這些方法的擴展。這導致很快就難以區分到底什麼纔是正統的算法。在這個帖子裏,我希望給你兩種方式來思考和區分在這個領域中你將會遇到的算法。
第一種劃分算法的方式是根據學習的方式,第二種則是基於形式和功能的相似性(就像把相似的動物歸爲一類一樣)。兩種方式都是有用的。
學習方式
基於其與經驗、環境,或者任何我們稱之爲輸入數據的相互作用,一個算法可以用不同的方式對一個問題建模。在機器學習和人工智能教科書中,流行的做法是首先考慮一個算法的學習方式。
算法的主要學習方式和學習模型只有幾個,我們將會逐一介紹它們,並且給出幾個算法和它們適合解決的問題類型來作爲例子。
- 監督學習:輸入數據被稱爲訓練數據,它們有已知的標籤或者結果,比如垃圾郵件/非垃圾郵件或者某段時間的股票價格。模型的參數確定需要通過一個訓練的過程,在這個過程中模型將會要求做出預測,當預測不符時,則需要做出修改。
- 無監督學習:輸入數據不帶標籤或者沒有一個已知的結果。通過推測輸入數據中存在的結構來建立模型。這類問題的例子有關聯規則學習和聚類。算法的例子包括Apriori算法和K-means算法。
- 半監督學習:輸入數據由帶標記的和不帶標記的組成。合適的預測模型雖然已經存在,但是模型在預測的同時還必須能通過發現潛在的結構來組織數據。這類問題包括分類和迴歸。典型算法包括對一些其他靈活的模型的推廣,這些模型都對如何給未標記數據建模做出了一些假設。
- 強化學習:輸入數據作爲來自環境的激勵提供給模型,且模型必須作出反應。反饋並不像監督學習那樣來自於訓練的過程,而是作爲環境的懲罰或者是獎賞。典型問題有系統和機器人控制。算法的例子包括Q-學習和時序差分學習(Temporal Difference Learning)。
當你處理大量數據來對商業決策建模時,通常會使用監督和無監督學習。目前一個熱門話題是半監督學習,比如會應用在圖像分類中,涉及到的數據集很大但是隻包含極少數標記的數據。
算法相似性
通常,我們會把算法按照功能和形式的相似性來區分。比如樹形結構和神經網絡的方法。這是一種有用的分類方法,但也不是完美的。仍然有些算法很容易就可以被歸入好幾個類別,比如學習矢量量化,它既是受啓發於神經網絡的方法,又是基於實例的方法。也有一些算法的名字既描述了它處理的問題,也是某一類算法的名稱,比如迴歸和聚類。正因爲如此,你會從不同的來源看到對算法進行不同的歸類。就像機器學習算法自身一樣,沒有完美的模型,只有足夠好的模型。
在這個小節裏,我將會按照我覺得最直觀的方式列出許多流行的機器學習算法。雖然不管是類別還是算法都不是全面詳盡的,但我認爲它們都具有代表性,有助於你對整個領域有一個大致的瞭解。如果你發現有一個或一類算法沒有被列入,將它寫在回覆裏和大家分享。讓我們來開始吧。
迴歸分析
迴歸是這樣一種建模方式,它先確定一個衡量模型預測誤差的量,然後通過這個量來反覆優化變量之間的關係。迴歸方法是統計學的主要應用,被歸爲統計機器學習。這有些讓人迷惑,因爲我們可以用迴歸來指代一類問題和一類算法。實際上,迴歸是一個過程。以下是一些例子:
- 普通最小二乘法
- 邏輯迴歸
- 逐步迴歸
- 多元自適應樣條迴歸(MARS)
- 局部多項式迴歸擬合(LOESS)
基於實例的方法
基於實例的學習模型對決策問題進行建模,這些決策基於訓練數據中被認爲重要的或者模型所必需的實例。這類方法通常會建立一個範例數據庫,然後根據某個相似性衡量標準來把新數據和數據庫進行比較,從而找到最匹配的項,最後作出預測。因此,基於實例的方法還被叫做“贏者通吃”方法和基於記憶的學習。這種方法的重點在於已有實例的表示以及實例間相似性的衡量標準。
- K最近鄰算法(kNN)
- 學習矢量量化(LVQ)
- 自組織映射(SOM)
正則化方法
這是對另一種方法(通常是迴歸分析方法)的擴展,它懲罰複雜度高的模型,傾向推廣性好的更加簡單的模型。我在這裏列下了一些正則化的方法,因爲他們流行、強大,而且通常只是對其他方法簡單的改進。
- 嶺迴歸
- 套索算法(LASSO)
- 彈性網絡
決策樹學習
決策樹方法對決策過程進行建模,決策是基於數據中屬性的實際數值。決策在樹形結構上分叉直到對特定的某個記錄能做出預測。在分類或者回歸的問題中我們用數據來訓練決策樹。
- 分類與迴歸樹算法(CART)
- 迭代二叉樹3代(ID3)
- C4.5算法
- 卡方自動互動檢視(CHAID)
- 單層決策樹
- 隨機森林
- 多元自適應樣條迴歸(MARS)
- 梯度推進機(GBM)
貝葉斯算法
貝葉斯方法是那些明確地在分類和迴歸問題中應用貝葉斯定理的算法。
- 樸素貝葉斯算法
- AODE算法
- 貝葉斯信度網絡(BBN)
核函數方法
核函數方法中最爲出名的是流行的支持向量機算法,它其實是一系列方法。核函數方法關心的是如何把輸入數據映射到一個高維度的矢量空間,在這個空間中,某些分類或者回歸問題可以較容易地解決。
- 支持向量機(SVM)
- 徑向基函數(RBF)
- 線性判別分析(LDA)
聚類方法
就像迴歸一樣,聚類既表示一類問題,也表示一類方法。聚類方法一般按照建模方式來劃分:基於質心的或者層級結構的。所有的方法都是利用數據的內在結構來儘量地把數據歸入具有最大共性的一類裏。
- K均值法
- 最大期望算法(EM)
關聯規則學習
關聯規則學習是提取規則的一類算法,這些規則能最好地解釋觀測到的數據中的變量之間的關係。這些規則能在大型多維數據集中發現重要且在商業上有用的關聯,然後進一步被利用。
- Apriori算法
- Eclat算法
人工神經網絡
人工神經網絡是受啓發於生物神經網絡的結構和/或功能的算法。它們是一類常用在迴歸和分類問題中的模式匹配方法,但其實這個龐大的子類包含了上百種算法和算法的變形,可以解決各種類型的問題。一些經典流行的方法包括(我已經把深度學習從這個類中分出來了):
- 感知器
- 反向傳播算法
- Hopfield神經網絡
- 自適應映射(SOM)
- 學習矢量量化(LVQ)
深度學習
深度學習方法是利用便宜冗餘的計算資源對人工神經網絡的現代改進版。這類方法試圖建立大得多也複雜得多的神經網絡,就如前面說到的,許多方法都是基於大數據集中非常有限的標記數據來解決半監督學習問題。
- 受限玻爾茲曼機(RBM)
- 深度信念網(DBN)
- 卷積神經網絡
- 層疊自動編碼器(SAE)
降維方法
如同聚類方法,降維方法試圖利用數據中的內在結構來總結或描述數據,所不同的是它以無監督的方式利用更少的信息。這對於可視化高維數據或者爲之後的監督學習簡化數據都有幫助。
- 主成分分析(PCA)
- 偏最小二乘法迴歸(PLS)
- 薩蒙映射
- 多維尺度分析(MDS)
- 投影尋蹤
集成方法
集成方法由多個較弱模型組合而成,這些子模型獨立訓練,它們的預測結果以某種方式整合起來得出總的預測。很多努力都集中在選擇什麼類型的學習模型作爲子模型,以及用什麼方式整合它們的結果。這是一類非常強大的技術,因此也很流行。
- 推進技術(Boosting)
- 自展集成(Bagging)
- 適應性推進(AdaBoost)
- 層疊泛化策略(Blending)
- 梯度推進機(GBM)
- 隨機森林
這是一個最適曲線集成的例子。弱成員用灰色線表示,整合後的預測用紅色。這個圖顯示了溫度/臭氧數據,曲線出自使用局部多項式迴歸擬合(LOESS)的模型。
圖片授權自公有領域(public domain),歸於維基百科。
對機器學習算法的環顧的目的是讓你對目前存在的算法有一個大概的瞭解,也給你一些工具來把這些你有可能遇到的算法相互聯繫起來。
這個帖子附上的資源如你所期待的是其他一些很棒的關於機器學習算法的列表。不要覺得壓力太大,知道很多算法固然有用,但是對少數幾個關鍵算法的深入瞭解和有效執行也是很有用的。
轉自:http://www.36dsj.com/archives/8911