《统计学习方法》:感知机

感知机

感知机是二分类的线性分类模型,对应输出为 -1 和 +1。

1. 感知机模型

输入空间 $x subseteq R^n $,输出空间 $ y = {-1, +1} $

输入空间到输出空间的映射函数:

[f(x) = sign(omega cdot x + b) \ sign(x) = left{ egin{array} +1 & extrm{x $geq$ 0}\ -1 & extrm{x < 0} end{array} ight. ]

其中 $omega in R^n$ 叫做权值,$b in R$ 叫做偏置

2. 感知机学习策略

  1. 数据集的线性可分性

    若存在某个超平面S,$omega cdot x + b = 0$,能够将数据集完全正确地划分到超平面地两侧,则称该数据集线性可分。

  2. 感知机学习策略

    损失函数: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. 感知机学习算法

  1. 原始形式

    梯度:$ 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) ,知道训练集中没有误分类点

  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$

  3. 感知机的对偶形式

    感知机输出:$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

原文地址:https://www.cnblogs.com/joe-w/p/12565960.html