過擬合(Overfitting)表現為在訓練數據上模型的預測很准,在未知數據上預測很差。過擬合主要是因為訓練數據中的異常點,這些點嚴重偏離正常位置。我們知道,決定SVM最優分類超平面的恰恰是那些占少數的支持向量,如果支持向量中碰巧存在異常點,那么我們傻傻地讓SVM去擬合這樣的數據,最后的超平面就不是最優的。
如圖1所示,深紅色線表示我們希望訓練得到的最優分類超平面,黑色虛線表示由於過擬合得到的較差的分類面。這是由於藍色數據中有一個異常點,即圖中的那個黑圈藍點,使得我們的SVM去將就配合它,導致最后得到的分類面(粗黑色虛線)不盡如人意。從間隔可以看出,黑色虛線兩邊的間隔要比紅色線兩邊的間隔要狹窄,也就是黑色虛線的分類效果比較差。
圖1 異常點導致SVM過擬合
解決過擬合的辦法是為SVM引入了松弛變量ξ(slack variable),將SVM公式的約束條件改為:
(3)
從圖2可以看到,引入松弛變量使SVM能夠容忍異常點的存在。為什么?因為引入松弛變量后,所有點到超平面的距離約束不需要大於等於1了,而是大於0.8就行了(如果ξ=0.2的話),那么異常點就可以不是支持向量了,它就作為一個普通的點存在,我們的支持向量和超平面都不會受到它的影響。
圖 2 松弛變量的作用
我們知道,事物都有兩面性,對異常點太容忍會導致任意超平面都可以是“最優”超平面,SVM就失去意義了。因此SVM公示中的目標函數也需要相應修改,我們加上松弛變量的平方和,並求最小值。這樣就達到一個平衡:既希望松弛變量存在以解決異常點問題,又不希望松弛變量太大導致分類解決太差。