没有合适的资源?快使用搜索试试~ 我知道了~
matlab-线性分类器的设计doc.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 64 浏览量
2023-03-01
19:17:17
上传
评论
收藏 367KB PDF 举报
温馨提示
试读
13页
.
资源推荐
资源详情
资源评论
线性分类器设计
1 问题描述
对“data1.m”数据,分别采用感知机算法、最小平方误差算法、线性 SVM 算法设计分类器,
分别画出决策面,并比较性能。(注意讨论算法中参数设置的影响。)
2 方法描述
2.1 感知机算法
线性分类器的第一个迭代算法是 1956 年由 Frank Rosenblatt提出的,即具有自学习能力
的感知器(Perceptron)神经网络模型,用来模拟动物或者人脑的感知和学习能力。这个算
法被提出后,受到了很大的关注。感知器在神经网络发展的历史上占据着特殊的位置:它是
第一个从算法上完整描述的神经网络,是一种具有分层神经网络结构、神经元之间有自适应
权相连接的神经网络的一个基本网络。
感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限
次迭代之后的收敛。感知器的基本模型结构如图 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
T
* x 0, x
1
w * x 0, x
2
T
(1)
引入一个代价函数,定义为:
J(w )
x
*w
T
* x
x Y
(2)
其中,Y 是权向量 w 定义的超平面错误分类的训练向量的子集。变量
x
定义为:当
x
1
时,
x
= -1;当
x
2
时,
x
= +1。显然,J(w)≥0。当代价函数 J(w)达到最小值 0
时,所有的训练向量分类都全部正确。为了计算代价函数的最小迭代值,可以采用梯度下降
法设计迭代算法,即:
w (n 1) w (n)
n
J(w )
w
w w (n)
(3)
其中,w(n)是第 n 次迭代的权向量,
n
有多种取值方法,在本设计中采用固定非负值。
由 J(w)的定义,可以进一步简化(3)得到:
w (n 1) w (n)
n x
* x
x Y
(4)
通过(4)来不断更新 w ,这种算法就称为感知器算法(perceptron algorithm)。可以证
明,这种算法在经过有限次迭代之后是收敛的,也就是说,根据(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)=
-4.1
;
x1(4,1)=
2.0
; x1(4,2)=
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); end ;
for i=1:8 r2(i)=x1(i,2); end ;
for i=1:8 r3(i)=x2(i,1); end ;
for i=1:8 r4(i)=x2(i,2); 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
- 粉丝: 6452
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功