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

感知机

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

1. 感知机模型

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

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

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

其中 $\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. 原始形式

    梯度:$\nabla {w}L(w,b) = - \sum y_ix_i \ \nabla _{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} \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

posted on 2020-03-25 14:12  joe11111  阅读(195)  评论(0编辑  收藏  举报

导航