《统计学习方法》(李航) 感知机模型算法

第二章   感知机

感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。

导入基于分类的损失函数,利用梯度下降算法对损失函数进行极小化,求得感知机模型。分为原始模式和对偶模式。

2.1  感知机模型

定义2.1(感知机)假设输入空间(特征空间)是\chi \in \mathbb{R}^n,输出空间是\gamma \in\begin{bmatrix}+1,-1 \end{bmatrix}。输入\vec x \in \chi表示实例的特征向量,对应于输入空间的点;输出\vec y \in \gamma表示实例的类别。由输入空间到输出空间的如下函数称为感知机:

f(x)=sign(w\bullet x+b)

其中,w和b称为感知机模型参数。w\in \mathbb{R}^n叫做权值或者权值向量,b\in\mathbb{R}叫做偏置。w \bullet x表示w和x的内积。sign是符号函数:

sign(x)=\left\{\begin{matrix} +1, &x\geq 0 \\ -1,& x<0 \end{matrix}\right.

感知机属于是一种线性分类判别模型。感知机模型的假设空间为函数集合:\begin{Bmatrix} f|f(x)=w\bullet x+b \end{Bmatrix}

2.2  感知机学习策略

2.2.1  数据集的线性可分性

定义2.2(数据集的线性可分性)如果存在某个超平面S能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集是线性可分的;否则数据集是线性不可分的。

2.2.2  感知机学习策略

感知机的损失函数是所以误分类点到超平面S的总距离,这是感知机所采用的。

输入空间\mathbb{R}^n中任一点x_0到超平面S的距离:

\frac{1}{||w||}|w\bullet x_0+b|,此处||w||是w的L2范数。

扫描二维码关注公众号,回复: 16214329 查看本文章

误分类点到达超平面S的距离为:-\frac{1}{||w||}y_i|w\bullet x_i+b|

忽略标量||w||,可以得到感知机模型的损失函数:

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

其中M为误分类点的集合。这个损失函数就是感知机模型的经验风险函数。显然它是非负的,当没有误分类点的时候,损失函数值就为0。

2.3  感知机学习算法

感知机学习问题转化为求解损失函数的最优化问题,最优化的方法为随机梯度下降法。

2.3.1  感知机学习算法的原始形式

损失函数的梯度为:\nabla_wL(w,b)=-\sum_{x_i\in M}y_ix_i,\nabla_bL(w,b)=-\sum_{x_i\in M}y_i

感知机算法的原始形式:

输入:训练数据集T=\begin{Bmatrix}(x_1,y_1),(x_2,y_2),...,(x_N,y_N) \end{Bmatrix},其中x_i \in \chi =\mathbb{R}^n,y_i \in \gamma =\begin{Bmatrix} +1,-1 \end{Bmatrix},i=1,2,...,N,学习率0<\eta\leq1

输出:w,b;感知机模型f(x)=sign(w\bullet x+b)

(1)选取初值w_0,b_0

(2)在训练集中选取数据(x_i,y_i)

(3)如果y_i(w\bullet x_i+b)\leq 0

w\leftarrow w+\eta y_ix_i

b\leftarrow b+\eta y_i

(4)转至(2),直至训练集中没有误分类点

感知机学习算法由于采用不同的初值或选取不同的误分类点,最终模型解可能不同。

2.3.2  算法的收敛性

2.3.3  感知机算法的对偶形式

对偶形式的基本想法是,将w和b表示为实例x_i和标记y_i的线性组合形式,通过求解其系数求得w和b。

输入:线性可分的训练数据集T=\begin{Bmatrix}(x_1,y_1),(x_2,y_2),...,(x_N,y_N) \end{Bmatrix},其中x_i \in \chi =\mathbb{R}^n,y_i \in \gamma =\begin{Bmatrix} +1,-1 \end{Bmatrix},i=1,2,...,N,学习率0<\eta\leq1

输出:\alpha,b;感知机模型f(x)=sign(\sum_{j=1}^N \vec \alpha_jy_jx_j\bullet x+b),\vec \alpha_j=(\alpha_1,\alpha_2,...,\alpha_N)^T

(1)\alpha\leftarrow 0,b\leftarrow 0

(2)在训练集中选取数据(x_i,y_i)

(3)如果y_i(\sum_{j=1}^N \vec \alpha_jy_jx_j\bullet x+b)\leq 0

\vec \alpha_i\leftarrow \vec \alpha_i +\eta

b\leftarrow b+\eta y_i

(4)转至(2),直至训练集中没有误分类点。

猜你喜欢

转载自blog.csdn.net/APPLECHARLOTTE/article/details/127463813
今日推荐