通俗解释优化的线性感知机算法:Pocket PLA

简介: 通俗解释优化的线性感知机算法:Pocket PLA

在上一篇文章:


【附源码】一看就懂的感知机算法PLA


我们详细介绍了线性感知机算法模型,并使用pyhon实例,验证了PLA的实际分类效果。下图是PLA实际的分类效果:


image.png

但是,文章最后我们提出了一个疑问,就是PLA只能解决线性可分的问题。对于数据本身不是线性可分的情况,又该如何解决呢?下面,我们就将对PLA进行优化,以解决更一般的线性不可分问题。



1  Pocket PLA是什么


首先,我们来看一下线性不可分的例子:

image.png

如上图所示,正负样本线性不可分,无法使用PLA算法进行分类,这时候需要对PLA进行优化。优化后的PCA的基本做法很简单,就是如果迭代更新后分类错误样本比前一次少,则更新权重系数 w ;没有减少则保持当前权重系数 w 不变。也就是说,可以把条件放松,即不苛求每个点都分类正确,而是容忍有错误点,取错误点的个数最少时的权重系数 w 。通常在有限的迭代次数里,都能保证得到最佳的分类线。


这种算法也被称为「口袋PLA」Pocket PLA。怎么理解呢?就好像我们在搜寻最佳分类直线的时候,随机选择错误点修正,修正后的直线放在口袋里,暂时作为最佳分类线。然后如果还有错误点,继续随机选择某个错误点修正,修正后的直线与口袋里的分类线比较,把分类错误点较少的分类线放入口袋。一直到迭代次数结束,这时候放在口袋里的一定是最佳分类线,虽然可能还有错误点存在,但已经是最少的了。


2   数据准备


该数据集包含了100个样本,正负样本各50,特征维度为2。

image.png

image.png


3    Pocket PLA代码实现


首先分别对两个特征进行归一化处理,即:

image.png

image.png

image.png

其中,迭代次数为100次,每次迭代随机选择一个错误点进行修正,修正后的分类线错误率与之前的分类线比较,若错误率较低,则选择修正后的分类线。继续进行下一次迭代。


迭代完毕后,得到更新后的权重系数 w ,绘制此时的分类直线是什么样子。

image.png

image.png

image.png


4   PLA的损失函数分析


我们知道,任何一个机器学习问题包含三个方面:模型、策略、算法。从策略来说,无论是PLA还是Pocket PLA,使用的损失函数是统计误分类点的总数,即希望误分类点的总数越少越好,属于0-1损失函数0-1 Loss Function。但是,这样的损失函数不是参数 w 的连续可导函数。


从算法实现上来看,PLA每次不断修正错误点,修正公式为:


image.png


修正公式的推导,我们在上一篇文章中已经详细解释过。数学上可以证明,PLA算法是收敛的。


而对于分类问题,常见的损失函数一般为交叉熵损失函数「Cross Entropy Loss」。其表达式为:

image.png

image.png

对比起来,PLA和交叉熵损失函数的修正公式具有相似性,不同的是PLA没有引入学习因子η和梯度。


以上内容对比了PLA和一般分类问题在策略和算法上的差异性。其实,红色石头想说的是,抓住本质最为重要,知道了不同的策略和方法,搭配不同的机器学习模型,只要能解决实际问题,都是可以的。也就是说我完全可以使用平方误差来作为分类问题的策略,从理论上讲是可行的。千万不要在解决问题时,只固定一种思路。


5  总结


PCA是机器学习最简单的算法之一。PLA处理线性可分问题,优化的PLA解决线性不可分的问题。实际验证表明,一般的PLA处理线性可分及线性不可分问题都有不错的表现,即一般能得到最佳的分类直线。但是PLA过于简单,有其本身的局限性。



相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
328 5
|
3月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
267 14
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
240 2
|
3月前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
141 1
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
155 0
|
3月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
236 1
|
2月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
3月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
171 0

热门文章

最新文章