機器學習中的LR 與 SVM 相同和不同

1.前言

本篇博客是轉載自LR 與 SVM 的相同和不同,在此感謝此篇博客的作者。筆者重新排版了一下,以方便日後自己回顧。

2.SVM與LR的相同點的問題

問題1:爲什麼將LR和SVM放在一起來進行比較?

第一,LR和SVM都是分類算法。
看到這裏很多人就不會認同了,因爲在很大一部分人眼裏,LR是迴歸算法。我是非常不贊同這一點的,因爲我認爲判斷一個算法是分類還是迴歸算法的唯一標準就是樣本label的類型,如果label是離散的,就是分類算法,如果label是連續的,就是迴歸算法。很明顯,LR的訓練數據的label是“0或者1”,當然是分類算法。其實這樣不重要啦,暫且遷就我認爲他是分類算法吧,再說了,SVM也可以迴歸用呢。

第二,如果不考慮核函數,LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的。
這裏要先說明一點,那就是LR也是可以用核函數的,至於爲什麼通常在SVM中運用核函數而不在LR中運用,後面講到他們之間區別的時候會重點分析。總之,原始的LR和SVM都是線性分類器,這也是爲什麼通常沒人問你決策樹和LR什麼區別,決策樹和SVM什麼區別,你說一個非線性分類器和一個線性分類器有什麼區別?

第三,LR和SVM都是監督學習算法。

第四,LR和SVM都是判別模型。
判別模型會生成一個表示P(Y|X)的判別函數(或預測模型),而生成模型先計算聯合概率p(Y,X)然後通過貝葉斯公式轉化爲條件概率。簡單來說,在計算判別模型時,不會計算聯合概率,而在計算生成模型時,必須先計算聯合概率。或者這樣理解:生成算法嘗試去找到底這個數據是怎麼生成的(產生的),然後再對一個信號進行分類。基於你的生成假設,那麼那個類別最有可能產生這個信號,這個信號就屬於那個類別。判別模型不關心數據是怎麼生成的,它只關心信號之間的差別,然後用差別來簡單對給定的一個信號進行分類。常見的判別模型有:KNN、SVM、LR,常見的生成模型有:樸素貝葉斯,隱馬爾可夫模型。當然,這也是爲什麼很少有人問你樸素貝葉斯和LR以及樸素貝葉斯和SVM有什麼區別。

3.SVM與LR的不同點的問題

第一,本質上是其loss function不同
a.邏輯迴歸的損失函數:
LR與SVM的相同和不同
b:支持向量機的目標函數:
LR與SVM的相同和不同
不同的loss function代表了不同的假設前提,也就代表了不同的分類原理,也就代表了一切!!!簡單來說,邏輯迴歸方法基於概率理論,假設樣本爲1的概率可以用sigmoid函數來表示,然後通過極大似然估計的方法估計出參數的值,具體細節參考機器學習算法——邏輯斯諦迴歸模型&最大熵模型。支持向量機基於幾何間隔最大化原理,認爲存在最大幾何間隔的分類面爲最優分類面,具體細節參考機器學習算法——感知機&支持向量機

第二,支持向量機只考慮局部的邊界線附近的點,而邏輯迴歸考慮全局(遠離的點對邊界線的確定也起作用)。
當你讀完上面兩個網址的內容,深入瞭解了LR和SVM的原理過後,會發現影響SVM決策面的樣本點只有少數的結構支持向量,當在支持向量外添加或減少任何樣本點對分類決策面沒有任何影響;而在LR中,每個樣本點都會影響決策面的結果。用下圖進行說明:
a.支持向量機改變非支持向量樣本並不會引起決策面的變化:
LR與SVM的相同和不同
b.邏輯迴歸中改變任何樣本都會引起決策面的變化:
LR與SVM的相同和不同
理解了這一點,有可能你會問,然後呢?有什麼用呢?有什麼意義嗎?對使用兩種算法有什麼幫助麼?一句話回答:因爲上面的原因,得知:線性SVM不直接依賴於數據分佈,分類平面不受一類點影響;LR則受所有數據點的影響,如果數據不同類別strongly unbalance,一般需要先對數據做balancing。(引自http://www.zhihu.com/question/26768865/answer/34078149

第三,在解決非線性問題時,支持向量機採用核函數的機制,而LR通常不採用核函數的方法。
這個問題理解起來非常簡單。分類模型的結果就是計算決策面,模型訓練的過程就是決策面的計算過程。通過上面的第二點不同點可以瞭解,在計算決策面時,SVM算法裏只有少數幾個代表支持向量的樣本參與了計算,也就是隻有少數幾個樣本需要參與覈計算(即kernal machine解的係數是稀疏的)。然而,LR算法裏,每個樣本點都必須參與決策面的計算過程,也就是說,假設我們在LR裏也運用核函數的原理,那麼每個樣本點都必須參與覈計算,這帶來的計算複雜度是相當高的。所以,在具體應用時,LR很少運用核函數機制。

第四,線性SVM依賴數據表達的距離測度,所以需要對數據先做normalization,LR不受其影響。(引自http://www.zhihu.com/question/26768865/answer/34078149

第五,SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是爲什麼SVM是結構風險最小化算法的原因!!!而LR必須另外在損失函數上添加正則項!!!
以前一直不理解爲什麼SVM叫做結構風險最小化算法,所謂結構風險最小化,意思就是在訓練誤差和模型複雜度之間尋求平衡,防止過擬合,從而達到真實誤差的最小化。未達到結構風險最小化的目的,最常用的方法就是添加正則項,後面的博客我會具體分析各種正則因子的不同,這裏就不扯遠了。但是,你發現沒,SVM的目標函數里居然自帶正則項!!!再看一下上面提到過的SVM目標函數:
LR與SVM的相同和不同
L1正則與L2正則,參考博客正則化方法:L1和L2 regularization、數據集擴增、dropout

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章