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

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

什么是感知机「Perceptron」


PLA全称是Perceptron Linear Algorithm,即线性感知机算法,属于一种最简单的感知机(Perceptron)模型。


感知机模型是机器学习二分类问题中的一个非常简单的模型。它的基本结构如下图所示:

image.png

image.png


PLA理论解释


对于二分类问题,可以使用感知机模型来解决。PLA的基本原理就是逐点修正,首先在超平面上随意取一条分类面,统计分类错误的点;然后随机对某个错误点就行修正,即变换直线的位置,使该错误点得以修正;接着再随机选择一个错误点进行纠正,分类面不断变化,直到所有的点都完全分类正确了,就得到了最佳的分类面。


利用二维平面例子来进行解释,第一种情况是错误地将正样本「y=+1」分类为负样本「y=-1」。此时,wx<0,即w与x的夹角大于90度,分类线 l 的两侧。修正的方法是让夹角变小,修正w值,使二者位于直线同侧:

image.png

修正过程示意图如下所示:


image.png

第二种情况是错误地将负样本「y=-1」分类为正样本「y=+1」。此时, wx>0 ,即 w 与 x 的夹角小于90度,分类线 l 的同一侧。修正的方法是让夹角变大,修正 w 值,使二者位于直线两侧:

image.png

修正过程示意图如下所示:

image.png

经过两种情况分析,我们发现PLA每次 w 的更新表达式都是一样的: w:=w+yx 。掌握了每次 w 的优化表达式,那么PLA就能不断地将所有错误的分类样本纠正并分类正确。


数据准备


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

image.png

image.png

PLA算法


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

image.png

其中, μ 是特征均值, σ 是特征标准差。

image.png

image.png

image.png

image.png


其实,PLA算法的效率还算不错,只需要数次更新就能找到一条能将所有样本完全分类正确的分类线。所以得出结论,对于正负样本线性可分的情况,PLA能够在有限次迭代后得到正确的分类直线。


总结与疑问


本文导入的数据本身就是线性可分的,可以使用PLA来得到分类直线。但是,如果数据不是线性可分,即找不到一条直线能够将所有的正负样本完全分类正确,这种情况下,似乎PLA会永远更新迭代下去,却找不到正确的分类线。

对于线性不可分的情况,该如何使用PLA算法呢?我们下次将对PLA进行改进和优化。


相关文章
|
2月前
|
机器学习/深度学习 人工智能 监控
AI算法分析,智慧城管AI智能识别系统源码
AI视频分析技术应用于智慧城管系统,通过监控摄像头实时识别违法行为,如违规摆摊、垃圾、违章停车等,实现非现场执法和预警。算法平台检测街面秩序(出店、游商、机动车、占道)和市容环境(垃圾、晾晒、垃圾桶、路面不洁、漂浮物、乱堆物料),助力及时处理问题,提升城市管理效率。
AI算法分析,智慧城管AI智能识别系统源码
|
5月前
|
算法 数据挖掘 计算机视觉
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
186 0
|
5月前
|
机器学习/深度学习 算法 前端开发
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
44 0
|
13天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
21天前
|
算法 C#
winform车牌识别源码(纯算法)
使用C#和Winform开发的纯算法车牌识别系统,无需依赖外部框架。通过去雾、灰度化、均衡化、中值滤波等步骤实现车牌定位和识别。包含详细步骤及源码,适合学习研究。演示视频:[BV1yq4y1a7cb](https://www.bilibili.com/video/BV1yq4y1a7cb/?spm_id_from=333.337.search-card.all.click&vd_source=6d6d1b4c92d36f8d9ca8a23a286bae20)。
|
5月前
|
机器学习/深度学习 算法 Python
BP神经网络算法讲解及实战应用(超详细 附源码)
BP神经网络算法讲解及实战应用(超详细 附源码)
397 0
|
1月前
|
算法 索引
【算法与数据结构】深入二叉树实现超详解(全源码优化)
【算法与数据结构】深入二叉树实现超详解(全源码优化)
|
1月前
|
存储 算法 编译器
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
|
1月前
|
存储 人工智能 算法
哈夫曼算法详细讲解(算法+源码)
哈夫曼算法详细讲解(算法+源码)
|
2月前
|
机器学习/深度学习 算法 大数据
基于PyTorch对凸函数采用SGD算法优化实例(附源码)
基于PyTorch对凸函数采用SGD算法优化实例(附源码)
33 3