一、相同點
第一,LR和SVM都是分類算法(SVM也可以用與回歸)
第二,如果不考慮核函數,LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的。
這里要先說明一點,那就是LR也是可以用核函數的。總之,原始的LR和SVM都是線性分類器,這也是為什么通常沒人問你決策樹和LR什么區別,你說一個非線性分類器和一個線性分類器有什么區別?
第三,LR和SVM都是監督學習算法。
第四,LR和SVM都是判別模型。
這里簡單講解一下判別模型和生成模型的差別:
判別式模型(Discriminative Model)是直接對條件概率p(y|x;θ)建模。常見的判別式模型有線性回歸模型、線性判別分析、支持向量機SVM、神經網絡、boosting、條件隨機場等。
舉例:要確定一個羊是山羊還是綿羊,用判別模型的方法是從歷史數據中學習到模型,然后通過提取這只羊的特征來預測出這只羊是山羊的概率,是綿羊的概率。
生成式模型(Generative Model)則會對x和y的聯合分布p(x,y)建模,然后通過貝葉斯公式來求得p(yi|x),然后選取使得p(yi|x)最大的yi,即:
常見的生成式模型有 隱馬爾可夫模型HMM、朴素貝葉斯模型、高斯混合模型GMM、LDA、高斯、混合多項式、專家的混合物、馬爾可夫的隨機場
舉例:利用生成模型是根據山羊的特征首先學習出一個山羊的模型,然后根據綿羊的特征學習出一個綿羊的模型,然后從這只羊中提取特征,放到山羊模型中看概率是多少,在放到綿羊模型中看概率是多少,哪個大就是哪個。
考慮這樣一個例子,假設給定動物的若干個特征屬性,我們希望通過這些特征學習給定的一個“個體”到底是屬於“大象”(y=1)還是“狗”(y=0)
如果采用判別模型的思路,如邏輯回歸,我們會根據訓練樣本數據學習類別分界面,然后對於給定的新樣本數據,我們會判斷數據落在分界面的哪一側從而來判斷數據究竟是屬於“大象”還是屬於“狗”。在這個過程中,我們並不會關心,究竟“大象”這個群體有什么特征,“狗”這個群體究竟有什么特征。
現在我們來換一種思路,我們首先觀察“大象”群體,我們可以根據“大象”群體特征建立模型,然后再觀察“狗”群體特征,然后再建立“狗”的模型。當給定新的未知個體時,我們將該個體分別於“大象”群體和“狗”群體模型進行比較,看這個個體更符合哪個群體模型的特征。
所以分析上面可知,判別模型是直接學習p(y|x) 或者直接從特征空間學習類別標簽,生成分類決策面;生成模型是對類別模型進行學習,即學習p(x|y) (每一類別數據的特征模型)和p(y) (別類概率)。如在上面的例子中,對於“大象”群體,特征分布可以表示為p(x|y=1) ,對“狗”群體建立特征模型p(x|y=0) 假設類別概率分布p(y) 是已知的,那么我們可以通過貝葉斯公式,對給定數據特征x 的類別后驗概率推導為,
第五,LR和SVM在學術界和工業界都廣為人知並且應用廣泛。
二、不同點
第一,本質上是其loss function不同
邏輯回歸的損失函數:
支持向量機的目標函數:
邏輯回歸方法基於概率理論,假設樣本為1的概率可以用sigmoid函數來表示,然后通過極大似然估計的方法估計出參數的值
支持向量機基於幾何間隔最大化原理,認為存在最大幾何間隔的分類面為最優分類面
第二,支持向量機只考慮局部的邊界線附近的點,而邏輯回歸考慮全局(遠離的點對邊界線的確定也起作用,雖然作用會相對小一些)
SVM決策面的樣本點只有少數的支持向量,當在支持向量外添加或減少任何樣本點對分類決策面沒有任何影響:
LR中,每個樣本點都會影響決策面的結果。用下圖進行說明:
由上得知:線性SVM不直接依賴於數據分布,分類平面不受非支持向量點影響;LR則受所有數據點的影響,如果數據不同類別strongly unbalance,一般需要先對數據做balancing
第三,在解決非線性問題時,支持向量機采用核函數的機制,而LR通常不采用核函數的方法
這個問題理解起來非常簡單。分類模型的結果就是計算決策面,模型訓練的過程就是決策面的計算過程。通過上面的第二點不同點可以了解,在計算決策面時,SVM算法里只有少數幾個代表支持向量的樣本參與了計算,也就是只有少數幾個樣本需要參與核計算。然而,LR算法里,每個樣本點都必須參與決策面的計算過程,也就是說,假設我們在LR里也運用核函數的原理,那么每個樣本點都必須參與核計算,這帶來的計算復雜度是相當高的。所以,在具體應用時,LR很少運用核函數機制
第四,線性SVM依賴數據表達的距離測度,所以需要對數據先做normalization,LR不受其影響
一個基於概率,一個基於距離!
第五,SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是為什么SVM是結構風險最小化算法的原因!!!而LR必須另外在損失函數上添加正則項!!!
所謂結構風險最小化,意思就是在訓練誤差和模型復雜度之間尋求平衡,防止過擬合,從而達到真實誤差的最小化。未達到結構風險最小化的目的,最常用的方法就是添加正則項,SVM的目標函數里居然自帶正則項!!!