没有合适的资源?快使用搜索试试~ 我知道了~
matlab-线性分类器的设计doc.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 124 浏览量
2023-03-01
19:17:18
上传
评论
收藏 476KB DOCX 举报
温馨提示
试读
13页
.
资源推荐
资源详情
资源评论
线性分类器设计
1 问题描述
对“data1.m”数据,分别采用感知机算法、最小平方误差算法、线性 SVM 算法设计分类器,
分别画出决策面,并比较性能。(注意讨论算法中参数设置的影响。)
2 方法描述
2.1 感知机算法
线性分类器的第一个迭代算法是 1956 年由 Frank Rosenblat提t出的,即具有自学习能力
的感知器(Perceptro)n 神经网络模型,用来模拟动物或者人脑的感知和学习能力。这个算
法被提出后,受到了很大的关注。感知器在神经网络发展的历史上占据着特殊的位置:它是
第一个从算法上完整描述的神经网络,是一种具有分层神经网络结构、神经元之间有自适应
权相连接的神经网络的一个基本网络。
感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限
次迭代之后的收敛。感知器的基本模型结构如图 1 所示:
图 1 感知器基本模型
其中,X 输入,Xi 表示的是第 i个输入;Y 表示输出;W 表示权向量;w0 是阈值,f
是一个阶跃函数。
感知器实现样本的线性分类主要过程是:特征向量的元素 x1,x2,……,xk 是网络的
输入元素,每一个元素与相应的权 wi 相乘。,乘积相加后再与阈值 w0 相加,结果通过 f函
数执行激活功能,f为系统的激活函数。因为 f是一个阶跃函数,故当自变量小于 0 时,f= - ;1
当自变量大于 0 时,f= 1。这样,根据输出信号 Y ,把相应的特征向量分到为两类。
然而,权向量 w 并不是一个已知的参数,故感知器算法很重要的一个步骤即是寻找一
个合理的决策超平面。故设这个超平面为 w ,满足:
w * x 0, x
T
1
2
(1)
w * x 0, x
T
引入一个代价函数,定义为:
J(w )
* w * x
T
x
(2)
x Y
其中,Y 是权向量 w 定义的超平面错误分类的训练向量的子集。变量 定义为:当
x
x
x
时, = -1;当
x
时, = +1。显然,J(w)≥0。当代价函数 J(w)达到最小值 0
x
1
2
时,所有的训练向量分类都全部正确。为了计算代价函数的最小迭代值,可以采用梯度下降
法设计迭代算法,即:
J(w )
w(n 1) w (n)
w
n
w w (n)
(3)
其中,w(n)是第 n 次迭代的权向量, 有多种取值方法,在本设计中采用固定非负值。
n
由 J(w)的定义,可以进一步简化(3)得到:
w(n 1) w (n)
* x
n
x
(4)
x Y
通过(4)来不断更新 w ,这种算法就称为感知器算法(perceptron algori)t。hm可以证
明,这种算法在经过有限次迭代之后是收敛的,也就是说,根据(4)规则修正权向量 w ,
可以让所有的特征向量都正确分类。
采用感知器算法实现 data1.m的数据分类流程如图 2 所示:
开始
初始化
权向量w赋任意值
迭代
N
代价函数为0
Y
结束
图 2 单层感知器算法程序流程
MATLAB 程序源代码如下:
function Per1()
clear all ;
close all ;
% 样本初始化
x1(1,1)= 0.1; x1(1,2)= 1.1;
x1(2,1)= 6.8; x1(2,2)= 7.1;
x1(3,1)= -3.;5 x1(3,2)=
x1(4,1)= 2.0; x1(4,2)=
-4.;1
2.7;
x1(5,1)= 4.1; x1(5,2)= 2.8;
x1(6,1)= 3.1; x1(6,2)= 5.0;
x1(7,1)= -0.;8 x1(7,2)=
-1.;3
x1(8,1)= 0.9; x1(8,2)= 1.2;
[8.4 4.1; 4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2]
x2(1,1)= 7.1; x2(1,2)=;
x2(2,1)= -1.;4 x2(2,2)=;
x2(3,1)= 4.5; x2(3,2)=;
x2(4,1)= 6.3; x2(4,2)=;
x2(5,1)= 4.2; x2(5,2)=;
x2(6,1)= 1.4; x2(6,2)=;
x2(7,1)= 2.4; x2(7,2)=;
x2(8,1)= 2.5; x2(8,2)=;
for i=1:8 r1(i)=x1(i,1);
for i=1:8 r2(i)=x1(i,2);
for i=1:8 r3(i)=x2(i,1);
for i=1:8 r4(i)=x2(i,2);
end ;
end ;
end ;
end ;
figure(1);
plot(r1,r2, '*' ,r3,r4, 'o' );
hold on;%保持当前的轴和图像不被刷新,在该图上接着绘制下一图
x1(:,3) = 1; % 考虑到不经过原点的超平面,对x进行扩维
x2(:,3) = 1; % 使x'=[x 1] ,x 为2 维的,故加1 扩为3 维
% 进行初始化
w = rand(3,1); % 随机给选择向量,生成一个3维列向量
p = 1; %p0 非负正实数
ox1 = -1; % 代价函数中的变量
ox2 = 1; % 当x属于w1 时为-1 ,当x属于w2 时为1
s = 1; % 标识符,当s=0 时,表示迭代终止
剩余12页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6450
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功