【分类算法】感知机(Perceptron)

强颜欢笑 提交于 2019-12-02 19:06:23

0 - 算法描述

  感知机算法是一类二分类算法,其问题描述为,给定一个训练数据集

$$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$

其中$x_i\in \mathbb{R}^n,y_i\in\{-1,1\},i=1,2,\cdots,N$,求参数$w,b$,使得以下损失函数极小化问题的解

$$\min_{w,b}L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b),$$

其中$M$为误分类点的集合。

1 - 推导过程

  感知机算法求解的数据集必须具有线性可分性,其定义为,对于数据集

$$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$

其中$x_i\in \mathbb{R}^n,y_i\in\{-1,1\},i=1,2,\cdots,N$,如果存在某个超平面$S$

$$w\cdot x + b = 0,$$

能够将数据集的正类和负类完全正确地划分到超平面的两侧,即对所有$y_i=+1$的样本$i$,有$w\cdot x_i+b>0$,对所有$y_i=-1$的样本$i$,有$w\cdot x_i + b < 0$,则称数据集$T$为线性可分数据集(linearly separable dataset)。

  感知机算法即是求解线性可分数据集中的超平面$S$的算法。由于超平面是由$w$和$b$确定的,因此学习超平面的目标即是确定参数$w$和$b$,按照梯度下降法优化要求,需要定义一个关于参数$w$和$b$的损失函数进行优化。

  注意到,损失函数被期望是连续可导的,因此不能直接选取误分类点个数作为损失函数,在感知机中,选取误分类点到超平面$S$的总距离作为损失函数。对于输入空间$\mathbb{R}^n$中任意一点$x_i$到超平面$S$的距离为

$$\frac{1}{\left \|  w\right \|_2}\left | w \cdot x_i + b \right |,$$

其次,对于误分类点来说,满足

$$-y_i(w_i\cdot x_i+b)>0,$$

因此可以把距离公式的绝对值拆开得到

$$-\frac{1}{\left \|  w\right \|_2}y_i\left ( w \cdot x_i + b \right ),$$

假设超平面$S$的误分类集合为$M$,那么所有误分类点到超平面$S$的总距离为

$$-\frac{1}{\left \|  w\right \|_2}\sum_{x_i\in M}y_i\left ( w \cdot x_i + b \right ),$$

不考虑$\frac{1}{\left \|  w\right \|_2}$,则感知机$sign(w\cdot x+b)$的损失函数定义为

$$L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b).$$

2 - 参考资料

《统计学习方法》,李航

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!