1. 程式人生 > >解讀 2016 年十大機器學習演算法及其應用

解讀 2016 年十大機器學習演算法及其應用

毫無疑問,過去兩年中,機器學習和人工智慧的普及度得到了大幅提升。

  如果你想學習機器演算法,要從何下手呢?以我為例,我是在哥本哈根留學期間,學習AI課程入門的。我們用的教科書是一本AI經典:《Peter Norvig’s Artificial Intelligence — A Modern Approach》。最近我在繼續學習這些,包括在舊金山聽了幾個關於深度學習的技術演講,參加機器學習大會上。六月份,我註冊了Udacity的Intro to Machine Learning的線上課程,近期已經完成了。這篇文章,我想分享一些我所學到的、最常見的機器學習演算法。

  我從這個課程中學到了很多,並決定繼續學習這一專業內容。不久前,我在舊金山聽了幾個關於深度學習、神經網路、資料架構方面的技術演講,包括在一個機器學習大會上和很多領域知名專家一起。最重要的是,我六月份註冊了Udacity 的機器學習入門的線上課程,近期已經完成了。這篇文章,我想分享一些我所學到的、最常見的機器學習演算法。

  機器學習演算法可以分為三個大類——有監督學習、無監督學習和強化學習。

  • 有監督學習,對訓練有標籤的資料有用,但是對於其他沒有標籤的資料,則需要預估。

  • 無監督學習,用於對無標籤的資料集(資料沒有預處理)的處理,需要發掘其內在關係的時候。

  • 強化學習,介於兩者之間,雖然沒有精準的標籤或者錯誤資訊,但是對於每個可預測的步驟或者行為,會有某種形式的反饋。

  由於我上的是入門課程,我並沒有學習強化學習,但是下面10個有監督和無監督學習演算法已經足以讓你對機器學習產生興趣。

  監督學習

  1.決策樹 (Decision Trees)

  決策樹是一個決策支援工具,它用樹形的圖或者模型表示決策及其可能的後果,包括隨機事件的影響、資源消耗、以及用途。請看下圖,隨意感受一下決策樹長這樣的:

  

  從商業角度看,決策樹就是用最少的Yes/No問題,儘可能地做出一個正確的決策。它讓我們通過一種結構化、系統化的方式解決問題,得到一個有邏輯的結論。

  2.樸素貝葉斯分類(Naive Bayes Classification)

  樸素貝葉斯分類器是一類簡單概率分類器,它基於把貝葉斯定理運用在特徵之間關係的強獨立性假設上。下圖是貝葉斯公式——P(A|B)表示後驗概率,P(B|A)表示似然度,P(A)表示類別的先驗概率(class prior probability),P(B)表示做出預測的先驗概率(predictor prior probability)。

  

  現實生活中的應用例子:

  • 一封電子郵件是否是垃圾郵件

  • 一篇文章應該分到科技、政治,還是體育類

  • 一段文字表達的是積極的情緒還是消極的情緒?

  • 人臉識別

  3.普通最小二乘迴歸(Ordinary Least Squares Regression)

  

  如果你學過統計學,你可能聽過線性迴歸。至少最小二乘是一種進行線性迴歸的方法。你可以認為線性迴歸就是讓一條直線用最適合的姿勢穿過一組點。有很多方法可以這樣做,普通最小二乘法就像這樣——你可以畫一條線,測量每個點到這條線的距離,然後加起來。最好的線應該是所有距離加起來最小的那根。

  線性法表示你去建模線性模型,而最小二乘法可以最小化該線性模型的誤差。

  4.邏輯迴歸(Logistic Regression)

  

  邏輯迴歸是一種非常強大的統計方法,可以把有一個或者多個解釋變數的資料,建立為二項式型別的模型,通過用累積邏輯分佈的邏輯函式估計概率,測量分類因變數和一個或多個獨立變數之間的關係。

  通常,迴歸在現實生活中的用途如下:

  • 信用評估

  • 測量市場營銷的成功度

  • 預測某個產品的收益

  • 特定的某天是否會發生地震

  5.支援向量機(Support Vector Machines)

  

  SVM是一種二分演算法。假設在N維空間,有一組點,包含兩種型別,SVM生成a(N-1) 維的超平面,把這些點分成兩組。比如你有一些點在紙上面,這些點是線性分離的。SVM會找到一個直線,把這些點分成兩類,並且會盡可能遠離這些點。

  從規模看來,SVM(包括適當調整過的)解決的一些特大的問題有:廣告、人類基因剪接位點識別、基於圖片的性別檢測、大規模圖片分類…

  6.整合方法(Ensemble Methods)

  

  整合方法吸納了很多演算法,構建一個分類器集合,然後給它們的預測帶權重的進行投票,從而進行分類。最初的整合方法是貝葉斯平均法(Bayesian averaging),但是最近的演算法集還包括了糾錯輸出編碼(error-correcting output coding) ,bagging和boosting

  那麼整合方法如何工作的?為什麼它們比單獨的模型更好?

  • 它們均衡了偏差:就像如果你均衡了大量的傾向民主黨的投票和大量傾向共和黨的投票,你總會得到一個不那麼偏頗的結果。

  • 它們降低了方差:集合大量模型的參考結果,噪音會小於單個模型的單個結果。在金融上,這叫投資分散原則(diversification)——一個混搭很多種股票的投資組合,比單獨的股票更少變故。

  • 它們不太可能過度擬合:如果你有單獨的模型不是完全擬合,你結合每個簡單方法建模,就不會發生過度擬合(over-fitting)

  無監督學習

  7. 聚類演算法(Clustering Algorithms)

  

  聚類就是把一組物件分組化的任務,使得在同一組的物件比起其它組的物件,它們彼此更加相似。

  每種聚類演算法都不同,下面是其中一些:

  • 基於圖心(Centroid)的演算法

  • 基於連線的演算法

  • 基於密集度的演算法

  • 概率論

  • 降維

  • 神經網路 / 深度學習

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

  

  PCA是一種統計過程,它通過正交變換把一組可能相關聯的變數觀察,轉換成一組線性非相關的變數的值,這些非相關的變數就是主成分。

  PCA的應用包括壓縮、簡化資料使之易於學習,視覺化。需要注意的是,當決定是否用PCA的時候,領域知識特別重要。它不適用於噪音多的資料(所有成分的方差要很高才行)

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

  

  線性代數中,SVD是對一個特別複雜的矩陣做因式分解。比如一個m*n的矩陣M,存在一個分解如M = UΣV,其中U和V是酉矩陣,Σ是一個對角矩陣。

  PCA其實是種簡單的SVD。在計算機圖形領域,第一個臉部識別演算法就用了PCA和SVD,用特徵臉(eigenfaces)的線性結合表達臉部影象,然後降維,用簡單的方法把臉部和人匹配起來。儘管如今的方法更加複雜,依然有很多是依靠類似這樣的技術。

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

  

  ICA 是一種統計技術。它發掘隨機變數、測量資料或者訊號的集合中隱含的因素。ICA定義了一種通用模型,用於觀測到的多變數資料,通常是一個巨大的樣本資料庫。在這一模型中,假設資料變數是一些未知的、潛在的變數的線性組合,而組合方式也是未知的。同時假設,潛在的變數是非高斯分佈且相互獨立的,我們稱之為觀測資料的獨立成分(Independent components)。

  ICA與PCA有一定關聯,但是一種更加有用的技術,在經典方法完全失效的時候,可以發現數據源中的潛在因素。它的應用包括數字圖片,檔案資料庫,經濟指數和心理測量。

  現在可以開始用你對這些演算法的理解,去建立機器學習應用,給大家帶來更好的體驗。

  原文連結:

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

  相關資料連結:

  Peter Norvig’s Artificial Intelligence — A Modern Approach

  Intro to Machine Learning:

  https://www.udacity.com/course/intro-to-machine-learning--ud120