從前面的 kernel SVM 當中我們已經獲得了很強大的模型,可是他還是會有不足之處,像是當資料有雜訊的時候就容易將每個資料點都個別分開。
有時候我們反而希望模型在面對雜訊上不要那麼敏感,或是不要把每個資料點都分對,這時候怎麼辦呢?
從這張圖來看,我們或許可以接受這樣的線其實還不錯,只是資料多了一點雜訊。如果讓模型硬要把所有資料點都分對的話,邊界就會非常複雜,就會變成 overfitting。
我們是不是有什麼辦法去修正這個模型呢?
我們原本的模型是:
我們可以藉由在最佳化目標上加上一些 regularization 。
這樣的 regularization 項我們可以仿照之前的方法,把他改成 。
如果考慮 ,如果答對的話,他會是大於等於 1 的值,相反,如果答錯的話...........,我們只能確定他是負值,沒辦法確定他的範圍。
這樣的話,我們 直接引入一個值 來代表 到底有多大程度答錯了。
所以在最佳化目標上有 regularization,然後放寬一下限制,讓 的值可以有個容忍度 。
也就是,我們可以在 margin 儘量大的情形下,去限制讓模型不能做錯太多,這個程度可以藉由 C 做調整。