机器学习笔记-感知机对偶形式

2023-11-07



前言

  感知机模型是有两种形式的,上一篇文章中详细学习了感知机的原始形式数学模型,我们知道,感知机应该还有对偶形式,这篇文章就来记录一下感知机对偶形式的的数学模型。

一、感知机对偶形式

  我们知道感知机的学习算法可以解释为:当一个实例点被误分类时,即位于分离超平面的错误一侧时,则根据这个误分类点来调整 w w w b b b的值,使分离超平面向误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直到超平面能够越过该误分类点使其被正确分类。
  从上面可以理解,超平面的学习是只与误分类点有关,在原始的感知机模型中,我们说使用梯度下降法来学习感知机,这种学习方式其实是逐步逐步进行学习,且推导过 w w w b b b这两个参数的迭代过程如下:
w ← w + η y i x i w \leftarrow w + \eta {y_i}{x_i} ww+ηyixi
b ← b + η y i b\leftarrow b+\eta y_i bb+ηyi
  上述的迭代过程是如果有一次误分类点,就迭代一次,那我们可以假设样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的误分类次数为 n i n_i ni,设样本点的个数为 N N N,就可以推导出 w w w b b b的表达式如下:
w = ∑ i = 1 N α i y i x i w = \sum\limits_{i = 1}^N {{\alpha _i}{y_i}{x_i}} w=i=1Nαiyixi
b = ∑ i = 1 N α i y i b = \sum\limits_{i=1}^N{{\alpha_i}{y_i}} b=i=1Nαiyi
  其中 α i = n i η \alpha_i=n_i\eta αi=niη,这样我们就可以认为,只要找到所有样本点的更新次数,我们就能求出 w w w b b b。同时感知机的数学模型也就可以转换成如下形式:
s i g n ( x ) = s i g n ( w x + b ) = s i g n ( ∑ j = 1 N n j η y j x j ⋅ x + ∑ j = 1 N n j η y j ) sign(x)=sign(wx+b)=sign(\sum\limits_{j=1}^N{n_j\eta y_jx_j\cdot x+\sum\limits_{j=1}^N}{n_j\eta y_j}) sign(x)=sign(wx+b)=sign(j=1Nnjηyjxjx+j=1Nnjηyj)
  此时学习的目标就不是 w w w b b b了,而是 n i , i = 1 , 2 , 3 , ⋯   , N {n_i},i = 1,2,3, \cdots ,N ni,i=1,2,3,,N。于是可以得到感知机对偶形式的学习算法如下:

  1. 初始化学习率 η = 0.1 \eta=0.1 η=0.1,令 n i {n_i} ni等于0,其中 i = 1 , 2 , 3 , ⋯   , N i=1,2,3,\cdots,N i=1,2,3,,N
  2. 在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi);
  3. 如果 y i ( ∑ j = 1 N n j η y j x j ⋅ x i + ∑ j = 1 N n j η y j ) ≤ 0 y_i(\sum\limits_{j=1}^N{n_j\eta y_jx_j\cdot x_i}+\sum\limits_{j=1}^N{n_j\eta y_j})\le0 yi(j=1Nnjηyjxjxi+j=1Nnjηyj)0,则 n i = n i + 1 n_i=n_i+1 ni=ni+1
  4. 转至2,直到没有误分类点出现;

这里需要解释一下,判断是否是误分类点的依据前面已经说过了,就是:
y i ( w x i + b ) ≤ 0 y_i(wx_i+b)\le0 yi(wxi+b)0
这里只不过是把 ( w x i + b ) (wx_i+b) (wxi+b)换成 ( ∑ j = 1 N n j η y j x j ⋅ x i + ∑ j = 1 N n j η y j ) (\sum\limits_{j=1}^N{n_j\eta y_jx_j\cdot x_i}+\sum\limits_{j=1}^N{n_j\eta y_j}) (j=1Nnjηyjxjxi+j=1Nnjηyj)

二、感知机对偶形式的实现

  感知机的对偶形式,相比原始形式,其实最大的变化就是需要提前计算样本点的内积,也就说可以用一个矩阵提前存储样本点的内积:
G = [ x i ⋅ x j ] N × N G = {\left[ {{x_i} \cdot {x_j}} \right]_{N \times N}} G=[xixj]N×N
  提前计算样本的内积可以为后续计算节省时间,这样可以大大提高效率。
代码如下:

%% 感知机
clc,clear
tic
% 随机初始化数据
random = unifrnd(1,5,40,2);
X = [random(1:20,:);random(21:40,:)+5];
scatter(X(1:20,1),X(1:20,2),'o','filled')
hold on
scatter(X(21:40,1),X(21:40,2),'o','filled')
y = [zeros(20,1)-1;ones(20,1)]; % y标签
learn_rate = 0.1; % 定义学习率
% 感知机进行线性分类_对偶形式
ni = zeros(length(X),1); % 记录每个样本误分类的次数
% 计算Gram矩阵
G = zeros(length(X),length(X));
for i = 1:length(X)
    for j = 1:length(X)
        G(i,j) = X(i,:) * X(j,:)';
    end
end
while flag ~= length(X)
    flag = 0;
    for i =1:length(X) % 遍历所有样本点
        if y(i)*(G(i,:)*(ni*learn_rate.*y)+learn_rate*ni'*y)<=0
            ni(i) = ni(i)+1;
            break; % 跳出循环
        else
            flag = flag + 1;
        end
    end
end

% 结果可视化
w = (learn_rate * ni .* y)' * X;
b = learn_rate * ni'* y;
k = - w(1) / w(2); % 求斜率
b = - b / w(2); % 求系数
n = 1:1:10;
m = k * n + b;
hold on
plot(n,m,'--')
grid on
title('感知机线性可分结果图')
toc

结果如图:
在这里插入图片描述

总结

  其实感知机的原始形式和对偶形式并没有本质的区别,对偶形式的意义就是可以提前计算样本点特征向量之间的内积,也就是Gram矩阵,这样在后续学习的过程中就可以加快计算速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习笔记-感知机对偶形式 的相关文章

随机推荐

  • 数组元素的比较

    Java 1 0 和 1 1 的类库缺少许多特性 其中之一就是缺少算法操作 甚至是简单的排 序操作都没有 对于盼望能得到一个无所不有的标准类库的人来说 缺少这些操作是很 难以理解的 幸好 Java 2 对此作了补救 至少解决了排序问题 书写
  • 如何搭建自己的图床(GitHub版)

    文章目录 1 图床的概念 2 用GitHub创建图床服务器 2 1 新建仓库 2 2 生成Token令牌 2 3 创建img分支和该分支下的img文件夹 可选 3 使用PicGo软件上传图片 3 1 下载PicGo软件 3 2配置PicGo
  • 一张表格分成两页打印_word一页内容怎么分成两页打印

    word一页内容怎么分成两页打印 我们经常在打印时会选择把两页A4打在一张A3上 但有的时候也会需要把一张A3的内容分成两页A4来打印 那么 如何进行操作呢 下面就来看看小编的做法吧 调整页面布局 页面设置 纸张 将纸张大小有A3修改为A4
  • 如何用python画雪人_小雪人图案

    效果图如下 代码如下 import turtle t turtle Turtle t speed 0 右眼睛 t up t goto 80 80 t down t begin fill t circle 20 t end fill 右眉毛
  • blender bpy入门笔记

    目录 bpycv 加载 渲染demo 可以导出图片 但是图片为空 导出obj模型 随机旋转 录制常见脚本 渲染属性 胶片 gt 透明 其他命令 bpycv https github com DIYer22 bpycv 加载 渲染demo i
  • MMSegmentation训练自己的分割数据集

    首先确保在服务器上正常安装了MMSeg 注意安装完还需建立与自己的数据集之间的软连接 官方安装教程如下 https github com open mmlab mmsegmentation blob master docs get star
  • Python flask-restful 框架讲解

    1 简介 Django 和 Flask 一直都是 Python 开发 Web 的首选 而 Flask 的微内核更适用于现在的云原生微服务框架 但是 Flask 只是一个微型的 Web 引擎 所以我们需要扩展 Flask 使其发挥出更强悍的功
  • RedisTemplate和StringRedisTemplate的区别

    RedisTemplate和StringRedisTemplate的区别 1 两者的关系是StringRedisTemplate继承RedisTemplate 2 两者的数据是不共通的 也就是说StringRedisTemplate只能管理
  • 索引构造与信息检索:让 ChatGPT 成为 Selenium 问答助手

    这是chatgpt为我生成的3个标题 我选了第3个 利用 Langchain 和 GPT 实现 Selenium 机器人自动问答 向量化存储和检索 如何用相似度搜索匹配 Selenium 知识 索引构造与信息检索 让 ChatGPT 成为
  • open3d python版本安装及安装过程中遇到的问题

    本文介绍一下我在安装open3d包过程中遇到的问题 pip安装 pip install open3d pip install open3d i https pypi tuna tsinghua edu cn simple or pip in
  • npm镜像设置

    查看镜像列表 npm isntall g nrm nrm ls 根据镜像列表地址来设置镜像 例如 npm config set registry https registry npmjs org 查看镜像 npm config get re
  • 高通QCM6125的LK部分(uefi/xbl)编译

    高通在QCM6125安卓10 0加入了UEFI 以前的lk相关代码移到了boot images QcomPkg路径下 编译方式和之前也不同了 编译环境 编译时错误提示 需要工具在这个路径 pkg qct software llvm rele
  • KNX协议入门

    KNX协议入门 转自 https wenku baidu com view 65b0a25a55270722182ef706 html 如有侵权 请联系qq 2453419889 我将立即删除 一 KNX技术简介 KNX通过一条总线将各个分
  • Dapper功能讲解

    简述 适用特性 使用Dapper流程 代码示例 简述 Dapper是一个轻量级的ORM工具 ORM框架的核心思想是对象关系映射 ORM是将表与表之间的操作 映射成对象和对象之间的操作 就是通过操作实体类来达到操作表的目的 从数据库提取的数据
  • [637]文件或目录损坏且无法读取CHKDSK修复方法

    文件或目录损坏且无法读取 不要太担心是出现了磁盘坏道 也许只是小小的存储问题 解决方法很简单 用chsdsk命令即可 方法如下 开始 运行 输入cmd 输入chkdsk 盘符 f 例如 chkdsk c f 等命令运行完即可 注意 冒号后面
  • matlab中size()的用法

    size A 设有一矩阵为A 则size A 返回的是一行向量 该行向量的第一个元素时矩阵的行数 第二个元素是矩阵的列数 size A 1 获取矩阵A的行数 size A 2 获取矩阵A的列数
  • 数学的1000+篇文章总结

    数学的1000 篇文章总结 本文收集和总结了有关数学的1000 篇文章 由于篇幅有限只能总结近期的内容 想了解更多内容可以访问 http www ai2news com 其分享了有关AI的论文 文章 图书 query 第13章 爱因斯坦 量
  • C#实现程序的版本升级更新

    我们做了程序 不免会有版本升级 这就需要程序有自动版本升级的功能 那么看看我是如何实现程序自动更新的 直接上代码 using System using System Collections Generic using System Text
  • 数学建模学习2论文排版

    如何写论文 一 四点注意事项 一 标题与正文层次分明 二 正文排版紧凑 三 表格与图片格式 四 公式编辑 二 如何写标题 一 要求 二 格式及示例 三 如何写摘要 一 要求 二 格式及示例 1 总体格式图 2 开头段模板 3 中间段模板 4
  • 机器学习笔记-感知机对偶形式

    文章目录 前言 一 感知机对偶形式 二 感知机对偶形式的实现 总结 前言 感知机模型是有两种形式的 上一篇文章中详细学习了感知机的原始形式数学模型 我们知道 感知机应该还有对偶形式 这篇文章就来记录一下感知机对偶形式的的数学模型 一 感知机