支持向量机SVM(Support Vector Machine)
SVM寻找区分两类的超平面(hyper plane),使边际(margin)最大。
准备知识
向量的点乘(向量的积)
几何意义:向量a在向量b方向上的投影与向量b的模的乘积
- 如果$\vec{a} $和 $\vec{b}$垂直,$\vec{a} \cdot \vec{b} =0$;
- 如果$\vec{a}$ 和 $\vec{b}$平行,$\vec{a} \cdot \vec{b} =\pm |\vec{a}| \cdot |\vec{b}|$;
超平面的法向量
若超平面方程为:$ \quad \omega ^Tx+b=0, \quad$ 则他的法向量就是$ \omega$
证明:设$x_1,x_2$是超平面上的两点,则
$(x_2-x_1)$是超平面上的向量,由上式可知$\quad \omega ^T(x_1-x_2)=0 \quad$ ,可知向量$\omega$与超平面内任意向量垂直,$\omega$即为超平面的法向量
点到超平面的距离
点x到超平面S:$\omega \cdot x+b=0$的距离d的计算过程:
- 设点x在平面S上的投影为y,则$\omega \cdot y+b=0$
- 由于向量$\vec{xy}$与S平面的法向量$\omega$平行,所以:
线性可区分(linear separable)
线性不可区分(linear inseparable)
超平面可以定义为:
SVM的优点
线性可分的情况:
- 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是有数据的维度决定的。所以SVM不太容易产生过拟合。
- SVM训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型。
- 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。
线性不可分的情况:
- 利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中;
- 在这个高维度的空间中找一个线性的超平面来根据线性可分情况处理。
SVM的缺点