1.超平面
在2维空间中的超平面是一条线,在3维空间中的超平面是一个平面。
2.平面的法向量
如果一非零向量垂直于一平面,这向量就叫做该平面的法向量。容易知道,平面上的任一向量均与该平面的法线向量垂直。
3.超平面的正反
一个超平面可以将它所在的空间分为两半, 它的法向量指向的那一半对应的一面是它的正面, 另一面则是它的反面。如果利用数学来判断的话,需要利用到法向量 w。
4.样本点到决策平面的距离
空间中任意一点 x 0 x_0 x0到超平面 S S S的距离公式: ∣ w ⋅ x 0 + b ∣ ∣ ∣ w ∣ ∣ \frac{|w\cdot x_0+b|}{||w||} ∣∣w∣∣∣w⋅x0+b∣.
推导过程:
取点空间中一点 x 0 x_0 x0,,超平面 S S S: w ⋅ x + b = 0 w\cdot x+b=0 w⋅x+b=0,其中 x 0 , w , x x_0,w,x x0,w,x均为N维向量;
设点 x 0 x_0 x0到平面 S S S的距离为 d d d,点 x 0 x_0 x0在平面 S S S上的投影点为 x 1 x_1 x1,则 x 1 x_1 x1满足 w ⋅ x 1 + b = 0 w\cdot x_1+b=0 w⋅x1+b=0;
因为向量 x 0 x 1 → \overrightarrow{x_0x_1} x0x1平行于 S S S平面的法向量 w w w,故有
∣ w . x 0 x 1 → ∣ = ∣ w ∣ ∣ x 0 x 1 → ∣ = w 1 2 + w 2 2 + . . . w n 2 2 d = ∣ ∣ 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||为向量 w w w的 L 2 L_2 L2范数;
又因,
w ⋅ x 0 x 1 → w\cdot \overrightarrow{x_0x_1} w⋅x0x1
= w 1 ( x 0 1 − x 1 1 ) + w 2 ( x 0 2 − x 1 2 ) + . . . + w n ( x 0 n − x 1 n ) =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)
= 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 ) =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 ⋅ x 0 + b =w\cdot x_0+b =w⋅x0+b
故 ∣ w ⋅ x 0 x 1 → ∣ = ∣ w ⋅ x 0 + 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 ⋅ x 0 + 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 = 0 w\cdot x+b=0 w⋅x+b=0呢?
对于二分类问题,可以使用感知机模型来解决。其基本原理就是逐点修正,首先在超平面上随意取一条分类面,统计分类错误的点;然后随机对某个错误点就行修正,即变换直线的位置,使该错误点得以修正;接着再随机选择一个错误点进行纠正,分类面不断变化,直到所有的点都完全分类正确了,就得到了最佳的分类面。
对上图的二分类问题,我们试图找到图中的分隔超平面,能够分割图中的正负样本,其中,分隔超平面为:
w
⋅
x
+
b
=
0
w\cdot x+b=0
w⋅x+b=0
如果我们有m个样本,每个样本对应于n维特征和一个二元类别输出,如下:
(
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
)
(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)
我们的目标是找到这样一个超平面,即:
w
0
+
w
1
x
1
+
.
.
.
+
w
n
x
n
=
0
w_0+w_1x_1+...+w_nx_n=0
w0+w1x1+...+wnxn=0
为了简化这个超平面的写法,我们增加一个特征
x
0
=
1
x_0=1
x0=1,这样超平面为
∑
i
=
0
n
w
i
x
i
=
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 , b w,b w,b(即找到了分类的决策平面)
- 赋初值: w 0 , b 0 w_0,b_0 w0,b0
- 从训练集中选取一个样本 ( x i , y i ) (x_i,y_i) (xi,yi)
- 判断该数据点是否为当前模型的误分类点,即判断
y
i
(
w
⋅
x
i
+
b
)
y_i(w\cdot x_i+b)
yi(w⋅xi+b)的值,是大于0还是小于0,如果
y
i
(
w
⋅
x
i
+
b
)
<
0
y_i(w\cdot x_i+b)<0
yi(w⋅xi+b)<0则更新;
w = w + η y i x i w=w+\eta y_ix_i w=w+ηyixi
b = b + η y i b=b+\eta y_i b=b+ηyi - 转到2,直到训练集中没有误分类点
利用余弦相似度进行分类,慢慢向点积靠拢
现在我们假设,有m个训练样本 ( 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 ) (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), y i y_i yi是第 i i i个数据的分类标签,我们的训练样本可以分成两个类别,所以标签可以假定为 + + +和 − - −,其中每一类的样本个数为 n + n_+ n+和 n − n_- n−。
正样本的中心点 C + = 1 n + ∑ y i = + x i C_+=\frac{1}{n_+} \sum_{y_i=+}x_i C+=n+1∑yi=+xi,负样本的中心点 C − = 1 n − ∑ y i = − x i C_-=\frac{1}{n_-} \sum_{y_i=-}x_i C−=n−1∑yi=−xi,
从 C + C_+ C+到 C − C_- C−有一条差向量 w = C + − C − w=C_+-C_- w=C+−C−,而 w w w的中心点为 C C C,所以在 C C C点垂直于 w w w的超平面就是两类的分类边界。
而想要把某个样本分为
+
+
+的依据为,从
C
C
C点到样本点的向量差与
w
w
w向量的夹角应该小于90°,也即
0
<
c
o
s
θ
<
1
0<cos\theta<1
0<cosθ<1;反之,
0
>
c
o
s
θ
>
−
1
0>cos \theta >-1
0>cosθ>−1。即,当内积为正,那就说明在分类1,内积为负,就说明在分类2。即:
y
=
s
g
n
(
<
x
i
−
C
,
w
>
)
y=sgn(<x_i-C,w>)
y=sgn(<xi−C,w>)