SVM
SVM
什么是超平面
- 超平面的表达式为\(\omega^Tx+b=0\), 其中\(\omega\)为超平面的一个法向量, b为超平面的偏移量
- 更多:
- 在几何中, 直线, 平面, 超平面无一例外都可以被表示成\(\theta^Tx+b=0\)或者\(\omega^Tx+b=0\), 其中, 因为x没有包含偏移量, 所有加上一个b, \(\theta\)和\(\omega\)为系数向量, 其实就是对应的平面或者直线的法向量, 这里很能有一些人不能理解为什么\(\omega\)成了法向量了, 下面给一个例子
- 一个平面方程: \(Ax_1+Bx_2+Cx_3+D=0\)
- 首先, 如果我们学过高等数学的话, 希望还记得(A, B, C)就是这个平面的法向量这个结论, 这样的话, \((A, B, C)^T(x_1, x_2, x_3)=0\), 截距\(D\)是不影响的, 显然\(\omega^Tx=0\), \(\omega\)为平面的法向量
- 下面来推导
- 设\((x_0, y_0, z_0)\)是平面\(Ax_1+Bx_2+Cx_3+D=0\)上的一点, 则有方程$$Ax_0+By_0+Cz_0+D=0$$
- 则可以有$$A(x_1-x_0)+B(x_2-y_0)+C(x_3-z_0)=0$$
- 将上述的方程写成向量式为\((A, B, C)^T(x_1-x_0, x_2-y_0, x_3-z_0)=0\), 显然\((x_1-x_0, x_2-y_0, x_3-z_0)\)为平面\(Ax_1+Bx_2+Cx_3+D=0\)上的一条直线, 向量\((A, B, C)\)与他的内积为0表示\((A, B, C)\)为平面\(Ax_1+Bx_2+Cx_3+D=0\)的法向量
- 将平面方程写成\((A, B, C)^T(x_1, x_2, x_3)+D=0\), 进一步的, \(\omega^Tx+D=0\), 在上面一步我们一定得出了\(\omega\)为平面的法向量, \(x\)为平面上的一条直线
SVM类型
-
线性可分SVM
- 在不修改维度的前提下, 可以线性的分隔, 得到一个线性分类器
-
非线性SVM
- 在不修改维度的前提下, 不能通过线性的分隔所有的样本, 如果需要需要分类样本需要借助核函数
- 核函数将当前的特征的维度进行映射, 映射到一个高维度
-
SVM是一个二次规划问题
- 目标函数\(min({1\over{2}}||\omega||^{2})\)
- 约束为\[\begin{cases} \omega^Tx_0+b >= 1 & if & y = +1 \\ \omega^Tx_0+b <= -1 & if & y = -1 \end{cases} \]
- 上面是多个式子, 通过一个技巧将多个式子合成一个
- \(y(\omega^Tx_0)+b)>=1\), 这个就是我们的新的约束条件, 只要\(y(\omega^Tx_0+b)<1\)则超平面\(\omega^Tx+b\)不符合我们的要求; 如果\(y(\omega^Tx_0+b)>=1\)则超平面\(\omega^Tx+b\)确实符合我们的约束条件, 但是不一定符合\(min({1\over{2}}||\omega||^{2})\), 所有可能有多个超平面符合约束条件但是不是最优的
凸优化
- 对于式子
-
\[min({1\over{2}}||\omega||^{2}) \]
-
\[ \begin{cases} \omega^Tx_0+b >= 1 & if & y = +1 \\ \omega^Tx_0+b <= -1 & if & y = -1 \end{cases} \]
-
- 目标函数是二次的, 约束条件是线性的, 使用拉格朗日乘数法计算
- \(L(\omega, \alpha, \beta)=f(\omega)+\sum_{i=1}^{k}\alpha_{i}g_i(x)+\sum_{i=1}^{k}\beta_ih_i(x)\)
- 得到最终的目标函数\(L(\omega, b, \alpha)=min({1\over{2}}||\omega||^{2})-\sum_{i=1}^{m}{\alpha_i}(y^{i}(\omega^Tx_i+b)-1)\), 其中\(y^{i}(\omega^Tx_i+b)-1\)是约束条件的进行简单变换的形式, \(\alpha\)为拉格朗日因子
- 现在我们只需要求出\(min(L(\omega, b, \alpha))\)即可
- 因为要求极值, 就要求出偏导, 在这里, 分别对\(\omega\)和\(b\)求偏导, 得到\[\begin{cases} \omega=\sum_{i=1}^{m}{\alpha}y^{i}x^{i} & (1) & 对\omega的偏导\\ \sum_{i=1}^{m}\alpha_{i}y^{i}=0 & (2) & 对b的偏导 \end{cases} \]
- 将公式(1)和(2)带入到目标函数中, 消掉\(\omega\)和\(b\), 这样就得到了一个只含有\(\alpha\)的式子了, 因为(1)告诉我们\(\omega\)和\(\alpha\)的关系, 所有只要求出\(\alpha\)就可以得出\(\omega\)和\(b\), 有了\(\omega\)和\(b\)就能计算出最优的超平面了
- 关于计算出最终的结果, 需要使用SMO算法
- 额外的, 如果我们不对原始的问题添加松弛变量的话, 则会导致过拟合的现象, 所有我们还需要修改原始公式添加松弛变量和正则化参数
拉格朗日乘数法(二次优化问题)
- 拉格朗日乘数法知识将原始的问题转换了一下, 我们并不是通过拉格朗日求出最后的结果, 而是为了使用SMO(一个流弊的算法)求出最后的结果做准备
- 借别人的话就是
- 分类间隔,引入SVM。
- 使用拉格朗日乘子来简化SVM问题的优化。
- 非线性分类(核函数)以及松弛变量。
- SMO算法实现简单的SVM分类器。
Hinge + L2损失函数
- 这是从另外给一个角度解决SVM
MATLAB实现SVM
- 将原始问题转换为拉格朗日对偶式, 显然这个也是一个二次规划问题, 调用matlab自带的qualprog函数得到支持向量(得到\(\alpha\)的解)