感知机(Perceptron)算法详解

感知机(Perceptron)算法详解及代码

一、算法定位

  • 学习类型:监督学习
  • 任务类型:二分类
  • 模型性质:线性分类模型
  • 标签取值

感知机的目标是学习一个线性判别函数,将两类样本正确分开。


二、模型表达式(判别函数)

感知机的判别函数为:

  • (w):权重向量
  • (b):偏置
  • 判别规则:

三、分类正确与误分类判据

对于样本 ((x_i, y_i)):

  • 分类正确

  • 分类错误

感知机的学习过程完全围绕这一判据展开。


四、损失函数设计(核心思想)

感知机采用误分类驱动的损失函数,仅对误分类样本定义损失:

其中:

  • (M):误分类样本集合
  • 分类正确的样本损失为 0,不参与优化

特点

  • 损失函数不连续
  • 不引入概率模型
  • 只关心分类是否正确,不关心分类"置信度"

五、参数优化方法

感知机使用随机梯度下降(SGD)思想,但仅在误分类样本上更新参数。

1️⃣ 单样本损失函数

2️⃣ 梯度计算

  • 对权重:

  • 对偏置:


六、参数更新公式(优化公式来源)

根据梯度下降法:

  • 权重更新

  • 偏置更新

其中:

  • n:学习率

关键特性

  • 只有当样本被误分类时,才进行参数更新
  • 分类正确时,不计算损失,也不进行"反向传播"

七、算法流程

  1. 初始化参数 (w=0, b=0)
  2. 依次遍历训练样本
  3. 若样本被误分类,则更新 (w, b)
  4. 若一轮训练中无任何误分类样本,则算法停止

八、几何意义

  • 感知机学习的是一个线性可分超平面
  • 参数更新的本质是调整超平面的位置和方向
  • 更新方向由误分类样本及其标签决定
  • 不显式最大化分类间隔

九、重要性质

  • 感知机收敛定理
    若训练数据线性可分,感知机在有限步内必然收敛
  • 若数据线性不可分,感知机可能永不停止

十、与其他模型的核心区别

模型 是否使用概率 是否所有样本参与优化
感知机 否(仅误分类样本)
逻辑回归
SVM 部分
神经网络

十一. 代码

python 复制代码
import numpy as np

class Perceptron:
    def __init__(self, learning_rate=0.1, max_iter=1000):
        self.learning_rate = learning_rate
        self.max_iter = max_iter
        self.w = None
        self.b = 0

    def fit(self, X, y):
        # 初始化权重
        self.w = np.zeros(X.shape[1])

        # 迭代训练
        for _ in range(self.max_iter):
            misclassified = 0

            for xi, yi in zip(X, y):
                # 误分类判定
                if yi * (np.dot(self.w, xi) + self.b) <= 0:
                    # 参数更新(带学习率)
                    self.w = self.w + self.learning_rate * yi * xi
                    self.b = self.b + self.learning_rate * yi
                    misclassified += 1

            # 若一轮中无误分类样本,则停止
            if misclassified == 0:
                break

    def predict(self, X):
        return np.sign(np.dot(X, self.w) + self.b)

相关推荐
falldeep2 小时前
LeetCode高频SQL50题总结
数据结构·数据库·sql·算法·leetcode·职场和发展
万邦科技Lafite2 小时前
淘宝开放API获取订单信息教程(2025年最新版)
java·开发语言·数据库·人工智能·python·开放api·电商开放平台
CoderCodingNo2 小时前
【GESP】C++五级真题(前缀和思想考点) luogu-P10719 [GESP202406 五级] 黑白格
开发语言·c++·算法
zore_c2 小时前
【C语言】排序算法——希尔排序以及插入排序 ——详解!!!
c语言·数据结构·c++·笔记·算法·排序算法·推荐算法
小oo呆2 小时前
【自然语言处理与大模型】LangChainV1.0入门指南:核心组件Short-term Memory
人工智能·自然语言处理
m0_692457102 小时前
图像梯度处理
图像处理·人工智能·计算机视觉
ha_lydms2 小时前
6、Spark 函数_u/v/w/x/y/z
java·大数据·python·spark·数据处理·dataworks·spark 函数
NullPointer82 小时前
【剪映小助手源码精讲】第34章:视频任务管理
python·aigc
朗心心理2 小时前
心灵栖所 · 未来疗愈场,长春师专打造“科技×艺术×东方正念”三维心理成长中心
人工智能·科技·心理