機器學習:分類演算法(Classification)

在目前的機器學習工作中,最常見的三種任務就是:

  1. 回歸分析
  2. 分類分析
  3. 聚類分析

這篇文章的重點是分類(Classification)在機器學習領域中的應用。


什麼是「分類」

雖然我們人類都不喜歡被分類,被貼標籤,但數據研究的基礎正是給數據「貼標籤」進行分類。類別分得越精準,我們得到的結果就越有價值。

分類是一個有監督的學習過程,目標資料庫中有哪些類別是已知的,分類過程需要做的就是把每一條記錄歸到對應的類別之中。由於必須事先知道各個類別的信息,並且所有待分類的數據條目都默認有對應的類別,因此分類演算法也有其局限性,當上述條件無法滿足時,我們就需要嘗試聚類分析。


區分「聚類」與「分類」

聚類和分類是兩種不同的分析。

分類的目的是為了確定一個點的類別,具體有哪些類別是已知的,常用的演算法是 KNN (k-nearest neighbors algorithm),是一種有監督學習。聚類的目的是將一系列點分成若干類,事先是沒有類別的,常用的演算法是 K-Means 演算法,是一種無監督學習。

兩者也有共同點,那就是它們都包含這樣一個過程:對於想要分析的目標點,都會在數據集中尋找離它最近的點,即二者都用到了 NN (Nears Neighbor) 演算法。


應用場景

  • 判斷郵件是否為垃圾郵件
  • 判斷在線交易是否存在潛在風險
  • 判斷腫瘤為良性還是惡性等等

由此可見,邏輯回歸(Logistic Regression)就是一種分類分析,它有正向類和負向類,即:y ∈ {0, 1},其中 0 代表負向類,1 代表正向類。

當面對一個分類問題:y = 0 或 1,可能出現的情況是: h_{	heta}(x) > 1 或 < 0,就無法進行結果的歸納。此時就需要採用邏輯回歸,得到的結果可以滿足: 0leq h_{	heta}(x) leq 1 .

可以說邏輯回歸是一種特殊的分類演算法,同理,更普遍的分類演算法中可能有更多的類別,即:y ∈ {0, 1, 2, 3 ...} .


假說表示

由於邏輯回歸要求我們的輸出值在 0 和 1 之間,因此我們需要有一個滿足 0leq h_{	heta}(x) leq 1 的假設函數:

h_{	heta}(x) = g(	heta^{T}X)

其中,X 為特徵向量,g 為邏輯函數,也叫做S形函數(Sigmoid Function),它具體為:

g(z) = frac{1}{1+e^{-z}}

邏輯函數在圖像上具體是這樣子的:

Sigmoid Function

不難看出邏輯函數左側無限趨近 0,右側無限趨近 1,這正符合我們所需要的模型的輸出值介於 0 和 1 之間。

講上面兩個式子結合一下,我們的假設函數也可以寫作:

h_{	heta}(x) = frac{1}{1+e^{-	heta^{T}X}}

h_{	heta}(x) 的作用是,根據設定的參數,輸入給定的變數,計算輸出變數的值為 1 的可能性(Estimated Probablity),即 :

h_{	heta}(x) = P(y=1|x; 	heta)

假設 h_{	heta}(x)=0.7 ,表示 y 屬於正向類的可能性為 70%,所以 y=0 的概率為 30% 。


決策邊界

決策邊界(Decision Boundary)由假設函數決定,理論上可以為任意曲線,也就是說根據模型計算得到的值再由決策邊界進行決定最終屬於正向類還是負向類。

假設我們有一個模型: h_{	heta}(x)=g(	heta_{0}+	heta_{1}x_{1}+	heta_{2}x_{2}) ,參數 	heta 為向量 [-3; 1; 1]。當 -3+x1+x2 大於等於 0,即 x1+x2 大於等於 3 時,模型預測 y = 1。則 x1+x2=3 這條線便是我們的決策邊界,將預測值為 1 和 0 的兩個區域區分開來。

還有更加複雜的情況,如果數據像這樣分布呢:

則需要曲線才能將兩個類區分開來,就需要用到二次方,如: h_{	heta}(x)=g(	heta_{0}+	heta_{1}x_{1}+	heta_{2}x_{2}+	heta_{3}x_{1}^{2}+	heta_{4}x_{2}^{2}) ,若此時參數 	heta 為向量 [-1; 0; 0; 1; 1],則曲線正好是以原點為圓心,1 為半徑的圓。我們可以用任意複雜的曲線作為分布複雜的數據的決策邊界。


多類別分類演算法(Multiclass Classification)

對於數據集中存在多個類別的分類問題,我們可以採用一種叫做 One-vs-rest 的方法,將其轉化成二元分類的問題,然後再進行解決。

具體的思想是:分別對每一種類別進行討論,屬於該類別則為 1,否則為 0。

例如,現在有三個類別,它們的假設函數分別記作: h_{	heta}^{(1)}(x)h_{	heta}^{(2)}(x)h_{	heta}^{(3)}(x) ,即: h_{	heta}^{(i)}(x)=P(y=i|x;	heta) ,也就是計算屬於該類別的概率為多少。

於是在這個例子里,我們就有三個分類器,每個分類器都作為一種情況進行訓練 。最後,如果給出一個新的值 x,用該模型進行預測,就需要分別使用三個分類器進行計算,找到最大的那個 h_{	heta}^{(i)}(x) ,x 就屬於那個類別。


推薦閱讀:

筆記:簡單理解邏輯回歸(分類演算法)
R語言實例——基於鄰近的分類預測(KNN演算法)

TAG:機器學習 | 分類演算法 | 回歸分析 |