模式识别感知器matlab,模式识别:感知器的实现
在之前的模式识别研究中,判别函数J(.)的参数是已知的,即假设概率密度函数的参数形式已知。本节不考虑概率密度函数的确切形式,使用非参数化的方法来求解判别函数。由于线性判别函数具有许多优良的特性,因此这里我们只考虑以下形式的判别函数:它们或者是x的各个分量的线性函数,或者是关于以x为自变量的某些函数的线性函数。在设计感知器之前,需要明确以下几个基本概念:
一、判别函数:是指由x的各个分量的线性组合而成的函数:
若样本有c类,则存在c个判别函数,本节只讨论两类样本的分类情况。要求实现以下判定规则:
二、样本线性可分:即在特征空间中可以用一个或多个线性分界面正确无误地分开若干类样本;对于两类样本点w1和w2,其样本点集合表示为:
,使用一个判别函数
来划分w1和w2,需要用这些样本集合来确定判别函数的权向量a,可采用增广样本向量y,即存在合适的增广权向量a,使得:
其中:
则称样本是线性可分的。如下图中第一个图就是线性可分,而第二个图则不可分。所有满足条件的权向量称为解向量。
通常对解区限制:引入余量b,要求解向量满足:
余量b的加入在一定程度上可防止优化算法收敛到解区的边界。
三、感知器准则函数
这里考虑构造线性不等式
的准则函数的问题,令准则函数J(.)为:
其中Y是被权向量a错分的样本集。当且仅当JP(a*) = min JP(a) = 0 时,a*是解向量。这就是感知器(Perceptron)准则函数。
1.基本的感知器设计
感知器准则函数的最小化可以使用梯度下降迭代算法求解:
其中,k为迭代次数,η为调整的步长。即下一次迭代的权向量是把当前时刻的权向量向目标函数的负梯度方向调整一个修正量。
即在每一步迭代时把错分的样本按照某个系数叠加到权向量上。这样就得到了感知算法。
2.批处理感知器算法
3.固定增量感知器算法
通常情况,一次将所有错误样本进行修正不是效率最高的做法,更常用是每次只修正一个样本或一批样本的固定增量法:
收敛性分析:只要训练样本集是线性可分的,对于任意的初值 a(1) ,经过有限次迭代运算,算法必定收敛。而当样本线性不可分时,感知器算法无法收敛。
总结:感知器是最简单可以“学习”的机器,是解决线性可分的最基本方法。也是很多复杂算法的基础。感知器的算法的推广有很多种,如带裕量的变增量感知器、批处理裕量松弛算法、单样本裕量松弛算法等等。
以下是批处理感知器算法与固定增量感知器算法实现的MATLAB代码,并给出四组数据以供测试:
% 批处理感知器算法
function BatchPerceptron(w1, w2)
figure;
plot(w1(:,1),w1(:,2),‘ro‘);
hold on;
grid on;
plot(w2(:,1),w2(:,2),‘b+‘);
% 对所有训练样本求增广特征向量y
one = ones(10,1);
y1 = [one w1];
y2 = [one w2];
w12 = [y1; -y2]; % 增广样本规范化
y = zeros(size(w12,1),1); % 错分样本集y初始为零矩阵
% 初始化参数
a = [0 0 0]; % [0 0 0];
Eta = 1;
time = 0; % 收敛步数
while any(y<=0)
for i=1:size(y,1)
y(i) = a * w12(i,:)‘;
end;
a = a + sum(w12(find(y<=0),:));%修正向量a
time = time + 1;%收敛步数
if (time >= 300)
break;
end
end;
if (time >= 300)
disp(‘目标函数在规定的最大迭代次数内无法收敛‘);
disp([‘批处理感知器算法的解矢量a为: ‘,num2str(a)]);
else
disp([‘批处理感知器算法收敛时解矢量a为: ‘,num2str(a)]);
disp([‘批处理感知器算法收敛步数k为: ‘,num2str(time)]);
end
%找到样本在坐标中的集中区域,以便于打印样本坐标图
xmin = min(min(w1(:,1)),min(w2(:,1)));
xmax = max(max(w1(:,1)),max(w2(:,1)));
xindex = xmin-1:(xmax-xmin)/100:xmax+1;
yindex = -a(2)*xindex/a(3)-a(1)/a(3);
plot(xindex,yindex);
title(‘批处理感知器算法实现两类数据的分类‘);
% 固定增量感知器算法
function FixedIncrementPerceptron(w1, w2)
[n, d] = size(w1);
figure;
plot(w1(:,1),w1(:,2),‘ro‘);
hold on;
grid on;
plot(w2(:,1),w2(:,2),‘b+‘);
% 对所有训练样本求增广特征向量y
one = ones(10,1);
y1 = [one w1];
y2 = [one w2];
w12 = [y1; -y2]; % 增广样本规范化
y = zeros(size(w12,1),1); % 错分样本集y初始为零矩阵
% 初始化参数
a = [0 0 0];
Eta = 1;
% k = 0;
time = 0; % 收敛的步数
yk = zeros(10,3);
y = a * w12‘;
while sum(y<=0)>0
% for i=1:size(y,1)
% y(i) = a * w12(i,:)‘;
% end;
y = a * w12‘;
rej=[];
for i=1:2*n %这个循环计算a(K+1) = a(k) + sum {yj被错误分类} y(j)
if y(i)<=0
a = a + w12(i,:);
rej = [rej i];
end
end
% fprintf(‘after iter %d, a = %g, %g\n‘, time, a);
% rej
time = time + 1;
if ((size(rej) == 0) | (time >= 300))
break;
end
end;
if (time >= 300)
disp(‘目标函数在规定的最大迭代次数内无法收敛‘);
disp([‘固定增量感知器算法的解矢量a为: ‘,num2str(a)]);
else
disp([‘固定增量感知器算法收敛时解矢量a为: ‘,num2str(a)]);
disp([‘固定增量感知器算法收敛步数kt为: ‘,num2str(time)]);
end
%找到样本在坐标中的集中区域,以便于打印样本坐标图
xmin = min(min(w1(:,1)),min(w2(:,1)));
xmax = max(max(w1(:,1)),max(w2(:,1)));
xindex = xmin-1:(xmax-xmin)/100:xmax+1;
% yindex = -a(2)*xindex/a(3)-a(1)/a(3);
yindex = -a(2)*xindex/a(3) - a(1)/a(3);
plot(xindex,yindex);
title(‘固定增量感知器算法实现两类数据的分类‘);
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 感知器实验
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
w1 = [ 0.1 1.1;...
6.8 7.1;...
-3.5 -4.1;...
2.0 2.7;...
4.1 2.8;...
3.1 5.0;...
-0.8 -1.3;...
0.9 1.2;...
5.0 6.4;...
3.9 4.0];
w2 = [ 7.1 4.2;...
-1.4 -4.3;...
4.5 0.0;...
6.3 1.6;...
4.2 1.9;...
1.4 -3.2;...
2.4 -4.0;...
2.5 -6.1;...
8.4 3.7;...
4.1 -2.2];
w3 = [-3.0 -2.9;...
0.54 8.7;...
2.9 2.1;...
-0.1 5.2;...
-4.0 2.2;...
-1.3 3.7;...
-3.4 6.2;...
-4.1 3.4;...
-5.1 1.6;...
1.9 5.1];
w4 = [-2.0 -8.4;...
-8.9 0.2;...
-4.2 -7.7;...
-8.5 -3.2;...
-6.7 -4.0;...
-0.5 -9.2;...
-5.3 -6.7;...
-8.7 -6.4;...
-7.1 -9.7;...
-8.0 -6.3];
BatchPerceptron(w1, w2);
FixedIncrementPerceptron(w1, w3);
模式识别感知器matlab,模式识别:感知器的实现相关推荐
- 压缩感知算法matlab,压缩感知算法matlab
MATLAB代码如下: 压缩感知仿真实例 压缩感知仿真实例在MATLAB R2001b中的计算结果如下: 原图像 采样率0.7 采样率0.5 采样率0.3 压缩感知仿真实例采用均方误差...... M ...
- 线性规划求解器 matlab,基于求解器设置线性规划
求解方法 要求解优化问题,请执行以下步骤.选择求解器 要找到求解此问题的合适求解器,请参考优化决策表.该表要求您根据目标函数的类型和约束的类型对问题进行分类.对于此问题,目标函数是线性的,约束也是线性 ...
- 模式识别感知器算法matlab,模式识别第三章-感知器算法.doc
模式识别第三章-感知器算法 模式识别第三章 感知器算法 一.用感知器算法求下列模式分类的解向量w: 将属于的训练样本乘以(-1),并写成增广向量的形式: ,,, ,,, 第一轮迭代:取, 因不大于0, ...
- 模式识别系列(一)感知器算法(PLA)
目录 写在前头 1.感知器算法简介 2.Perceptron Learning Algorithm(PLA) 2.1权重向量和特征向量到分类面的距离 2.2PLA的原理和流程 2.3PLA的收敛性证明 ...
- 利用MATLAB实现感知器算法
利用MATLAB实现感知器算法 % 感知器算法 clc;clear;close all; [Number,X11,X12,X21,X22]=textread('data2.txt','%f%f%f%f ...
- 动态优化器—一种感知视频编码优化框架
Netflix提出了一种基于感知视频编码优化框架,在非峰值流时间期间,将此编码系统应用于AVC-High和VP9数据流,提高了用户的视频质量的同时并节省了带宽.LiveVideoStack对本文进行了 ...
- 神经网络入门回顾(感知器、多层感知器)
神经网络属于"联结主义",和统计机器学习的理论基础区别还是很不一样. 以我自己的理解,统计机器学习的理论基于统计学,理论厚度足够强,让人有足够的安全感:而神经网络的理论更侧重于代数 ...
- MP模型、单层感知器、多层感知器的理解
神经网络基础 序言 MP模型 1.逻辑与: 2.逻辑或: 3.逻辑异或: 单层感知器 多层感知器(BP) 序言 关于神经网络的内容已经学习了很多,也发现了一些问题,而这些问题是因为基础不牢靠引起的,所 ...
- 集萃感知“慧海”微波车检器,为智能交通提供新方案
集萃感知"慧海"微波车检器,为智能交通提供新方案 目前主流的交通雷达使用的是24GHz.77GHz和60GHz这个三个频段. 交通雷达关于频率的选择有很多考量.在作用距离性能方面, ...
最新文章
- AI EARTH再立功,达摩院包揽遥感AI领域三项冠军
- 用手机就能实时给图像直线描边,速度不亚于目标检测,在线Demo可玩
- XXX管理平台系统——概要
- 实战:Windows Server 2008 使用WSUS实现内网计算机系统更新
- 这个外挂要上天了!教一千遍都不会的数理技巧,还不如搞懂最根本的概念!
- 《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述
- ug使用服务器系统,ug服务器设置教程视频
- java 二阶段提交,二阶段提交协议(Two Phase Commitment Protocol)
- LeetCode-83: 删除排序链表中的重复元素
- hdu 1788 最小公倍数(这题面。。。)
- 利用FastFds搭建文件管理系统(一)
- mendeley引用参考文献不显示_使用 Zotero 在 Markdown 中优雅处理参考文献
- 微信最新的系统默认emoji表情集
- Qt实现Toast提示消息
- 敏捷其实很简单(7) Scrum Master的7种武器之长生剑和孔雀翎
- java输入无名粉_05·无名粉店(上)
- 信用社考试计算机试题及答案,2016黑龙江省农村信用社考试题库-计算机试题及答案六...
- Quantopian单因子分析工具:Alphalens
- python网络爬虫与信息提取北京理工大学ppt_Python网络爬虫与信息提取
- 阿里二面准备(Java 研发),精心准备200题(含答案)收割 offer
热门文章
- 整理一些好看的loading动画
- 组图:未成年已上T台 中日韩最小的三个女模特
- 沦为“取数工具”的那些日子,我懂得了这些道理
- <8>Linux中的软件管理2021-10-17
- 【ROOT from CERN】——如何读取Tree
- 2018_1028_html_第一次_王灏文
- UML——活动图和状态图
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java在线图书馆信息管理系统g6977
- adams驱动旋转速度,轮子爬台阶Adams中驱动与扭矩的区别
- SAP学习笔记(from 神话blog)