初學機器學習必備10大算法

毫無疑問,過去幾年中,做爲人工智能的主要領域,愈來愈多的人投身於機器學習研究。《哈佛商業評論》甚至將機器學習科學家稱爲「21 世紀最性感的工做」。爲了幫助機器學習初學者快速入門,加拿大皇后大學機器學習專家 Reena Shaw 特地寫了一篇文章,總結了機器學習初學者須要知道的 10 大算法。算法

ML 算法是指無需人類介入,就能從數據中學習,從經驗中優化的算法。學習任務包括學習將輸入映射到輸入的函數,學習未標記數據中的隱藏結構;或者「基於實例的學習」,即將新的實例和訓練數據中的實例進行比較,爲一個新的實例生成一個類標籤。數據庫

機器學習初學者須要知道的 10 個 ML 算法:機器學習

ML 算法的類型

ML 算法大致上分爲三類:ide

1 監督式學習函數

監督式學習能夠這樣解釋:使用標記的訓練數據學習輸入變量(X )到輸出變量(Y)的映射函數。 Y = f (X)性能

監督式學習問題會有兩種類型:學習

  • 分類 :預測一個給定樣本的結果,其輸出變量的形式爲類別。樣本含有標籤,好比男性和女性、生病的和健康的等等。測試

  • 迴歸 :預測一個給定樣本的結果,其輸出變量的形式爲真值。樣本含有實值標籤,好比降雨量、某人的身高等等。優化

本文介紹的前 5 個算法:線性迴歸、邏輯迴歸、分類迴歸樹、樸素貝葉斯、K最近鄰算法都是監督式學習中的算法人工智能

集成學習是監督式學習的一種特殊類型,它是指將多種不一樣的弱機器學習模型的預測結果進行組合,以預測出一個新的樣本。文章末尾介紹的第 9 和第 10 個算法,即隨機森林-套袋法(Bagging)、XGBoos-提高法(Boosting)都是集成學習中的算法

非監督式學習:

非監督式學習問題只有輸入變量(X),但沒有相應的輸出變量。它使用無標記的訓練數據爲數據的隱含結構建模。

非監督式學習問題能夠有如下三種類型:

  • 關聯(Association):發現目錄中項目共現的機率。其普遍應用於「購物籃分析」。例如,若是一個顧客購買了麪包,他會有80% 的機率也購買雞蛋。

  • 聚類(Clustering):將樣本分組,這樣,同一聚類中的物體與來自另外一聚類的物體相比,相互之間會更加相似。

  • 降維:正如其含義,降維指減小一個數據集的變量數量,同時保證還能傳達重要信息。降維能夠經過特徵抽取方法和特徵選擇方法完成。特徵選擇方法會選擇初始變量的子集。特徵抽取方法執行從高維度空間到低維度空間的數據轉換。例如,PCA算法就是一種特徵抽取方式。

文中提到的第6-8個算法,即 Apriori 算法、K 均值算法、PCA 算法都是非監督式學習的例子。

加強學習:

加強學習是一種機器學習算法,能讓 agent 經過學習會讓性能最大化的行爲,根據其當前狀態決定下一步最優動做。

加強學習算法經常經過試錯學習最佳選擇。它們最典型的應用時用在機器人上,好比機器人能夠經過碰撞障礙物後接收負面反饋來避免碰撞。

監督式學習算法

1 線性迴歸

在機器學習中,咱們有一套輸入變量(X)用於決定輸出變量(y)。輸入變量和輸出變量之間存在一種關係,而機器學習的目標就是量化這種關係。

在線性迴歸中,輸入值 (X) 和輸出值 (y) 之間的關係能夠用方程 y = a + bx 表示。這樣以來,線性迴歸的目標就是找出係數 a 和 b 的值,a 爲截距,b 爲迴歸線的斜率。

上圖展現了爲某個數據集標繪的 x 和 y 的值,目的是匹配出一條最接近大部分點的線。這可以減小數據點的 y 值和斜線之間的距離(即偏差)。

2 邏輯迴歸

線性迴歸預測結果是連續值,而邏輯迴歸預測結果在應用轉換函數後是離散值。

邏輯迴歸最適合二元分類(數據集中 y=0 或 1,其中 1 指默認類別。例如,在預測某個事件是否會發生時,事件發生歸類爲 1;預測某人是否生病時,生病的情況會以1表示)。它以 應用在其中的轉換函數而命名,稱爲邏輯函數 h(x)= 1/ (1 + e^x),是一個 S 型曲線。

在邏輯迴歸中,輸出值的形式爲默認類的機率(不像線性迴歸中,輸出值爲直接產生)。由於是機率,因此輸出值會介乎 0 到 1 之間。經過使用邏輯函數 h(x)= 1/ (1 + e^ -x),對 X 值進行對數轉換可獲得輸出值。而後用闕值將獲得的機率,即輸出值,應用到二元分類中。

在上圖示例中,要肯定一個腫瘤是否爲惡性,默認值爲 y=1(腫瘤=惡性);x 值能夠是腫瘤的度量值,好比腫瘤的大小。如圖中所示,邏輯函數將數據集中多種例子下的 x 值轉換爲 0 到 1 之間的機率值。若是機率超過了闕值 0.5(圖中中間的水平線),那麼腫瘤會被歸類爲惡性。

邏輯迴歸方程 P(x) = e ^ (b0 +b1x) / (1 + e^(b0 + b1x)) 能夠被轉換爲 ln(p(x) / 1-p(x)) = b0 + b1*x。

邏輯迴歸的目標是利用訓練數據發現係數 b0 和 b1 的值,這樣就能將預測輸出值和實際輸出值之間的偏差最小化。能夠用最大似然估計的方法估計這些係數。

3 CART

分類迴歸樹(CART)是決策樹的一種應用形式,其它形式還有 ID3 和 C4.5 等。

CART 的非終端節點爲根節點和內節點。終端節點爲葉節點。每一個非終端節點表明一個單個輸入變量 (X) 和該變量的分割點;而葉節點表明輸出變量 (y)。該模型以以下形式用於預測:沿着決策樹的分叉點,到達葉節點,輸出在該葉節點上表示的值

上圖的決策樹分類了某人根據本身的年齡和婚姻情況決定買跑車仍是旅行車。若是此人超過 30 歲且未婚,咱們這樣沿着決策樹:「超過 30 歲嗎?」 -> 是 ->「已婚?」 -> 否。所以,模型的輸出結果爲跑車。

4 樸素貝葉斯

在某個事件已經發生的狀況下,爲了計算出另外一個相同事件發生的機率,咱們使用貝葉斯定理。根據某些變量的給定值,要想計算某個結果的機率,也就是根據咱們的已知知識(d)計算假設(h)爲真的機率,咱們這樣使用貝葉斯定理:

P(h|d)= (P(d|h) * P(h)) / P(d)

其中:

P(h|d) =後驗機率。假設h的機率爲真,給定數據爲d,那麼 P(h|d)= P(d1| h)* P(d2| h)*....P(dn| h) P(d)

P(d|h) =可能性。假設 h 爲真時,數據 d 的機率。

P(h) = 類的先驗機率。假設 h 的機率爲真(無論數據 d 的狀況)。

P(d) = Predictor 的先驗機率。數據 d 的機率(無論假設 h 的狀況)。

這種算法之因此被稱爲「樸素」,是由於它假定全部的變量之間相互獨立,而這種假設在實際應用每每不成立。

用上圖做爲一個例子,若是 weather=「sunny」,結果是什麼?

若是變量 weather=「sunny」,要想肯定結果 Play 爲「Yes」或「No」,需計算圖中P(yes|sunny) 和 P(no|sunny),以較高的機率值選擇結果。

->P(yes|sunny)= (P(sunny|yes) * P(yes)) / P(sunny)

= (3/9 * 9/14 ) / (5/14)

= 0.60

-> P(no|sunny)= (P(sunny|no) * P(no)) / P(sunny)

= (2/5 * 5/14 ) / (5/14)

= 0.40

這樣,若是weather=「sunny」,結果爲play= ‘yes’。

5 K最近鄰算法(KNN)

K 最近鄰算法使用整個數據集做爲訓練集,而非將數據集分割爲一個數據集和一個測試集。 當一個新的數據實例須要一個結果時,KNN算法會遍歷整個數據集找到這個新數據實例的K個最近實例,或者和新記錄最類似的實例的K數量,而後輸出結果的平均值(針對迴歸問題)或者分類問題中的模式。K的值爲用戶指定。 可以使用好比歐幾里得距離和漢明距離等方式計算實例之間的類似度。

非監督式學習

6 Apriori算法:

Apriori 算法常被用於事務數據庫中挖掘頻繁集,而後生成關聯規則。它經常用在市場分析中,檢查在數據中頻繁共現的產品的組合。整體上講,咱們將「若是某人購買物品 X,那麼他也購買物品 Y」的關聯規則寫爲 X -> Y。

例如,若是某人購買了牛奶和糖,那麼他會極可能也會購買咖啡粉。這種狀況的關聯規則能夠被寫爲 {milk,sugar} -> coffee powder。關聯規則的強度能夠用它的支持度(support)和置信度(confidence)來度量。

圖中,支持度幫助刪除生成頻繁集時要考慮的候選集的數目。該支持度受到 Apriori 原則的指導。Apriori 原則認爲,若是某個集爲頻繁集,那麼該集全部的子集也必須爲頻繁集。

7 K均值算法

K 均值算法是很典型的基於距離的聚類算法,採用距離做爲類似性的評價指標,即認爲兩個對象的距離越近,其類似度就越大。 它是一種迭代算法,將類似數據分組爲聚類。它會計算出 K 個聚類的中心值,將一個數據點賦給一個聚類,該聚類的中心和賦給它的數據點之間的距離最近。

第 1 步:K 均值迭代:

  • 選擇一個K 值。這裏,咱們取 K 值爲 3.

  • 隨機將每一個數據點賦給 3 個聚類中任意一個。

  • 計算出每一個聚類的聚類中心。紅色、藍色和綠色星標表示 3 個聚類的聚類中心。

第 2 步:

將每一個數據點從新賦給最近的聚類中心。這裏,最上面的 5 個點被賦給藍色聚類中心的那個聚類。按一樣的步驟,將數據點賦給有紅色和綠色聚類中心的聚類。

第 3 步:

計算新聚類的中心。用灰色星標表示原來的聚類中心,繼續用紅色、綠色和藍色星標表示新的聚類中心。

第 4 步: 重複步驟 2-3,直到各個聚類之間的數據點再也不變換。在通過這兩個連續步驟沒有數據點的切換狀況後,導出K均值算法。

8 PCA:

主成分分析(PCA)經過減小變量數目用於更容易地探究和可視化數據。主要是經過獲取數據中的最大方差,轉換入一個座標稱爲「主成分」的座標系中完成這個過程。每一個成分都是一個原始變量的線性組合,相互之間是正交關係。成分之間的正交關係代表這些成分之間的相關性爲 0. 第一個主成分獲取數據中最大方差的方向。第二個主成分獲取數據中的剩餘方差,但變量和第一個成分沒有相關性。一樣地,全部接下來的主成分(PC3,PC4 等等)獲取剩餘方差,且和以前的成分沒有相關性。

集成學習

「集成」意思是經過投票或求平均值,將多個分類器的結果組合在一塊兒,以改進結果。投票用在分類問題中,求平均值則用在迴歸問題中。其理念是,將學習模型集合在一塊兒的效果要好於單個學習模型。 集成學習算法有三種類型:套袋法(bagging)、提高法(Boosting)和堆疊法(stacking),但本文是面向初學者,暫時先只講套袋法和提高法。

9 隨機森林-Bagging算法:

隨機森林(多個學習模型)是套袋式決策樹(bagged decision tree,即單個學習模型)的改進形式。 套袋法(bagging):該方法的第一步就是用數據集(用抽樣法建立而成)建立多個模型。在抽樣法中,每一個生成的訓練集由原始數據集的隨機次級樣本組成。每一個訓練集都和原始數據集同樣大小,但有些記錄會重複幾回,有些記錄則徹底不出現。而後,整個原始數據集會被用做測試集。這樣,若是原始數據集的大小爲N,那麼每一個生成的訓練集大小也爲N,特殊記錄的數量大約爲(2N/3),測試集的大小也是N。

第二步就是用和生成的不一樣數據集中同樣的算法構建多個模型。在這一步中,咱們討論一下隨機森林。不像決策樹中,每一個節點在將錯誤最小化的最佳特徵處分裂,在隨機森林中,咱們選擇各個特徵的一個隨機抽樣用以構建最佳節點。之因此是隨機,是由於:即使是用套袋法,當決策樹選擇一個最佳特徵之處分裂時,最終會是相同的結構和相互關聯的預測。但在各個特徵的隨機子集處分裂後再套袋(bagging)意味着根據子樹的預測之間的相關性較低。

在每一個分叉點要搜索的特徵數量被指定爲隨機森林算法的一個參數。 這樣,在隨機森林 bagging 中,用記錄中的隨機樣本構造每一個決策樹,用預測器的隨機樣本構造每一個分裂。

10 AdaBoost-Boosting算法

A) 套袋法(bagging)是一種平行集成,由於每一個模型都是獨立搭建。但提高法(Boosting)是一種順序集成,每一個模型都是在矯正以前模型的錯誤分類基礎上搭建。

B)套袋法大多涉及「簡單投票」,每一個分類器投票得到一個最終結果,它是由平行模型中的大多數決定。提高法涉及「加權投票」,每一個分類器投票得到最終結果,它也是由大多數來決定,但它是經過將更大的權重賦給先前模型的錯誤分類示例來搭建順序模型。

Adaboost 算法(自適應加強算法)指自適應的提高法。

在上圖,第 1,2,3 步涉及到了一種叫作「決策樁」(decision stump)的弱學習模型(一個1層決策樹根據僅僅 1 個輸入特徵作出預測;這是個根部節點和葉節點馬上相連的決策樹)。構造弱學習模型的過程會不斷持續直到構造完畢用戶定義數量的弱學習模型或者直到訓練再無改進之處。第 4 步將先前模型的 3 個決策樁進行組合(這樣該決策樹中就有了 3 個分裂規則)。

第 1 步:以 1 個決策樁開始根據 1 個輸入變量作出決策:

數據點的數量顯示咱們已經應用了相等的權重將它們分類爲圓形或三角形。該決策樁已經在上半部分生成了一條水平線將這些數據點進行分類。咱們能夠看到,有 2 個圓形被錯誤地預測爲三角形。所以,咱們會給這 2 個圓形賦給更高的權重,並應用另外一個決策樁。

第 2 步:轉向另外一個決策樁,根據另外一個輸入變量作出決策:

咱們發現上一步中這 2 個被錯誤分類的圓形要大於剩餘的數據點。如今,第 2 個決策樁會試着正確地預測這 2 個圓形。

賦給更高的權重後,這 2 個圓形被左側的垂直線正確地分類了。可是,如今又將頂部的 3 個圓形錯誤分類。所以,咱們給頂部的這 3 個圓形賦給更高的權重,並應用另外一個決策樁。

第 3 步:訓練另外一個決策樁,根據另外一個輸入變量作出決策:

上一步中被錯誤分類的這 3 個圓形要大於其他的數據點。如今,在右側已生成了一條垂直線,對三角形和圓形進行分類。

第 4 步:將決策樁進行組合: 咱們把前 3 個模型中的分離器組合在一塊兒,觀察發現和以前每一個弱學習模型相比,這個模型的複雜規則正確地分類了數據。

總結

簡單回顧一下,咱們學習了:

5個監督式學習算法:線性迴歸、邏輯迴歸、CART、樸素貝葉斯、KNN

3個非監督式學習算法:Apriori算法、K均值算法、PCA

2個集成學習算法:隨機森林 Bagging 算法、Adaboost 提高法

這麼幹貨的東西,不讚一下?

相關文章
相關標籤/搜索