在大大小小的面試過程中,多次被問及這個問題:「請說一下邏輯回歸(lr)和支援向量機(svm)之間的相同點和不同點」。第一次被問到這個問題的時候,含含糊糊地說了一些,大多不在點子上,後來被問得多了,慢慢也就理解得更清楚了,所以現在整理一下,希望對以後面試機器學習方向的同學有所幫助(至少可以瞎扯幾句,而不至於啞口無言ha(*^-^*))。
(1)為什麼將lr和svm放在一起來進行比較? 回答這個問題其實就是回答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有什麼區別(哈哈,廢話是不是太多)。
第五,lr和svm在學術界和工業界都廣為人知並且應用廣泛。
講完了lr和svm的相同點,你是不是也認為有必要將他們進行比較一下了呢?而且比較lr和svm,是不是比讓你比較決策樹和lr、決策樹和svm、樸素貝葉斯和lr、樸素貝葉斯和svm更能考察你的功底呢?
(2)lr和svm的不同。 第一,本質上是其loss function不同。
不同的loss function代表了不同的假設前提,也就代表了不同的分類原理,也就代表了一切!!!簡單來說,邏輯回歸方法基於概率理論,假設樣本為1的概率可以用sigmoid函式來表示,然後通過極大似然估計的方法估計出引數的值,具體細節參考
。支援向量機基於幾何間隔最大化原理,認為存在最大幾何間隔的分類面為最優分類面,具體細節參考
第二,支援向量機只考慮區域性的邊界線附近的點,而邏輯回歸考慮全域性(遠離的點對邊界線的確定也起作用)。
當你讀完上面兩個**的內容,深入了解了lr和svm的原理過後,會發現影響svm決策面的樣本點只有少數的結構支援向量,當在支援向量外新增或減少任何樣本點對分類決策面沒有任何影響;而在lr中,每個樣本點都會影響決策面的結果。用下圖進行說明:
理解了這一點,有可能你會問,然後呢?有什麼用呢?有什麼意義嗎?對使用兩種演算法有什麼幫助麼?一句話回答:
因為上面的原因,得知:線性svm不直接依賴於資料分布,分類平面不受一類點影響;lr則受所有資料點的影響,如果資料不同類別strongly unbalance,一般需要先對資料做balancing。(引自
)第三,在解決非線性問題時,支援向量機採用核函式的機制,而lr通常不採用核函式的方法。
這個問題理解起來非常簡單。分類模型的結果就是計算決策面,模型訓練的過程就是決策面的計算過程。通過上面的第二點不同點可以了解,在計算決策麵時,svm演算法裡只有少數幾個代表支援向量的樣本參與了計算,也就是只有少數幾個樣本需要參與核計算(即kernal machine解的係數是稀疏的)。然而,lr演算法裡,每個樣本點都必須參與決策面的計算過程,也就是說,假設我們在lr裡也運用核函式的原理,那麼每個樣本點都必須參與核計算,這帶來的計算複雜度是相當高的。所以,在具體應用時,lr很少運用核函式機制。
第四,線性svm依賴資料表達的距離測度,所以需要對資料先做normalization,lr不受其影響。(引自
)乙個機遇概率,乙個機遇距離!
第五,svm的損失函式就自帶正則!!!(損失函式中的1/2||w||^2項),這就是為什麼svm是結構風險最小化演算法的原因!!!而lr必須另外在損失函式上新增正則項!!!
以前一直不理解為什麼svm叫做結構風險最小化演算法,所謂結構風險最小化,意思就是在訓練誤差和模型複雜度之間尋求平衡,防止過擬合,從而達到真實誤差的最小化。未達到結構風險最小化的目的,最常用的方法就是新增正則項,後面的部落格我會具體分析各種正則因子的不同,這裡就不扯遠了。但是,你發現沒,svm的目標函式裡居然自帶正則項!!!再看一下上面提到過的svm目標函式:
有木有,那不就是l2正則項嗎?
LR與SVM的區別
lr與svm的區別 相同點 1.lr和svm都是分類演算法 2.如果不考慮核函式,lr和svm都是線性分類演算法,即它們的分類決策函式都是線性的 3.lr和svm都是監督學習演算法 4.lr和svm都是判別模型。不同點 1.從目標函式來看,lr採用的是對數損失函式,svm採用的是合頁損失函式。這兩個...
LR 和 SVM 的區別與聯絡
在很大一部分人眼裡,lr是回歸演算法。我是非常不贊同這一點的,因為我認為判斷乙個演算法是分類還是回歸演算法的唯一標準就是樣本label的型別,如果label是離散的,就是分類演算法,如果label是連續的,就是回歸演算法。很明顯,lr的訓練資料的label是 0或者1 當然是分類演算法。其實這樣不重...
LR和SVM的區別與聯絡
lr和svm本質不同在於loss function的不同 lr的損失函式是cross entropy loss,svm的損失函式是hinge loss,兩個模型都屬於線性分類器,而且效能相當。區別在於 換用其他的loss函式的話,svm就不再是svm了。正是因為hinge loss的零區域對應的正是...