感知机
感知机是二分类的线性分类模型,对应输出为 -1 和 +1。
1. 感知机模型
输入空间 $x subseteq R^n $,输出空间 $ y = {-1, +1} $
输入空间到输出空间的映射函数:
其中 $omega in R^n$ 叫做权值,$b in R$ 叫做偏置
2. 感知机学习策略
-
数据集的线性可分性
若存在某个超平面S,$omega cdot x + b = 0$,能够将数据集完全正确地划分到超平面地两侧,则称该数据集线性可分。
-
感知机学习策略
损失函数:1. 被误分类的点数; 2. 误分类的点到超平面的总距离
由于 损失函数1 不是 $omega$ 和 $x$ 的连续可导函数,不易优化。
对于被误分类的点$x_i$,有$-y_i cdot (omega cdot x_i + d) > 0$ ,故该点到超平面的距离为$- frac{1}{||w||}y_i(wx_i + b)$,不考虑$frac{1}{||w||}$则得到损失函数$L(w,b) = - sum_{x_i in M}y_i(wx_i + b)$,$M$为误分类点集合,显然该函数非负。
3. 感知机学习算法
-
原始形式
梯度:$ abla {w}L(w,b) = - sum{x_i in M} y_ix_i abla _{b}L(w,b) = - sum _{x_i in w}y_i$
随机选取一个误分类点进行参数更新:$w leftarrow w + ny_ix_i b leftarrow b + ny_i$
算法流程:
(1) 选取初始值$w_0$,$b_0$
(2) 在训练集中选取数据$(x_i,y_i)$
(3) 若$y_i(w cdot x_i + b) leq 0$,更新参数
(4) 转至 (2) ,知道训练集中没有误分类点
-
算法的收敛性:
记$hat{w} = (w_T,b)^T$,$hat{x} = (x^T, 1)^T$
证1:设存在超平面$||hat{w} {opt}|| = 1$,$hat{w}{opt} cdot hat{x} = w_{opt} cdot x + b_{opt} = 0$ 将训练数据集完全正确分开,则有 $gamma > 0$ 对所有 $i = 1,2,3...N$ 使得 $y_i(hat{w}_{opt} cdot hat{x}_i) geq gamma$
证2: 令 $R = max_{1 leq i leq N}||hat{x}_i||$,感知机在训练集上的误分类次数 $k$ 满足:$k leq (frac{R}{gamma})^2$
-
感知机的对偶形式
感知机输出:$f(x) = sign( sum_{j = 1}^N alpha_j y_j x_j cdot x + b)$
(1) $alpha leftarrow 0$,$b leftarrow 0$
(2) 从训练集中选取数据 ($x_i$,$y_i$)
(3) 若 $y_i ( sum_{j = 1}^N alpha_j y_j x_j cdot x_i + b) leq 0$:
$alpha_i leftarrow alpha_i + n b leftarrow b + n y_i$
(4) 转至 (2) 直到没有误分类数据。
4.代码实现
https://github.com/a74731248/statistical_learning_method/tree/master/perceptron