首页 > 其他分享 >【机器学习】感知机

【机器学习】感知机

时间:2024-09-03 18:23:55浏览次数:14  
标签:yi xi 机器 align 学习 感知机 theta mathbf

1. 感知机

感知机是一个二分类的线性模型,它通过构造一个超平面,将特征空间中的样本分为两类。感知机的核心思想是找到一个超平面,使得不同类别的样本可以通过该超平面分开,适用于线性可分的数据集。
优点

  • 实现简单,易于理解和实现。
  • 在处理线性可分数据集时具有良好的表现。

缺点

  • 仅适用于线性可分数据集,对线性不可分数据无能为力。
  • 容易受噪声数据影响,可能导致学习困难。
  • 学习率的选择对收敛速度和效果有较大影响。

其他算法的对比:

  • 与SVM的对比
    • 感知机与SVM都可以用于二分类任务,但SVM引入了间隔的概念,优化目标是最大化分类间隔,从而具有更好的泛化能力。
    • 感知机没有惩罚项,容易过拟合,而SVM通过加入惩罚项来平衡间隔与误分类的权衡。
  • 与逻辑回归的对比
    • 感知机使用的是硬分类,即直接将结果映射到-1或+1,而逻辑回归是基于概率的软分类模型,输出一个概率值,再根据阈值进行分类。
    • 逻辑回归的损失函数是对数损失,而感知机没有明确的损失函数,这使得逻辑回归在处理噪声数据时更为鲁棒。

1.1 基本原理

感知机的基本思路是基于输入特征的线性组合进行分类。感知机模型可以表示为:
模型
f ( x ) = sign ( w ⋅ x + b ) \begin{align}f(\mathbf{x}) = \text{sign}(\mathbf{w} \cdot \mathbf{x} + b)\end{align} f(x)=sign(w⋅x+b)​​
其中, w \mathbf{w} w 是权重向量, x \mathbf{x} x 是输入特征向量, b b b 是偏置项, sign \text{sign} sign 是符号函数,其中符号函数定义为:
sign ( x ) = { 1 if  x ≥ 0 − 1 if  x < 0 \begin{align}\text{sign}(x) = \begin{cases} 1 & \text{if } x \geq 0 \\ -1 & \text{if } x < 0 \end{cases}\end{align} sign(x)={1−1​if x≥0if x<0​​​
决策边界:决策边界是由 w ⋅ x + b = 0 \mathbf{w} \cdot \mathbf{x} + b = 0 w⋅x+b=0 决定的超平面。
输出:感知机的输出为 +1 或 -1 ,表示对样本的分类结果。

1.2 损失函数

感知机的目标是找到一个超平面,使得所有样本的分类错误最小。为了衡量模型的性能,定义损失函数。传统的二分类损失函数(误分类点数)对权重 w \mathbf{w} w 和偏置 b b b 的梯度计算不连续,不适合优化。因此,采用基于误分类点到超平面的总距离的损失函数:
L ( w , b ) = − 1 ∥ w ∥ ∑ x i ∈ M y i ( w ⋅ x i + b ) \begin{align}L(\mathbf{w}, b) = -\frac{1}{\|\mathbf{w}\|} \sum_{x_i \in M} y_i (\mathbf{w} \cdot x_i + b)\end{align} L(w,b)=−∥w∥1​xi​∈M∑​yi​(w⋅xi​+b)​​

其中:

  • ∥ w ∥ \|\mathbf{w}\| ∥w∥ 是权重向量的范数。
  • x i x_i xi​ 是第 i i i 个样本。
  • y i y_i yi​ 是第 i i i 个样本的真实标签(-1 或 1)。

1.3 学习算法

感知机的优化目标是最小化误分类样本的数量。通过调整权重 w \mathbf{w} w 和偏置 b b b,感知机的学习过程逐步减少误分类样本,直到达到预期的分类效果。常用的方法是梯度下降法,梯度下降法通过迭代更新参数 w \mathbf{w} w 和 b b b 来找到最优解。具体步骤如下:

  1. 初始化

将权重向量 w \mathbf{w} w 和偏置 b b b 初始化为零向量或随机小值。

  1. 遍历数据

对于每个训练样本 ( x i , y i ) (\mathbf{x}_i, y_i) (xi​,yi​),计算预测值:
y i ′ = sign ( w ⋅ x i + b ) \begin{align} y'_i = \text{sign}(\mathbf{w} \cdot \mathbf{x}_i + b)\end{align} yi′​=sign(w⋅xi​+b)​​

  1. 误分类检查与更新

如果 y i ′ ≠ y i y'_i \neq y_i yi′​=yi​(即发生误分类),则根据以下更新规则调整参数:
梯度计算:计算损失函数 L ( w , b ) L(\mathbf{w}, b) L(w,b) 对权重 w \mathbf{w} w 和偏置 b b b 的梯度:
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇ b L ( w , b ) = − ∑ x i ∈ M y i \begin{align}\nabla_{\mathbf{w}} L(\mathbf{w}, b) = -\sum_{\mathbf{x}_i \in M} y_i \mathbf{x}_i \\ \nabla_b L(\mathbf{w}, b) = -\sum_{\mathbf{x}_i \in M} y_i\end{align} ∇w​L(w,b)=−xi​∈M∑​yi​xi​∇b​L(w,b)=−xi​∈M∑​yi​​​
其中, M M M 表示所有误分类样本的集合。
梯度下降更新规则:使用梯度下降法更新权重和偏置:
w ← w + η ∑ x i ∈ M y i x i b ← b + η ∑ x i ∈ M y i \begin{align}\mathbf{w} \leftarrow \mathbf{w} + \eta \sum_{\mathbf{x}_i \in M} y_i \mathbf{x}_i\\ b \leftarrow b + \eta \sum_{\mathbf{x}_i \in M} y_i \end{align} w←w+ηxi​∈M∑​yi​xi​b←b+ηxi​∈M∑​yi​​​
其中, η \eta η 是学习率,控制每次更新的步长。

  1. 迭代过程

重复以上步骤,直到没有误分类样本或达到最大迭代次数。

1.4 梯度下降法

根据梯度下降法的推导过程:

  1. 泰勒展开:梯度下降的基本思路是沿着梯度的反方向更新参数,以最小化目标函数。对于函数 f ( θ ) f(\theta) f(θ),其泰勒展开为:

f ( θ ) = f ( θ k ) + ( θ − θ k ) ∇ f ( θ k ) \begin{align}f(\theta) = f(\theta^k) + (\theta - \theta^k) \nabla f(\theta^k)\end{align} f(θ)=f(θk)+(θ−θk)∇f(θk)​​

  1. 方向向量:令 θ − θ k = v ⋅ η \theta - \theta^k = v \cdot \eta θ−θk=v⋅η,其中 v v v 是方向向量, η \eta η 是步长系数。为了保证沿梯度下降方向,必须有:

f ( θ ) − f ( θ k ) = v ⋅ η ∇ f ( θ k ) < 0 \begin{align}f(\theta) - f(\theta^k) = v \cdot \eta \nabla f(\theta^k) < 0\end{align} f(θ)−f(θk)=v⋅η∇f(θk)<0​​

  1. 更新公式:因此,方向向量 v v v 应与梯度 ∇ f ( θ k ) \nabla f(\theta^k) ∇f(θk) 方向相反,可以表示为:

v = − ∇ f ( θ k ) ∣ ∇ f ( θ k ) ∣ \begin{align}v = -\frac{\nabla f(\theta^k)}{|\nabla f(\theta^k)|}\end{align} v=−∣∇f(θk)∣∇f(θk)​​​
更新参数的公式为:
θ = θ k − ∇ f ( θ k ) ∣ ∇ f ( θ k ) ∣ η \begin{align}\theta = \theta^k - \frac{\nabla f(\theta^k)}{|\nabla f(\theta^k)|} \eta\end{align} θ=θk−∣∇f(θk)∣∇f(θk)​η​​

1.5 代码实现

感知机训练的伪代码如下:

def perceptron_train(X, y, eta=0.01, epochs=1000):
    # 初始化权重和偏置
    w = np.zeros(X.shape[1])
    b = 0

    for epoch in range(epochs):
        errors = 0
        # 每个epoch前随机打乱数据顺序
        indices = np.random.permutation(len(y))
        for i in indices:
            xi, yi = X[i], y[i]
            # 如果预测错误
            if yi * (np.dot(xi, w) + b) <= 0:
                w += eta * yi * xi
                b += eta * yi
                errors += 1
        # 如果没有误分类样本,提前停止训练
        if errors == 0:
            break

    return w, b

标签:yi,xi,机器,align,学习,感知机,theta,mathbf
From: https://blog.csdn.net/weixin_44745770/article/details/141833024

相关文章

  • 多目标应用:基于自组织多模态多目标鸽群优化算法MMOPIO的移动机器人路径规划研究(提供MA
      一、机器人路径规划介绍移动机器人(Mobilerobot,MR)的路径规划是移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大......
  • 车载测试协议:ISO-14229、ISO-15765、ISO-11898、ISO-26262【车企实操项目学习】
      FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题?   可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。2.在做ota测试的过程中,会做网络通信的测试吗?   网络通信测试的话,有做,但是目前我的......
  • Java中接口的学习
    接口目录接口接口的概念接口的特性接口的好处接口和多态的关系接口的概念接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属......
  • 【万字文档+PPT+源码】基于springboot+vue餐厅管理系统-可用于毕设-课程设计-练手学习
    博主简介:......
  • 【万字文档+PPT+源码】基于springboot+vue电商平台系统-可用于毕设-课程设计-练手学习
    博主简介:......
  • 【论文】OmniVec2:一种基于Transformer的新型大规模网络多模态多任务学习
    前言《OmniVec2:ANovelTransformerbasedNetworkforLargeScaleMultimodalandMultitaskLearning》研究背景研究问题:这篇文章提出了一种新的多模态多任务网络及其相关的训练算法,旨在处理来自约12种不同模态的数据,包括图像、视频、音频、文本、深度、点云、时间序列、表格、图......
  • CM3学习笔记(X)中断输入及悬起行为
    ##中断输入及悬起行为要理解中断的输入和悬起行为,我们首先要理解这几个概念。>中断的状态可以参考FreeRTOS中的任务的状态(仅对比参考),请结合下面的内容配合CM3官方手册7.4的图进行理解。+中断请求:可以理解为我们所说的中断触发标志位+中断悬起状态:这是一个状态位。检测到中......
  • Java基础-学习笔记16
    16线程(基础)1.相关概念进程:进程是程序的一次执行过程,或是正在运行的一个程序。是多态过程,有它自身的产生、存在和消亡的过程。(比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存看见。当我们使用迅雷,又启动了一个进程,操作系统将为迅雷分配新的内存空间。进程一旦中......
  • jsp艾森教育线上学习系统5k965
    jsp艾森教育线上学习系统5k965本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能学生,教师,学习课程,课程报名,资料下载,学生提问,教师回答,课后作业,作业提交,公告信息开题报告内容一、项目背景与意......
  • 代码大模型Wavecoder学习笔记及代码实践
    目录学习笔记摘要(Abstract)介绍(Introduction)CodeSeaXDataset:四任务代码相关指令数据四任务信息增强指令生成1.原始代码收集(WaveCoder-main\WaveCoder-main\src\data\raw_code_collection)2.基于LLM的生成器-鉴别器框架实验设置结果代码生成任务评估:其他代码相关任......