1. 程式人生 > >支援向量機(SVM)和邏輯迴歸(LR)

支援向量機(SVM)和邏輯迴歸(LR)

開篇

為什麼把這兩個機器模型放在一起呢,主要是因為它們經常會在面試中同時出現,這邊把它們放在一起,解析一下它們之間的聯絡和區別。我們先看一下問題

經典演算法問題 LR 與 SVM 的相同和不同? 講一下其中的LR、SVM,以及區別和聯絡(2018京東演算法)

解析 相同點: 1、首先兩個都是常用的分類演算法,這邊要注意的是,不要看LR帶了迴歸二字就以為它是迴歸模型,其實不是,它是分類模型。 2、如果不考慮核函式,LR和SVM都是線性分類演算法,也就是說他們的分類決策面都是線性的。 3、LR和SVM都是監督學習演算法。這點算是常識啦,大家應該都知道的。 4、LR和SVM都是判別模型 判別模型會生成一個表示P(Y|X)的判別函式(或預測模型),而生成模型先計算聯合概率p(Y,X)然後通過貝葉斯公式轉化為條件概率。簡單來說,在計算判別模型時,不會計算聯合概率,而在計算生成模型時,必須先計算聯合概率。或者這樣理解:生成演算法嘗試去找到底這個資料是怎麼生成的(產生的),然後再對一個訊號進行分類。基於你的生成假設,那麼那個類別最有可能產生這個訊號,這個訊號就屬於那個類別。判別模型不關心資料是怎麼生成的,它只關心訊號之間的差別,然後用差別來簡單對給定的一個訊號進行分類。常見的判別模型有:KNN、SVM、LR,常見的生成模型有:樸素貝葉斯,隱馬爾可夫模型。當然,這也是為什麼很少有人問你樸素貝葉斯和LR以及樸素貝葉斯和SVM有什麼區別(哈哈,廢話是不是太多)。 5、LR和SVM在學術界和工業界都廣為人知並且應用廣泛

不同點: 1、首先他們的損失函式不一樣,這算本質上區別 下面我會慢慢解析這兩個演算法,這邊先不放出損失函式 支援向量機的目標函式 不同的loss function代表了不同的假設前提,也就代表了不同的分類原理,也就代表了一切!!!簡單來說,邏輯迴歸方法基於概率理論,假設樣本為1的概率可以用sigmoid函式來表示,然後通過極大似然估計的方法估計出引數的值,具體細節參考http://blog.csdn.net/pakko/article/details/37878837。支援向量機基於幾何間隔最大化原理,認為存在最大幾何間隔的分類面為最優分類面,具體細節參考http://blog.csdn.net/macyang/article/details/38782399

2、支援向量機只考慮區域性的邊界線附近的點,而邏輯迴歸考慮全域性(遠離的點對邊界線的確定也起作用)。 當你讀完上面兩個網址的內容,深入瞭解了LR和SVM的原理過後,會發現影響SVM決策面的樣本點只有少數的結構支援向量,當在支援向量外新增或減少任何樣本點對分類決策面沒有任何影響;而在LR中,每個樣本點都會影響決策面的結果。

因為上面的原因,得知:線性SVM不直接依賴於資料分佈,分類平面不受一類點影響;LR則受所有資料點的影響,如果資料不同類別strongly unbalance,一般需要先對資料做balancing。

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

4、線性SVM依賴資料表達的距離測度,所以需要對資料先做normalization,LR不受其影響。

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

LR和SVM分別在什麼情況下使用?? 同樣的線性分類情況下,如果異常點較多的話,無法剔除,首先LR,LR中每個樣本都是有貢獻的,最大似然後會自動壓制異常的貢獻,SVM+軟間隔對異常還是比較敏感,因為其訓練只需要支援向量,有效樣本本來就不高,一旦被幹擾,預測結果難以預料。劃重點:SVM對噪聲點比較敏感

邏輯迴歸相對來說模型更簡單,好理解,實現起來,特別是大規模線性分類時比較方便。而SVM的理解和優化相對來說複雜一些。但是SVM的理論基礎更加牢固,有一套結構化風險最小化的理論基礎,雖然一般使用的人不太會去關注。還有很重要的一點,SVM轉化為對偶問題後,分類只需要計算與少數幾個支援向量的距離,這個在進行復雜核函式計算時優勢很明顯,能夠大大簡化模型和計算量。

假設: n = 特徵數量,m = 訓練樣本數量 1)如果n相對於m更大,比如 n = 10,000,m = 1,000,則使用lr理由:特徵數相對於訓練樣本數已經夠大了,使用線性模型就能取得不錯的效果,不需要過於複雜的模型; 2)如果n較小,m比較大,比如n = 10,m = 10,000,則使用SVM(高斯核函式)理由:在訓練樣本數量足夠大而特徵數較小的情況下,可以通過使用複雜核函式的SVM來獲得更好的預測效能,而且因為訓練樣本數量並沒有達到百萬級,使用複雜核函式的SVM也不會導致運算過慢; 3)如果n較小,m非常大,比如n = 100, m = 500,000,則應該引入/創造更多的特徵,然後使用lr或者線性核函式的SVM理由:因為訓練樣本數量特別大,使用複雜核函式的SVM會導致運算很慢,因此應該考慮通過引入更多特徵,然後使用線性核函式的SVM或者lr來構建預測性更好的模型。