1. 程式人生 > >邏輯迴歸、決策樹和支援向量機

邏輯迴歸、決策樹和支援向量機

摘要:分類問題是商業業務中遇到的主要問題之一。本文對三種主要技術展開討論,邏輯迴歸(Logistic Regression)、決策樹(Decision Trees)和支援向量機(Support Vector Machine,SVM)。

分類問題是我們在各個行業的商業業務中遇到的主要問題之一。在本文中,我們將從眾多技術中挑選出三種主要技術展開討論,邏輯迴歸(Logistic Regression)、決策樹(Decision Trees)和支援向量機(Support Vector Machine,SVM)。

上面列出的演算法都是用來解決分類問題(SVM和DT也被用於迴歸,但這不在我們的討論範圍之內)。我多次看到有人提問,對於他的問題應該選擇哪一種方法。經典的也是最正確的回答是“看情況而定!”,這樣的回答卻不能讓提問者滿意。確實讓人很費神。因此,我決定談一談究竟是看什麼情況而定。

這個解釋是基於非常簡化的二維問題,但足以藉此來理解讀者棘手的更高維度資料。

我將從最重要的問題開始討論:在分類問題中我們究竟要做什麼?顯然,我們是要做分類。(這是個嚴肅的問題?真的嗎?)我再來複述一遍吧。為了做分類,我們試圖尋找決策邊界線或是一條曲線(不必是直線),在特徵空間裡區分兩個類別。

特徵空間這個詞聽起來非常高大上,容易讓很多新人犯迷糊。我給你展示一個例子來解釋吧。我有一個樣本,它包含三個變數:x1, x2和target。target有0和1兩種值,取決於預測變數x1和x2的值。我將資料繪製在座標軸上。

這就是特徵空間,觀測值分佈於其中。這裡因為我們只有兩個預測變數/特徵,所有特徵空間是二維的。你會發現兩個類別的樣本用不同顏色的點做了標記。我希望我們的演算法能計算出一條直線/曲線來分離這個類別。

通過目測可知,理想的決策邊界(分割曲線)是一個圓。實際決策邊界形狀的差異則是由於邏輯迴歸、決策樹和支援向量機演算法的差異引起的。

先說邏輯迴歸。很多人對邏輯迴歸的決策邊界都有誤解。這種誤解是由於大多數時候提到邏輯迴歸,人們就見到那條著名的S型曲線。

上圖所示的藍色曲線並不是決策邊界。它是邏輯迴歸模型的二元響應的一種變形。邏輯迴歸的決策邊界總是一條直線(或者一個平面,在更高維度上是超平面)。讓你信服的最好方法,就是展示出大家都熟知的邏輯迴歸方程式。

我們做一個簡單的假設,F是所有預測變數的線性組合。

上面的等式也可以寫作:

當你進行預測的時候,對概率值做一個分數截斷,高於截斷值的概率為1,否則為0。假設截斷值用c表示,那麼決策過程就變成了這樣:

Y=1 if p>c, 否則0。最後給出的決策邊界是F>常數。

F>常數,無非就是一個線性決策邊界。我們樣本資料用邏輯迴歸得到的結果將會是這樣。

你會發現效果並不好。因為無論你怎麼做,邏輯迴歸方法得到的決策邊界總是線性的,並不能得到這裡需要的環狀邊界。因此,邏輯迴歸適用於處理接近線性可分的分類問題。(雖然可以對變數做變換得到線性可分的結果,但我們在此不討論這類情況。)

接著我們來看決策樹如何處理這類問題。我們都知道決策樹是按照層次結構的規則生成的。以我們的資料為例。

如果你仔細思考,這些決策規則x2 |</>| const OR x1 |</>| const 只是用平行於軸線的直線將特徵空間切分,如下圖所示。

我們可以通過增加樹的大小使它生長得更復雜,用越來越多的分割槽來模擬環狀邊界。

哈哈!趨向於環狀了,很不錯。如果你繼續增加樹的尺寸,你會注意到決策邊界會不斷地用平行線圍成一個環狀區域。因此,如果邊界是非線性的,並且能通過不斷將特徵空間切分為矩形來模擬,那麼決策樹是比邏輯迴歸更好的選擇。

然後我們再來看看SVM的結果。SVM通過把你的特徵空間對映到核空間,使得各個類別線性可分。這個過程更簡單的解釋就是SVM給特徵空間又額外增加了一個維度,使得類別線性可分。這個決策邊界映射回原特徵空間後得到的是非線性決策邊界。下圖比我的解釋更清楚。

你可以看到,一旦樣本資料以某種方式增加了一個維度,我們就能用一個平面來分割資料(線性分類器),這個平面映射回原來的二維特徵空間,就能得到一個環狀的決策邊界。

SVM在我們資料集上的效果多棒啊:

注:決策邊界並不是這麼標準的圓形,但是非常接近了(可能是多邊形)。我們為了操作簡便,就用圓環代替了。

現在清楚各種區別了吧,但是還有一個問題。也就是說,在處理多維資料時,什麼時候該選擇何種演算法?這個問題很重要,因為若是資料維度大於三,你就找不到簡單的方法來視覺化地呈現資料。我們將在第二部分討論這麼問題,敬請關注。