機器學習工程師必知的十大演算法

AI前線發表於2017-12-28

本文由 【AI前線】原創


作者|James Le 譯者|尚劍 編輯|Emily

AI 前線導讀:“毫無疑問,機器學習 / 人工智慧的子領域在過去幾年越來越受歡迎。目前大資料在科技行業已經炙手可熱,而基於大量資料來進行預測或者得出建議的機器學習無疑是非常強大的。一些最常見的機器學習例子,比如 Netflix 的演算法可以根據你以前看過的電影來進行電影推薦,而 Amazon 的演算法則可以根據你以前買過的書來推薦書籍。”


所以如果你想了解更多有關機器學習的內容,那麼你該如何入門?對於我來說,我的入門課程是我在哥本哈根出國留學時參加的人工智慧課。當時我的講師是丹麥技術大學(Technical University of Denmark)的應用數學和電腦科學的全職教授,他的研究方向是邏輯與人工智慧,側重於使用邏輯學來對人性化的規劃、推理和解決問題進行建模。這個課程包括對理論 / 核心概念的討論和自己動手解決問題。我們使用的教材是 AI 經典之一:Peter Norvig 的 Artificial Intelligence—A Modern Approach(中文譯本:《人工智慧:一種現代的方法》),這本書主要講了智慧體、搜尋解決問題、對抗搜尋、概率論、多智慧體系統、社會 AI 和 AI 的哲學 / 倫理 / 未來等等。在課程結束時,我們三個人的團隊實現了一個簡單的程式設計專案,也就是基於搜尋的智慧體解決虛擬環境中的運輸任務問題。

在那門課程上我已經學到了很多知識,並決定繼續學習相關的課題。在過去的幾個星期裡,我在舊金山參加了多次相關的技術講座,涉及到深度學習、神經網路和資料結構,並且參加了一個有很多該領域的知名專家學者參加的機器學習會議。最重要的是,我在 6 月初參加了 Udacity 上的 Intro to Machine Learning(機器學習入門)線上課程,前幾天才完成。在這篇文章中,我想分享一下我從課程中學到的一些最常用的機器學習演算法。

機器學習演算法可以分為三大類:監督學習、無監督學習和強化學習。監督學習可用於一個特定的資料集(訓練集)具有某一屬性(標籤),但是其他資料沒有標籤或者需要預測標籤的情況。無監督學習可用於給定的沒有標籤的資料集(資料不是預分配好的),目的就是要找出資料間的潛在關係。強化學習位於這兩者之間,每次預測都有一定形式的反饋,但是沒有精確的標籤或者錯誤資訊。因為這是一個介紹課程,我沒有學習過強化學習的相關內容,但是我希望以下 10 個關於監督學習和無監督學習的演算法足以讓你感興趣。

監督學習 1. 決策樹(Decision Trees)

決策樹是一個決策支援工具,它使用樹形圖或者決策模型以及可能性序列,包括偶然事件的結果、資源成本和效用。下圖是其基本原理:

機器學習工程師必知的十大演算法

從業務決策的角度來看,決策樹是人們必須瞭解的最少的是 / 否問題,這樣才能評估大多數時候做出正確決策的概率。作為一種方法,它允許你以結構化和系統化的方式來解決問題,從而得出合乎邏輯的結論。

2. 樸素貝葉斯分類 (Naive Bayesian classification)

樸素貝葉斯分類器是一類簡單的概率分類器,它基於貝葉斯定理和特徵間的強大的(樸素的)獨立假設。圖中是貝葉斯公式,其中 P(A|B)是後驗概率,P(B|A)是似然,P(A)是類先驗概率,P(B)是預測先驗概率。

機器學習工程師必知的十大演算法

一些應用例子:

  • 判斷垃圾郵件
  • 對新聞的類別進行分類,比如科技、政治、運動
  • 判斷文字表達的感情是積極的還是消極的
  • 人臉識別

3. 最小二乘法(Ordinary Least Squares Regression)

如果你懂統計學的話,你可能以前聽說過線性迴歸。最小二乘法是一種計算線性迴歸的方法。你可以將線性迴歸看做通過一組點來擬合一條直線。實現這個有很多種方法,“最小二乘法”就像這樣:你可以畫一條直線,然後對於每一個資料點,計算每個點到直線的垂直距離,然後把它們加起來,那麼最後得到的擬合直線就是距離和儘可能小的直線。

機器學習工程師必知的十大演算法

線性指的是你用來擬合資料的模型,而最小二乘法指的是你最小化的誤差度量。

4. 邏輯迴歸 (Logistic Regression)

邏輯迴歸是一個強大的統計學方法,它可以用一個或多個解釋變數來表示一個二項式結果。它通過使用邏輯函式來估計概率,從而衡量類別依賴變數和一個或多個獨立變數之間的關係,後者服從累計邏輯分佈。

機器學習工程師必知的十大演算法

總的來說,邏輯迴歸可以用於以下幾個真實應用場景:

  • 信用評分
  • 計算營銷活動的成功率
  • 預測某個產品的收入
  • 特定的某一天是否會發生地震

5. 支援向量機(Support Vector Machine,SVM)

SVM 是二進位制分類演算法。給定 N 維座標下兩種型別的點,SVM 生成(N-1)維的超平面來將這些點分成兩組。假設你在平面上有兩種型別的可以線性分離的點,SVM 將找到一條直線,將這些點分成兩種型別,並且這條直線儘可能遠離所有這些點。

機器學習工程師必知的十大演算法

從規模上看,使用 SVM(經過適當的修改)解決的一些最大的問題包括顯示廣告、人類剪下位點識別(human splice site recognition)、基於影象的性別檢測,大規模影象分類……

6. 整合方法(Ensemble methods)

整合方法是學習演算法,它通過構建一組分類器,然後通過它們的預測結果進行加權投票來對新的資料點進行分類。原始的整合方法是貝葉斯平均,但是最近的演算法包括糾錯輸出編碼、Bagging 和 Boosting。

機器學習工程師必知的十大演算法

那麼整合方法如何工作?並且為什麼它們要優於單個模型?

  • 它們平均了單個模型的偏差:如果你將民主黨的民意調查和共和黨的民意調查在一起平均化,那麼你將得到一個均衡的結果,不偏向任何一方。
  • 它們減少了方差:一組模型的總體意見比其中任何一個模型的單一意見更加統一。在金融領域,這就是所謂的多元化,有許多股票的組合比一個單獨的股票的不確定性更少,這也為什麼你的模型在資料多的情況下會更好的原因。
  • 它們不太可能過擬合:如果你有單個的模型沒有過擬合,那麼把這些模型的預測簡單結合起來(平均、加權平均、邏輯迴歸),那麼最後得到的模型也不會過擬合。

無監督學習 7. 聚類演算法(Clustering Algorithms)

聚類是將一系列物件分組的任務,目標是使相同組(叢集)中的物件之間比其他組的物件更相似。

機器學習工程師必知的十大演算法

每一種聚類演算法都不相同,下面是一些例子:

  • 基於質心的演算法
  • 基於連線的演算法
  • 基於密度的演算法
  • 概率
  • 降維
  • 神經網路 / 深度學習

8. 主成分分析(Principal Component Analysis,PCA)

PCA 是一個統計學過程,它通過使用正交變換將一組可能存在相關性的變數的觀測值轉換為一組線性不相關的變數的值,轉換後的變數就是所謂的主分量。

機器學習工程師必知的十大演算法

PCA 的一些應用包括壓縮、簡化資料便於學習、視覺化等。請注意,領域知識在選擇是否繼續使用 PCA 時非常重要。 資料嘈雜的情況(PCA 的所有成分具有很高的方差)並不適用。

9. 奇異值分解(Singular Value Decomposition,SVD)

線上性代數中,SVD 是複雜矩陣的因式分解。對於給定的 m * n 矩陣 M,存在分解使得 M=UΣV,其中 U 和 V 是酉矩陣,Σ是對角矩陣。

機器學習工程師必知的十大演算法

實際上,PCA 是 SVD 的一個簡單應用。在計算機視覺中,第一個人臉識別演算法使用 PCA 和 SVD 來將面部表示為“特徵面”的線性組合,進行降維,然後通過簡單的方法將面部匹配到身份,雖然現代方法更復雜,但很多方面仍然依賴於類似的技術。

10. 獨立成分分析(Independent Component Analysis,ICA)

ICA 是一種統計技術,主要用於揭示隨機變數、測量值或訊號集中的隱藏因素。ICA 對觀測到的多變數資料定義了一個生成模型,這通常是作為樣本的一個大的資料庫。在模型中,假設資料變數由一些未知的潛在變數線性混合,混合方式也是未知的。潛在變數被假定為非高斯分佈並且相互獨立,它們被稱為觀測資料的獨立分量。

機器學習工程師必知的十大演算法

ICA 與 PCA 有關,但是當這些經典方法完全失效時,它是一種更強大的技術,能夠找出源的潛在因素。 其應用包括數字影象、文件資料庫、經濟指標和心理測量。

現在運用你對這些演算法的理解去創造機器學習應用,為世界各地的人們帶來更好的體驗吧。

檢視英文原文:

https://www.kdnuggets.com/2016/08/10-algorithms-machine-learning-engineers.html/2

關注後回覆「AI」你懂的


相關文章