【分类算法】感知机(Perceptron)
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)=\min -\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 - 参考资料
《统计学习方法》,李航