支援向量機(SVM,Support Vector Machine)和邏輯迴歸(Logistic Regression)都是機器學習中常用到的分類演算法。
兩者間的區別在於:
1.SVM屬於非引數估計,本質上是解決一個二次規劃的問題;而邏輯迴歸屬於引數估計,是極大似然估計的問題。
2.最佳化的目標函式不同,軟間隔(soft margin)的SVM的最佳化目標是:
就等價於:
其中第二項中用於衡量分類損失的函式是合頁損失(hinge loss)
而帶正則化的邏輯迴歸中最佳化的目標函式為:
其中第一項就是衡量分類誤差的交叉熵損失(cross-entropy loss)。
下圖就是邏輯迴歸和SVM損失函式之間的差別。可以看到邏輯迴歸在左側(分類錯誤)更加發散,因此會對異常點(outliers)更敏感;此外,在右側(分類正確)損失沒有像Hinge loss那樣直接為零,而是漸進為0。這樣可能就會降低分類的精度。
從最佳化目標中,可以看到在SVM中是最大化分類面間隔的同時最小化分類誤差;而邏輯迴歸正好相反,更看重最佳化分類誤差,即讓分類器儘可能分得準。
因此SVM又被稱為結構風險最小化,也就是讓分類器的泛化能力盡可能的好;邏輯迴歸被稱為經驗風險最小化,就是最小化分類損失。
3. SVM的訓練過程中實際上只用到了支援向量(Support Vector),因此依賴的樣本數更少;而邏輯迴歸則是使用了全域性的樣本。
4. SVM不能直接輸出分類機率;邏輯迴歸的預測結果則是機率,再透過閾值判斷來確定分類。
5. SVM不適合處理大量資料,因為透過二次規劃來最佳化,過多的資料會導致最佳化得很慢。而邏輯迴歸則對資料量沒有要求。
二者之間的聯絡
1. 本質上都屬於線性分類模型,透過加入核函式就可以解決非線性分類問題。
2. 兩者的損失函式都是由正則化項+分類誤差來構成,調整其中的權重引數就可以對模型泛化能力和分類精度進行權衡,以得到最合適的模型引數。
支援向量機(SVM,Support Vector Machine)和邏輯迴歸(Logistic Regression)都是機器學習中常用到的分類演算法。
兩者間的區別在於:
1.SVM屬於非引數估計,本質上是解決一個二次規劃的問題;而邏輯迴歸屬於引數估計,是極大似然估計的問題。
2.最佳化的目標函式不同,軟間隔(soft margin)的SVM的最佳化目標是:
就等價於:
其中第二項中用於衡量分類損失的函式是合頁損失(hinge loss)
而帶正則化的邏輯迴歸中最佳化的目標函式為:
其中第一項就是衡量分類誤差的交叉熵損失(cross-entropy loss)。
下圖就是邏輯迴歸和SVM損失函式之間的差別。可以看到邏輯迴歸在左側(分類錯誤)更加發散,因此會對異常點(outliers)更敏感;此外,在右側(分類正確)損失沒有像Hinge loss那樣直接為零,而是漸進為0。這樣可能就會降低分類的精度。
從最佳化目標中,可以看到在SVM中是最大化分類面間隔的同時最小化分類誤差;而邏輯迴歸正好相反,更看重最佳化分類誤差,即讓分類器儘可能分得準。
因此SVM又被稱為結構風險最小化,也就是讓分類器的泛化能力盡可能的好;邏輯迴歸被稱為經驗風險最小化,就是最小化分類損失。
3. SVM的訓練過程中實際上只用到了支援向量(Support Vector),因此依賴的樣本數更少;而邏輯迴歸則是使用了全域性的樣本。
4. SVM不能直接輸出分類機率;邏輯迴歸的預測結果則是機率,再透過閾值判斷來確定分類。
5. SVM不適合處理大量資料,因為透過二次規劃來最佳化,過多的資料會導致最佳化得很慢。而邏輯迴歸則對資料量沒有要求。
二者之間的聯絡
1. 本質上都屬於線性分類模型,透過加入核函式就可以解決非線性分類問題。
2. 兩者的損失函式都是由正則化項+分類誤差來構成,調整其中的權重引數就可以對模型泛化能力和分類精度進行權衡,以得到最合適的模型引數。