累积势函数分类

       本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在AI学习笔记

      AI学习笔记(17)---《累积势函数分类》

累积势函数分类

目录

1.前言

2.相关知识

2.1势函数的数学定义

2.2势函数的物理含义

2.3势函数构成方法

3.累积势函数分类算法原理

3.1基本思想

3.2判别函数的产生

3.3算法步骤

4.编程实现

4.1势函数MATLAB代码

4.2 累计势函数判别算法MATLAB代码

4.3 测试输入


1.前言

        理解并掌握势函数的数学定义和物理含义,并根据要求实现一个势函数。

        理解并掌握累计势函数判别法的基本思想以及算法步骤,并根据要求实现一个势函数。


2.相关知识

2.1势函数的数学定义

       定义点 Xk​ 处的势函数 K(.,X_k),它应满足:

2.2势函数的物理含义

     势函数可以用来描述空间中一个点电荷的电势分布。

        这个电荷在空间中所处的位置即为 Xk​ 所描述的位置。距离该点电荷距离测度越近,则电势越高;距离越远,则电势越低,并且电势随距离的变化是连续的。当距离该点电荷距离无限远时,电势趋近于 0,且不会为负(相对于正电荷来说)。

        空间中点电荷电势分布特征正好符合前面所定义的势函数的一些特性。这也是势函数的一项物理含义。

2.3势函数构成方法

        有两种构造势函数的方法,其中第一类方法是用对称的有限多项式展开,即:

第二类方法是直接选择双变量的对称函数作为势函数,例如:


3.累积势函数分类算法原理

3.1基本思想

        势函数分类法是将二分类问题中的样本点看做正负电荷,并将他们的势函数叠加起来构成判别函数,即位势为 0 的判决界面。其基本思想如下:

  • 假设要划分属于两种类别 ω1​ω2​ 的模式样本,这些样本可以看成是分布在 n 维模式空间中的点 Xk​

  • 把属于 ω1​ 的点比拟为正电荷,势函数为正,相对地把属于 ω2​ 的点比拟为负电荷,势函数为负;

  • 将所有电荷的势函数叠加起来作为所有样本点的累积电势分布,只要在两类电势分布之间选择合适等势线,就可以认为是模式分类的判别函数。

3.2判别函数的产生

从势函数可以看出,累计位势起着判别函数的作用。

对于一个新的样本 Xk+1​ 以及前 k 个样本所构成的累计势函数 Kk​(X)

  • Xk+1​∈ω1​ 时, Kk​(Xk+1​)>0,或者当 Xk+1​∈ω2​时,Kk​(Xk+1​)<0,判别正确,累计势函数不用做任何修改;

  • 否则,需要对累计势函数进行修改,使其能对 Xk+1​ 正确判别。

由于一个模式样本的错误分类造成累计势函数在训练时的变化,因此累计势函数分类算法提供了确定 ω1​ω2​ 两类判别函数的迭代过程。

3.3算法步骤

  • 第一步,初始化。令特征空间中个点处的累计位势函数 K0​(X)=0,判错计数 m=0

  • 第二步,令 j=0,加入第一个样本模式 X1​,得到以下位势函数:

  • 第三步,令 j=j+1,加入下一个样本模式 Xj​,计算累积势函数 Kj​(X)=Kj−1​(X)+αj​K(X,Xj​),累积位势函数的调整规则为:
     

  • 第四步,若 j<N,返至第三步。若 j=N,检查是否有模式错判;若 m=0,则结束,判别函数为 Kj​(X);若 m>0,令 j=0,m=0,返至第三步。

4.编程实现

4.1势函数MATLAB代码

function [result] = potential(X, Xk)result = exp(-norm(X - Xk, 2)); % 计算核函数值
end

4.2 累计势函数判别算法MATLAB代码

function [K, alpha] = step2_mission(samples, labels)m = 0; count = 1; N = size(samples, 1); % 初始化变量和样本数量j = 1; % 初始化样本索引K = samples(1, :); % 初始化支持向量alpha = labels(1); % 初始化alpha值while 1j = j + 1; X = samples(j, :); % 当前样本k = 0;% 计算支持向量与当前样本的核函数值之和for i = 1:size(K, 1)k = k + alpha(i) * potential(X, K(i, :));enda = 0; % 初始化alpha调整值% 根据当前样本的标签和核函数值调整alpha值if labels(j) == 1 && k <= 0a = 1;elseif labels(j) == -1 && k >= 0a = -1;endm = m + abs(a); % 累加alpha调整值的绝对值if a ~= 0count = count + 1; % 更新支持向量计数alpha(count) = a; % 添加新的alpha值K = [K; X]; % 添加新的支持向量endif j == N % 遍历完所有样本if m == 0break; % 如果没有更新,结束循环elsej = 0; m = 0; % 重置样本索引和更新计数endendend
endfunction [result] = potential(X, Xk)result = exp(-norm(X - Xk, 2)); % 计算核函数值
end

4.3 测试输入

MATLAB终端输入下面指令

测试potential(X, Xk)

alpha = 2;disp('task');
center = [0 0 0];
x1 = [1 1 1];
x2 = [0 0 0];
x3 = [0 1 1];
r1 = step1_mission(x1,center,alpha);
r2 = step1_mission(x2,center,alpha);
r3 = step1_mission(x3,center,alpha);
r4 = step1_mission(center,x3,alpha);
if 1 - r2 < 0.00001disp('max on center');
end
if r2 > r1disp('decrease by distance');
end
if r3 - r4 < 0.00001disp('commutativity');
end

 测试step2_mission(samples, labels)

samples = [-7.82 -4.58 -3.97; -6.68 3.16 2.71; 4.36 -2.91 2.09; 6.72 0.88 2.80; -8.64 3.06 3.50; -6.87 0.57 -5.45; 4.47 -2.62 5.76; 6.73 -2.01 4.18; -7.71 2.34 -6.33; -6.91 -0.49 -5.68; 6.18 2.81 5.82; 6.72 -0.93 -4.04; -6.25 -0.26 0.56; -6.94 -1.22 1.13; 8.09 0.20 2.25; 6.81 0.17 -4.15; -5.19 4.24 4.04; -6.38 -1.74 1.43; 4.08 1.30 5.33; 6.27 0.93 -2.78];
labels = [-1.0000    1.0000    1.0000    1.0000   -1.0000   -1.0000    1.0000    1.0000   -1.0000   -1.0000    1.0000    1.0000   -1.0000   -1.0000    1.0000    1.0000    1.0000   -1.0000    1.0000    1.0000];s = samples(1:5,:);
l = labels(1:5);
disp('task1');
disp('K')
disp('alpha')
[k, alpha] = step2_mission(s,l)s = samples(1:10,:);
l = labels(1:10);
disp('task2');
disp('K')
disp('alpha');
[k, alpha] = step2_mission(s,l)s = samples(1:20,:);
l = labels(1:20);
disp('task3');
disp('K')
disp('alpha');
[k, alpha] = step2_mission(s,l)s = samples(1:20,1:2);
l = labels(1:20);
disp('task4');
disp('K')
disp('alpha');
[k, alpha] = step2_mission(s,l)

     文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者私信联系作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/365528.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[BUUCTF从零单排] Web方向 02.Web入门篇之『常见的搜集』解题思路(dirsearch工具详解)

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

《数字图像处理与机器视觉》案例三 (基于数字图像处理的物料堆积角快速测量)

一、前言 物料堆积角是反映物料特性的重要参数&#xff0c;传统的测量方法将物料自然堆积&#xff0c;测量物料形成的圆锥表面与水平面的夹角即可&#xff0c;该方法检测效率低。随着数字成像设备的推广和应用&#xff0c;应用数字图像处理可以更准确更迅速地进行堆积角测量。 …

Java中反射的使用

无参构造器 方法的调用 package com.studio;import java.lang.reflect.Method;class User {private String name;/*无参构造器*/public User() {}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString…

基于STM32的智能门锁控制系统

目录 引言环境准备智能门锁控制系统基础代码实现&#xff1a;实现智能门锁控制系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;门锁管理与优化问题解决方案与优化收尾与总结 1. 引言 智能门锁控制系统通过使用STM32嵌…

【你也能从零基础学会网站开发】(了解)关系型数据库的基本架构体系结构与概念理解

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 关系型数据库的…

Spring Boot 学习第八天:AOP代理机制对性能的影响

1 概述 在讨论动态代理机制时&#xff0c;一个不可避免的话题是性能。无论采用JDK动态代理还是CGLIB动态代理&#xff0c;本质上都是在原有目标对象上进行了封装和转换&#xff0c;这个过程需要消耗资源和性能。而JDK和CGLIB动态代理的内部实现过程本身也存在很大差异。下面将讨…

StaleElementReferenceException 不再是问题:Google Colab 上的 Selenium 技巧

背景介绍 在现代网页数据抓取领域&#xff0c;Selenium 是一款强大的工具&#xff0c;它使得自动化浏览和数据提取变得异常简单。然而&#xff0c;当面对动态页面时&#xff0c;许多爬虫开发者常常会遇到一个令人头疼的问题——StaleElementReferenceException。这一异常的出现…

MTK7621:交换芯片工作队列

mt7530交换芯片的数据接收中断后,把具体接收数据工作任务、委托到workqueue队列中,让内核work_thread()线程任务来处理,这部分内容请参考《workqueue工作原理》中的描述。 workqueue基本工作流程框架如下: 框架业务关系: 1,程序把work单加入到workqueue中,就等于把工…

java 操作 milvus 2.1.4

1. 确认 docker 运行的 milvus容器镜像版本情况&#xff1a; 2. pom 依赖&#xff1a; <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.1.0</version><exclusions><exclusi…

压缩包怎么解压,解压压缩包不损坏文件

常见格式&#xff1a; ZIP&#xff1a;最常见的压缩文件格式之一&#xff0c;支持跨平台。RAR&#xff1a;另一种常见的压缩文件格式&#xff0c;通常压缩率比ZIP高&#xff0c;但不如ZIP普及。7Z&#xff1a;来自7-Zip的压缩格式&#xff0c;支持更高的压缩率和一些高级特性。…

使用Python绘制太阳系图

使用Python绘制太阳系图 太阳系图太阳系图的优点使用场景 效果代码 太阳系图 太阳系图&#xff08;Sunburst Chart&#xff09;是一种层次结构图表&#xff0c;用于表示数据的分层结构。它使用同心圆表示各个层级&#xff0c;中心圆代表最高层级&#xff0c;向外的圆环代表逐级…

[数据集][目标检测]井盖未盖好检测数据集VOC+YOLO格式20123张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;20123 标注数量(xml文件个数)&#xff1a;20123 标注数量(txt文件个数)&#xff1a;20123 标…

WDG看门狗

1 WDG 1.1 简介 WDG是看门狗定时器&#xff08;Watchdog Timer&#xff09;的缩写&#xff0c;它是一种用于计算机和嵌入式系统中的定时器&#xff0c;用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗&#xff0c;它时刻盯着你的程序&#xff0c;确保它们正常运行。…

Apache ZooKeeper 简介

介绍 Apache ZooKeeper 是一种分布式协调服务&#xff0c;旨在管理和同步大量分布式应用程序。ZooKeeper 是 Apache 软件基金会下的一个开源项目&#xff0c;它解决了维护分布式应用程序的配置信息、命名、分布式同步和组服务的复杂性。本文探讨了 ZooKeeper 的架构、功能、应…

python 压缩数据

requests 是 Python 中一个非常流行的 HTTP 库&#xff0c;用于发送各种 HTTP 请求。下面是一个使用 requests 库发送简单 GET 请求和 POST 请求的示例&#xff1a; 首先&#xff0c;确保你已经安装了 requests 库。如果还没有安装&#xff0c;可以使用 pip 进行安装&#xff…

深入浅出:npm 常用命令详解与实践

在现代的前端开发流程中&#xff0c;npm&#xff08;Node Package Manager&#xff09;已经成为了不可或缺的一部分。它不仅帮助我们有效地管理项目中的依赖包&#xff0c;还提供了一系列强大的命令来优化开发体验。在这篇博客中&#xff0c;我们将深入探讨 npm 的常用命令&…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4599 标注数量(xml文件个数)&#xff1a;4599 标注数量(txt文件个数)&#xff1a;4599 标注…

React 打包时如何关闭源代码混淆

React 开发中&#xff0c;使用 npm build 命令进行生产代码打包&#xff0c;为了压缩代码并尽量保证代码的安全性&#xff0c;React 打包时会代码进行压缩和混淆&#xff0c;但是有时我们需要 debug 生产环境的源代码&#xff0c;例如当我们调试 SSR 的项目时&#xff0c;需要禁…

ThreeJS-3D教学十二:ShaderMaterial

一、首先 Shader 是做什么的 Shader 可以自定义每个顶点、每个片元/像素如何显示&#xff0c;而控制顶点和片元显示是通过设置 vertexShader 顶点着色器和 fragmentShader 片元着色器&#xff0c;这两个着色器用在 ShaderMaterial 和 RawShaderMaterial 材质上。 我们先看一个例…

容器技术-docker5

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置…