引言
前序學習進程中,了解了向量、向量點積運算、超平面、感知機等知識點。
SVM算法最核心的目標是通過規劃租號的分割超平面,來使得超平面附近的點到超平面的距離和達到最大值。
那點和超平面的距離如何計算,就是今天學習的重點。
點與超平面的距離
前述學習進程中,已知超平面的常規表達為:w?x+b=0w\cdot x+b=0w?x+b=0
對于任何一個點(x,y),實際上可以直接帶入上式,定義:β=w?x+b\beta=w\cdot x+bβ=w?x+b
當點(x,y)位于平面上時,顯然會有β=0,其余情況β≠0。
當超平面確定,對于數據集中的每個點,都要計算β,并且取最小的β為點到超平面的距離,也就是取最近的點;
對于多個超平面,會獲得多個β,取最大β對應的超平面為最佳分割超平面。
**但當β<0時,絕對值越大的β實際上距離越遠,但在數學的對比中反而越小,這就導致最近的點實際上取成了最遠的點,也就是取到錯誤的點。
為此,一個新的最近點判斷依據出現,函數間隔F:F=min?i=1...myi(w?xi+b)F=\min_{i=1...m}y_{i}(w\cdot x_{i}+b)F=i=1...mmin?yi?(w?xi?+b)
當F>0,表明點的位置分類正確;
當F<0,表明點的位置分類錯誤。
這里可以對上述判別進行說明:
當超平面是一條線的時候,對于一個在超平面上的點(x0,y0),一定滿足超平面的常規表達式:β=w?x=w1x0+w2y0+b=0=w1x0?y0+b=0\beta=w\cdot x=w_{1}x_{0}+w_{2}y_{0}+b=0=w_{1}x_{0}-y_{0}+b=0β=w?x=w1?x0?+w2?y0?+b=0=w1?x0??y0?+b=0
當一個點不在超平面上,取d>0:
有點(x0,y1),且滿足y1=y0+d,點在分割線的上方,此時代入超平面的常規表達式會有:
β=w?x=w1x0+w2y1+b=0=w1x0?y1+b=?d<0\beta=w\cdot x=w_{1}x_{0}+w_{2}y_{1}+b=0=w_{1}x_{0}-y_{1}+b=-d<0β=w?x=w1?x0?+w2?y1?+b=0=w1?x0??y1?+b=?d<0
如果y0>0,則F<0,與β<0一致,容易把最近的點取成最遠的點,出現分類錯誤;
如果y0<0,且y1>0,則F<0,與β<0一致,容易把最近的點取成最遠的點,出現分類錯誤;
如果y0<0,且y1<0,則F>0,與β<0相反,且F=-d(y0+d),F越大,偏離超平面的距離也就越遠,所以此時不會犯分類錯誤;
當一個點不在超平面上,取d>0:
有點(x0,y1),且滿足y1=y0-d,點在分割線的下方,此時代入超平面的常規表達式會有:
β=w?x=w1x0+w2y1+b=0=w1x0?y1+b=d>0\beta=w\cdot x=w_{1}x_{0}+w_{2}y_{1}+b=0=w_{1}x_{0}-y_{1}+b=d>0β=w?x=w1?x0?+w2?y1?+b=0=w1?x0??y1?+b=d>0
如果y0>0,且y1>0,則F>0,與β>0一致,且F=d(y0-d),F越大,偏離超平面的距離也就越遠,所以此時不會犯分類錯誤;
如果y0>0,且y1<0,則F<0,與β>0相反,容易把最近的點取成最遠的點,出現分類錯誤;
如果y0<0,則F<0,與β>0相反,容易把最近的點取成最遠的點,出現分類錯誤。
總結
學習了點與超平面的距離的計算。