1.超平面
在2维空间中的超平面是一条线,在3维空间中的超平面是一个平面。
2.平面的法向量
如果一非零向量垂直于一平面,这向量就叫做该平面的法向量。容易知道,平面上的任一向量均与该平面的法线向量垂直。
3.超平面的正反
一个超平面可以将它所在的空间分为两半, 它的法向量指向的那一半对应的一面是它的正面, 另一面则是它的反面。如果利用数学来判断的话,需要利用到法向量 w。
4.样本点到决策平面的距离
空间中任意一点x0x_0x0到超平面SSS的距离公式:∣w⋅x0+b∣∣∣w∣∣\frac{|w\cdot x_0+b|}{||w||}∣∣w∣∣∣w⋅x0+b∣.
推导过程:
取点空间中一点x0x_0x0,,超平面SSS:w⋅x+b=0w\cdot x+b=0w⋅x+b=0,其中x0,w,xx_0,w,xx0,w,x均为N维向量;
设点x0x_0x0到平面SSS的距离为ddd,点x0x_0x0在平面SSS上的投影点为x1x_1x1,则x1x_1x1满足w⋅x1+b=0w\cdot x_1+b=0w⋅x1+b=0;
因为向量x0x1→\overrightarrow{x_0x_1}x0x1平行于SSS平面的法向量www,故有
∣w.x0x1→∣=∣w∣∣x0x1→∣=w12+w22+...wn22d=∣∣w∣∣d|w.\overrightarrow{x_0x_1}|=|w||\overrightarrow{x_0x_1}|=\sqrt[2]{w_1^2+w_2^2+...w_n^2}d=||w||d∣w.x0x1∣=∣w∣∣x0x1∣=2w12+w22+...wn2d=∣∣w∣∣d
其中||w||为向量www的L2L_2L2范数;
又因,
w⋅x0x1→w\cdot \overrightarrow{x_0x_1}w⋅x0x1
=w1(x01−x11)+w2(x02−x12)+...+wn(x0n−x1n)=w^{1}(x_{0}^{1}−x_{1}^{1})+w^{2}(x_{0}^{2}−x_{1}^{2})+...+w^{n}(x_{0}^{n}−x_{1}^{n})=w1(x01−x11)+w2(x02−x12)+...+wn(x0n−x1n)
=w1x01+w2x02+...+wnx0n−(w1x11+w2x12+...+wnx1n)=w^{1}x_{0}^{1}+w^{2}x_{0}^{2}+...+w^{n}x_{0}^{n}−(w^{1}x_{1}^{1}+w^{2}x_{1}^{2}+...+w^{n}x_{1}^{n})=w1x01+w2x02+...+wnx0n−(w1x11+w2x12+...+wnx1n)
=w⋅x0+b=w\cdot x_0+b=w⋅x0+b
故 ∣w⋅x0x1→∣=∣w⋅x0+b∣=∣∣w∣∣d|w\cdot \overrightarrow{x_0x_1}|=|w\cdot x_0+b|=||w||d∣w⋅x0x1∣=∣w⋅x0+b∣=∣∣w∣∣d
得,d=∣w⋅x0+b∣∣∣w∣∣d=\frac{|w\cdot x_0+b|}{||w||}d=∣∣w∣∣∣w⋅x0+b∣
5.二分类问题
对于二分类问题,假设有m个训练样本{(X(1),y(1)),(X(2),y(2)),...,(X(m),y(m))}\{ (X^{(1)},y^{(1)}), (X^{(2)},y^{(2)}),..., (X^{(m)},y^{(m)})\}{(X(1),y(1)),(X(2),y(2)),...,(X(m),y(m))},其中,y∈{−1,1}y\in\{-1,1\}y∈{−1,1}。那么,应该如何从训练样本中得到分割超平面w⋅x+b=0w\cdot x+b=0w⋅x+b=0呢?
对于二分类问题,可以使用感知机模型来解决。其基本原理就是逐点修正,首先在超平面上随意取一条分类面,统计分类错误的点;然后随机对某个错误点就行修正,即变换直线的位置,使该错误点得以修正;接着再随机选择一个错误点进行纠正,分类面不断变化,直到所有的点都完全分类正确了,就得到了最佳的分类面。
对上图的二分类问题,我们试图找到图中的分隔超平面,能够分割图中的正负样本,其中,分隔超平面为:
w⋅x+b=0w\cdot x+b=0w⋅x+b=0
如果我们有m个样本,每个样本对应于n维特征和一个二元类别输出,如下:
(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym)(x_1^{(0)},x_2^{(0)},...x_n^{(0)},y_0),(x_1^{(1)},x_2^{(1)},...x_n^{(1)},y_1),...(x_1^{(m)},x_2^{(m)},...x_n^{(m)},y_m)(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym)
我们的目标是找到这样一个超平面,即:
w0+w1x1+...+wnxn=0w_0+w_1x_1+...+w_nx_n=0 w0+w1x1+...+wnxn=0
为了简化这个超平面的写法,我们增加一个特征x0=1x_0=1x0=1,这样超平面为∑i=0nwixi=0∑_{i=0}^nw_ix_i=0∑i=0nwixi=0
寻找决策面的算法过程
输入:m个训练样本{(X(1),y(1)),(X(2),y(2)),...,(X(m),y(m))}\{ (X^{(1)},y^{(1)}), (X^{(2)},y^{(2)}),..., (X^{(m)},y^{(m)})\}{(X(1),y(1)),(X(2),y(2)),...,(X(m),y(m))},其中y∈{−1,1}y\in\{-1,1\}y∈{−1,1}。
输出:w,bw,bw,b(即找到了分类的决策平面)
- 赋初值:w0,b0w_0,b_0w0,b0
- 从训练集中选取一个样本(xi,yi)(x_i,y_i)(xi,yi)
- 判断该数据点是否为当前模型的误分类点,即判断 yi(w⋅xi+b)y_i(w\cdot x_i+b)yi(w⋅xi+b)的值,是大于0还是小于0,如果yi(w⋅xi+b)<0y_i(w\cdot x_i+b)<0yi(w⋅xi+b)<0则更新;
w=w+ηyixiw=w+\eta y_ix_iw=w+ηyixi
b=b+ηyib=b+\eta y_ib=b+ηyi - 转到2,直到训练集中没有误分类点
利用余弦相似度进行分类,慢慢向点积靠拢
现在我们假设,有m个训练样本(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym)(x_1^{(0)},x_2^{(0)},...x_n^{(0)},y_0),(x_1^{(1)},x_2^{(1)},...x_n^{(1)},y_1),...(x_1^{(m)},x_2^{(m)},...x_n^{(m)},y_m)(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym),yiy_iyi是第iii个数据的分类标签,我们的训练样本可以分成两个类别,所以标签可以假定为+++和−-−,其中每一类的样本个数为n+n_+n+和n−n_-n−。
正样本的中心点C+=1n+∑yi=+xiC_+=\frac{1}{n_+} \sum_{y_i=+}x_iC+=n+1∑yi=+xi,负样本的中心点C−=1n−∑yi=−xiC_-=\frac{1}{n_-} \sum_{y_i=-}x_iC−=n−1∑yi=−xi,
从C+C_+C+到C−C_-C−有一条差向量w=C+−C−w=C_+-C_-w=C+−C−,而www的中心点为CCC,所以在CCC点垂直于www的超平面就是两类的分类边界。
而想要把某个样本分为+++的依据为,从CCC点到样本点的向量差与www向量的夹角应该小于90°,也即0<cosθ<10<cos\theta<10<cosθ<1;反之,0>cosθ>−10>cos \theta >-10>cosθ>−1。即,当内积为正,那就说明在分类1,内积为负,就说明在分类2。即:
y=sgn(<xi−C,w>)y=sgn(<x_i-C,w>)y=sgn(<xi−C,w>)