\qquad SVM用的比较多,最近学习了其推导过程,自己写一遍,算是做个加强。
SVM有三种形式
\qquad 第一种是线性可分SVM(硬间隔最大化,hard margin maximization),通俗说就是画条线既可以区分得很清楚,形象表示:
\qquad 第二种是线性svm(软间隔最大化,soft margin maximization,与第一种比少了“线性”两个字),通俗的说就是画条线后两边还是有少数的错点,如下图所示两边还是有一些错点导致并不能简单的线性可分:
\qquad 第三种是非线性支持向量(与前两种比,多了“核函数”),存在分割的曲线(2D)、曲面(3D)、超曲面(nD)才能把散点分开,比如下面的图:
SVM数学推导,原理大概也就是这样
\qquad 我们知道直线方程有3种表达方式:
\qquad \qquad (1) y = k x + b y=kx+b y=kx+b 斜截方程
\qquad \qquad (2) y → = w → x → + b \overrightarrow{y}=\overrightarrow{w}\overrightarrow{x}+b y=wx+b 向量方程,其中 b b b为标量
\qquad \qquad (3) A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0 直线方程基本表示方法
\qquad 这3种方法都能表示一条直线,同时,我们知道求直线外一点到直线的最短距离为:
\qquad \qquad d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 . . . . . . . . . ( 4 ) d=\frac{|Ax_{0}+By_{0}+C|}{\sqrt{A^2+B^2}}.........(4) d=A2+B2∣Ax0+By0+C∣.........(4)
\qquad 把上面的(4)式子去掉绝对值有了正负,就是考虑了该点位于线的那一侧,比如为正则表示在线的上方,为负则表示在线的下方(举个列子而已),这时候距离可以表示为:
\qquad \qquad d = A x 0 A 2 + B 2 + B y 0 A 2 + B 2 + C A 2 + B 2 . . . . . . . . . ( 5 ) d=\frac{Ax_{0}}{\sqrt{A^2+B^2}}+\frac{By_{0}}{\sqrt{A^2+B^2}}+\frac{C}{\sqrt{A^2+B^2}}.........(5) d=A2+B2Ax0+A2+B2By0+A2+B2C.........(5)
\qquad 记: A ‾ = A x 0 A 2 + B 2 \overline{A}=\frac{Ax_{0}}{\sqrt{A^2+B^2}} A=A2+B2Ax0 \qquad B ‾ = B x 0 A 2 + B 2 \overline{B}=\frac{Bx_{0}}{\sqrt{A^2+B^2}} B=A2+B2Bx0 \qquad b = C x 0 A 2 + B 2 b=\frac{Cx_{0}}{\sqrt{A^2+B^2}} b=A2+B2Cx0
\qquad 记: w → = ( A ‾ B ‾ ) \overrightarrow{w}=\left( \begin{matrix} \overline{A}\\ \overline{B}\\ \end{matrix}\right) w=(AB