ML 工程師需瞭解的 10 大演算法

yaoyujia發表於2016-08-09

毫無疑問,機器學習/人工智慧的子領域在過去幾年越來越流行。由於大資料是目前科技領域最熱門的趨勢,基於這些大規模的資料,機器學習在預測和計算建議方面變得不可思議的強大。最常見的機器學習的例子就是 Netflix(一家線上影片租賃提供商)的演算法,它能基於你過去看過的電影來推薦電影,或著 Amazon 的演算法,它能基於你過去買的書,來推薦書給你。

那麼如果你想進一步瞭解機器學習,你應該怎樣開始呢?對我來說,我的入門是我在哥本哈大學留學時,參加的一個人工智慧的課程。我的講師是丹麥科技大學的一個全職的應用數學和電腦科學的教授,他主要研究邏輯學和人工智慧,主要致力於使用邏輯學來對人類的計劃,推理,和求解問題的過程進行建模。這個課程是針對理論/核心概念和動手解決問題的討論。我們所用的課本是人工智慧的經典之一: Peter Norvig’s Artificial Intelligence — A Modern Approach,其中涵蓋的主題主要包括:智慧代理,問題求解,敵對搜尋,概率論,多智慧體系統,社會AI,哲學/倫理學/人工智慧的未來。課程的最後,三個人一組,我們實現了一個簡單的基於搜尋的代理,能夠在虛擬環境下解決運輸任務來作為程式設計專案。

多虧這個課,我學會了大量的知識,並決定繼續學習這個專業的主題。在過去的幾周裡,我參加了舊金山的多個技術講座,主要是關於深度學習,神經網路,資料結構的。還有一個機器學習的會議,很多該領域的專業人士都在場。最重要的是,我六月初的時候參加了Udacity的介紹機器學習(Intro to Machine Learning )的線上課程,並在前幾天剛剛完成。在這篇文章中,我想分享一些我從課程中學習到的最常見的機器學習演算法。

機器學習演算法可以被分為三大類—監督學習,非監督學習,和強化學習。有監督的學習在資料集(訓練集)的屬性(標籤)已知的條件下是有用的,但是在沒有標籤時,就失去作用了,需要使用其他方法來進行預測。當我們面臨的是沒有標記的資料(屬性沒有預先賦值),並且需要我們發現其中隱含的關係時,非監督學習就會很有用。增強學習介於這兩個極端之間——對於每一個預測步驟或動作,都會有某種形式的反饋,但是沒有確切的標籤或著錯誤資訊。因為這是一個入門課,我並不瞭解強化學習。但我希望這10個有監督和無監督學習演算法就足夠引起你的興趣。

 

有監督的學習

1.決策樹:決策樹是一個使用類樹圖形,或者決策模型和其可能結果的決策支援工具,包括偶然事件的結果,資源成本和效用。看一下下面的圖片感受一下它是什麼樣的。

 

ML 工程師需瞭解的 10 大演算法

從商業決策的角度來看,大多數時候,一個決策樹就是使用最小數量的必須要問的是或不是的問題,來評估做出正確決策的可能性。作為一個方法,它允許你以一個結構化的和系統的方式來處理這個問題,從而得到一個合乎邏輯的結論。

 

2. 樸素貝葉斯分類:樸素貝葉斯分類是一族基於貝葉斯定理和特徵之間的強獨立性(樸素)的簡單分類器。顯著特點是方程式—— P(A|B) 是後驗概率,P(B|A)  是似然概率,P(A) 是類的先驗概率,P(B) 是預測的先驗概率。

ML 工程師需瞭解的 10 大演算法

 

一些現實中的例子:

  • 標記一個電子郵件為垃圾郵件或非垃圾郵件
  • 將新聞文章分為技術類、政治類或體育類
  • 檢查一段文字表達積極的情緒,或消極的情緒?
  • 用於人臉識別軟體

 

3. 普通的最小二乘迴歸:如果你瞭解統計學,你以前可能聽說過線性迴歸。最小二乘法是一種進行線性迴歸的方法。你可以把線性迴歸當作使用一條直線來擬合一系列的點的任務。有多種可能的方法來做到這一點,最小二乘的策略是這樣的——你可以畫一條線,然後對於每一個資料點,計算資料點和這條線的垂直距離,然後把它們加起來;擬合的線就是那個總和的距離儘可能小的線。

ML 工程師需瞭解的 10 大演算法

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

4. 邏輯迴歸:邏輯迴歸是一種強大的統計方法,它使用一個或者更多的解釋變數對一個二項式結果建模。它通過使用logistic 函式估計概率,這是累積 logistic  分佈,來度量分類變數和一個或者更多的自變數之間的關係。

 

ML 工程師需瞭解的 10 大演算法

通常,迴歸可以被用於在現實世界的應用,如:

  • 信用評分
  • 度量營銷活動的成功率
  • 預測某一產品的收入
  • 在一個特定的日子裡會發生地震嗎?

5. 支援向量機(SVM):支援向量機是一個二分類演算法。給出N維空間的一組二分類的點,支援向量機產生一個 N-1 維的超平面將這些點分成兩組。假設你在一張紙上有一些線性可分的二分類的點,支援向量機將會找到一條直線,將這些點分成兩類,並位於離所有這些點儘可能遠的位置。

ML 工程師需瞭解的 10 大演算法

就規模而言,其中一些最主要的問題已經使用支援向量機解決了(通過適當的修改),如,入廣告顯示,人類的剪接位點識別,基於影像的性別檢測,大規模影像分類等等。

 

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

ML 工程師需瞭解的 10 大演算法

那麼整合方法是怎樣工作的,為什麼他們會優於單個的模型?

  • 他們拉平了輸出偏差:如果你將具有民主黨傾向的民意調查和具有共和黨傾向的民意調查取平均,你將得到一箇中和的沒有傾向一方的結果。
  • 它們減小了方差:一堆模型的聚合結果和單一模型的結果相比具有更少的噪聲。在金融領域,這被稱為多元化——多隻股票的混合投資要比一隻股票變化更小。這就是為什麼資料點越多你的模型會越好,而不是資料點越少越好。
  • 它們不太可能產生過擬合:如果你有一個單獨的沒有過擬合的模型,你是用一種簡單的方式(平均,加權平均,邏輯迴歸)將這些預測結果結合起來,然後就沒有產生過擬合的空間了。

 

非監督學習

7. 聚類演算法:聚類是將一組物件進行分組,使得同一組(簇)內的物件相似性遠大於不同組之間的相似性。

每一種聚類演算法都不太一樣,這裡有一些:

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

ML 工程師需瞭解的 10 大演算法

 

8. 主成分分析(PCA):主成分分析是一個統計過程,它使用正交變換,將一組可能相關的變數的一組觀測值變換成線性不相關的變數,這些變數稱為主成分。

PCA的應用包括壓縮,簡化資料使它們更容易學習,視覺化。注意,選擇是否使用主成分分析,領域知識是非常重要的。當資料充滿噪聲時,主成分分析是不合適的(主成分分析的所有成分都有很高的方差)。

ML 工程師需瞭解的 10 大演算法

 

9. 奇異值分解(SVD):線上性代數中,SVD是分解一個實數的比較複雜的矩陣。對於一個給定的m*n的矩陣M,存在一個分解M = UΣV,這裡U和V是酉矩陣,Σ是一個對角矩陣。

PCA 是 SVD 的一個簡單應用,在計算機視覺中,第一個人臉識別演算法,就運用了 PCA 和 SVD 演算法。使用這兩個演算法可以將人臉表示為 “特徵臉”線性組合,降維,然後通過簡單的方法匹配人臉的身份;雖然現代的方法複雜得多,但許多仍然依賴於類似的技術。

ML 工程師需瞭解的 10 大演算法

10. 獨立成分分析(ICA):獨立成分分析是一種統計方法,用來揭示隨機變數集測試,訊號集中的隱藏因素。獨立成分分析為觀測到的多變數的集合定義生成模型,它通常作為大型的樣本資料資料庫。在這個模型中,資料變數被假定為與一些潛在的未知變數的線性混合,混合系統也不知道。潛在變數被假設為非高斯並且相互獨立的,它們被稱為所觀察到的資料的獨立成分。

ML 工程師需瞭解的 10 大演算法

ICA 和 PCA 是相關的,但是它是一種更強大的技術,當那些經典的方法完全失效的時候,它能夠從資料來源中發現潛在的因素。它的應用包括數字影像,文件資料庫,經濟指標和心理測量。

現在,繼續向前,運用你所理解的演算法創造機器學習應用,為各個地方的人們人們提供更好的體驗。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

ML 工程師需瞭解的 10 大演算法 ML 工程師需瞭解的 10 大演算法

相關文章