感知机
概述
感知机是二元分类的线性分类模型,目的是求出一个分离超平面,利用梯度下降法对代价函数进行最小化 ;
模型
感知机的数学模型可由下列表达式给出:
f(x) = sign( wx + b) ;
其中 w 为权值向量,是分离超平面 (wx + b = 0 )的法向量,b 为截距(bias),sign(x)为符号函数:x > =0,输出 +1;反之,输出 -1
策略
数据集的线性可分性
如果存在一个超平面 wx + b = 0 ,可以完全正确的将正负数据集分开,则称为线性可分的;否则,线性不可分;
学习策略
感知机的经验损失是所有误分类点到分离超平面的距离之和,其中某个误分类点到分离超平面的距离为:
−
y
i
∗
(
w
∗
x
i
+
b
)
- y_i* (w * x_i + b )
−yi∗(w∗xi+b) ; 为一个非负值 ;
代价函数表达式为 L(w,b) =
−
∑
i
=
1
N
y
i
∗
(
w
∗
x
i
+
b
)
-\displaystyle\sum_{i=1}^{N}y_i* (w * x_i + b )
−i=1∑Nyi∗(w∗xi+b);
算法
原始形式
-
选取初始值 w0、b0 ;
-
从训练集中随机选取一个数据(x(i),y(i));
-
若 y i ∗ ( w ∗ x i + b ) ≤ 0 y_i * (w*x_i + b) \leq 0 yi∗(w∗xi+b)≤0 (即误分类),感知机采用随机梯度下降法对 w 及b 进行更新,按照下式进行更新:
w = w + a ∗ y i x i a*y_ix_i a∗yixi;
b = b + η y i \eta y_i ηyi;
其中, η \eta η为学习速率,由于w、b 是按照梯度的方向进行增减,所以可以期待代价函数最终会收敛到一个局部 -
回到步骤2 ,直至没有误分类点;
根据选择的初值及每次所选择的误分类点不同,最终得到的结果也会不同;
算法的收敛性
对于线性可分数据集,有下列 Novikoff 定理:
-
存在满足条件的 || w o p t w_{opt} wopt|| = 1 的超平面 w o p t w_{opt} woptx + b = 0 将数据集完全正确的分开,且对于所有的样本点,存在 λ \lambda λ > 0,有
y i ( w o p t ∗ x i + b ) ≥ λ y_{i} (w_{opt}* x_i + b)\geq\lambda yi(wopt∗xi+b)≥λ; -
迭代的次数 K 满足: K ≤ ( R λ ) 2 K \leq(\frac{R}{\lambda})^2 K≤(λR)2 ;其中 R 为输入向量中最大的模值;
以上定理说明了误分类次数 K 是有上界的,但是不存在唯一的解,在SVM中就加了约束条件后,才有唯一的解;当数据集线性不可分时,感知机就不会收敛,迭代结果发生振荡;
对偶形式
对偶形式与原始形式的区别:
- w = ∑ i = 1 N a i y i x i \displaystyle\sum_{i =1}^{N}a_{i}y_{i}x_{i} i=1∑Naiyixi,其中 a i a_{i} ai= n i η n_{i}\eta niη, n i n_{i} ni为第 i 个样本在迭代过程中被误判的次数;
- 在判别式中相应的带入 w 的表达式,更新的参数是 a 而不是 w,b的更新方式与原始方式无异;其他算法流程参照原始形式;
- 计算Gram 矩阵: G = [
x
i
∗
x
j
]
N
∗
N
x_{i}*x_{j}]_{N*N}
xi∗xj]N∗N; 用于判别式的计算:
y i ∑ j = 1 N a j y j x j ∗ x i + b ≤ 0 y_{i}{\color{red}\displaystyle\sum_{j =1}^{N}a_{j}y_{j}x_{j}*} x_{i}+ b\leq 0 yij=1∑Najyjxj∗xi+b≤0
(?)感知机的对偶形式的主要目的是针对那些维度很高的输入,可以有效降低算法的运算复杂度,因为每次判定某个点是否误判时,需要的数据都是输入实例的内积形式,而这个可以事先通过计算Gram 矩阵来实现;