1. 程式人生 > >LR與SVM的相同點與不同點

LR與SVM的相同點與不同點

    Liblinear支援兩個熱門的二元線性分類器:常規邏輯迴歸LR和線性SVM。給出一組例項標籤(xi,yi),i=1,...l,xi∈Rn,yi∈{-1,1},這兩個分類器使用了不同的損失演算法解決下面的約束優化問題。其中,C是大於0的懲罰因子。對於SVM來說,有兩個常用的損失演算法max(1-yiwTxi,0)和max(1-yiwTxi,0)2,分別指的是L1-SVM和L2-SVM。對LR來說,損失演算法是log(1+e-yiwTxi),得自一個概率模型。在有些案例中,分類器的判別式還要包含一個偏差項b。Liblinear通過對每個例項和緯度加強影響來實現偏差:wT<-[wT,b],XiT<-[XiT,B].其中B是使用者指定的常量。與此不同,L1-SVM和L2-SVM的演算法是座標下降法。Liblinear為L2-SVM和LR都實現了信任區域的牛頓方法。在測試階段,我們預測一個數據點上x>0,如果WTx>0.對於多元例項訓練,我們為之提供了1Vrest的策略。

    無意間看到上面這段話,想起了那天吃飯的時候一個同事說他碰到一個面試題目是: svm 和 lr 的異同,當時思考了一下,之後想起了曾經在學習logistic regression classification model的梯度的時候,推到和一個簡單的兩層的sigmoid輸出的的梯度是一樣,後來發現神經網路擬合的時候,我們用的是均方誤差的loss function ,而在這個lr 的推倒的時候,我同樣用了均方誤差的loss,因此得到一樣的結果,但是通常在lr的推倒的時候,我們是直接用 最大似然估計的,然後只有當 誤差的分佈滿足高斯分佈的時候,最大似然的結果才會和最小二乘相同(loss function 為均方誤差)

    剛才看到上面的loss function 的形式,想到了cross entropy loss,在網上找到這篇文章印證了這個

    http://www.cs.mcgill.ca/~dprecup/courses/ML/Lectures/ml-lecture05.pdf,不做這個ppt中的lable是0和1,所以和上面的公式有所不同,表達形式沒有那麼漂亮,但是是一樣的,有時間再把這幾個公式整理一下吧。

    lr 和 svm本質不同在於loss function的不同,不過想想這幾乎對所有的單層模型都使用,lr的損失函式是 cross entropy loss, adaboost的損失函式是 expotional loss ,svm是hinge loss,常見的迴歸模型通常用 均方誤差 loss。