感知机

本文详细介绍了感知机模型,包括其线性分类思想、数学表达式和几何解释。感知机的损失函数是误分类点到超平面的总距离,通过随机梯度下降法进行优化。文章还探讨了感知机模型的算法流程,以及对偶形式的优化,以提高算法效率。

感知机模型

感知机的思想是在特征空间找到一个分离超平面,能将二元分类的数据完全的分隔开。使得超平面一侧的数据点分类为一类,另一侧的数据点分类为另一侧。当数据集线性可分时,感知机是收敛的,也就是说肯定能找到一个超平面将数据分隔开。

数学模型表示如下:f(x)=sign(wTx+b)f(x)=sign(w^Tx+b)f(x)=sign(wTx+b)其中sign为符号函数,当自变量大于等于0时输出取1,自变量小于0时输出取-1。

几何解释:线性方程wTx+b=0w^Tx+b=0wTx+b=0表示分离超平面,将特征空间分隔成两部分,位于两部分的点分别分类为正负两类。满足wTx+b>0w^Tx+b>0wTx+b>0的点的输出值为+1,满足wTx+b<0w^Tx+b<0wTx+b<0的点的输出值为-1。

我们可以令θ=(w,b)T\theta=(w,b)^Tθ=(w,b)T, x=(x,1)Tx=(x,1)^Tx=(x,1)T,即都为列向量,那么f(x)=sign(θ⋅x)f(x)=sign(\theta \cdot x)f(x)=sign(θx)
可以看出,感知机模型的假设空间是特征空间中的所有线性分类器。感知机学习的目标是求得一个能够将正负实例分开的超平面。

感知机模型的损失函数

我们可以看出,对于模型预测正确的点,满足yiθ⋅xi>0y_i\theta \cdot x_i>0yiθxi>0,预测错误的点满足yiθ⋅xi<0y_i\theta \cdot x_i<0yiθxi<0。感知机模型的损失函数,一个自然选择是误分类点的总数,但这样的损失函数不是关于w和b的连续可导函数,不易优化。于是感知机的损失函数是误分类点到超平面的总距离。
对于任意一个误分类样本点(xi,yi)(x_i,y_i)(xi,yi),到超平面的距离为−yiθ⋅xi∣∣θ∣∣2\frac{-y_i\theta \cdot x_i}{||\theta||_2}θ2yiθxi假设误分类点的集合为M,那么损失函数为∑xi∈M−yiθ⋅xi∣∣θ∣∣2\sum_{x_i \in M}\frac{ -y_i\theta \cdot x_i}{||\theta||_2}xiMθ2yiθxi
我们可以看出分子和分母都是和参数θ\thetaθ有关的,且分子变化k倍分母也变化k倍,也就是分子分母关于θ\thetaθ是同阶的(分母其实不应包含b,但这样写只是为了更简洁的看出缘由,当b固定时,分子分母亦是同阶的)。由于分子分母成比例,我们可以只使用分子或分母求极值只会使极值成比例变化,但极值对应的参数不会变化。我们不关注取极值时的损失函数的值,只关注此时的参数值,因此可将分子作为优化目标,以简化优化问题。没有固定分母,因此会有多个解。也就是优化目标变成min∑xi∈M−yiθ⋅ximin \sum_{x_i \in M} -y_i\theta \cdot x_iminxiMyiθxi

感知机损失函数的优化算法

感知机的损失函数可以用梯度下降和拟牛顿法来求解,最常用的是梯度下降法。由于感知机损失函数只和误分类集有关,所以普通的批量梯度下降无法使用。感知机模型使用的是随机梯度下降,每次使用误分类的一个样本点对参数进行更新。
那么每次参数向量的更新公式为:θ=θ+αyixi\theta = \theta + \alpha y_ix_iθ=θ+αyixi其中α\alphaα为步长,y(i)为样本输出1或者-1,x(i)为(n+1)x1的向量。

感知机模型的算法

输入:{(x1,y1),...,(xm,ym){(x_1,y_1),...,(x_m,y_m)}(x1,y1),...,(xm,ym)},学习率
输出:分离超平面的参数向量
算法流程:
1)初始化参数向量。由于有多个解,因此初始化影响最后的参数结果。
2)在训练集里找一个误分类的点(满足yiθ⋅xi<=0y_i\theta \cdot x_i<=0yiθxi<=0
3)进行随机梯度下降,更新参数向量:θ=θ+αyixi\theta = \theta + \alpha y_ix_iθ=θ+αyixi
4)检查训练集是否还有误分类的点,如果有转入2),直至没有误分类的点

感知机学习算法的对偶形式

对偶形式是原始形式的优化。

从上面的参数迭代公式可以看出,只有误分类的点参与迭代更新参数的过程,对于从未分类错误的样本点,参与迭代的次数为0,对于多次分类错误的样本点,参与迭代的次数设置为mim_imi。如果参数向量设置为0向量,则参数向量可写成:θ=∑i=1mmiαyixi\theta = \sum_{i=1}^m m_i \alpha y_ ix_iθ=i=1mmiαyixiβi=αmi\beta_i = \alpha m_iβi=αmi,那么参数向量可写成:θ=∑i=1mβiyixi\theta = \sum_{i=1}^m \beta_i y_ ix_iθ=i=1mβiyixi此时的判定误分类点就变成了yi∑j=1mβjyjxj⋅xi<=0y_i\sum_{j=1}^m \beta_j y_jx_j\cdot x_i<=0yij=1mβjyjxjxi<=0,涉及到每次迭代都得计算样本点之间的内积,可以事先将内积计算好存储在Gram矩阵中,算法运行时,每次迭代就可以直接查询使用,使得算法的效率有所提高。
算法流程:
1)初始化参数向量为0向量
2)计算样本的Gram矩阵
3)在训练集寻找一个误分类的点(yi∑j=1mβjyjxj⋅xi<=0y_i\sum_{j=1}^m \beta_j y_jx_j\cdot x_i<=0yij=1mβjyjxjxi<=0
4)进行随机梯度下降,更新参数向量:β=β+α\beta=\beta + \alphaβ=β+α
5)检查训练集是否还有误分类的点,如果有转入2),直至没有误分类的点

参考:
1.李航的《统计学习方法》
2.https://www.cnblogs.com/pinard/p/6042320.html#!comments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值