线性分类器-模式识别

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业2-线性分类器

第一章感知机算法 (2)

1.1算法原理 (2)

1.2程序代码 (2)

1.3运行结果及解释 (4)

第二章最小二乘算法 (6)

2.1算法原理 (6)

2.2程序代码 (7)

2.3运行结果及解释 (8)

第三章支持矢量机算法 (10)

3.1算法原理 (10)

3.2程序代码 (11)

3.3运行结果及解释 (13)

第四章三种方法比较 (16)

理解和体会 (18)

附录 (18)

主程序代码:stp2.m (18)

生成样本数据代码createSample.m (20)

绘图代码plotData.m: (21)

第一章 感知机算法

1.1 算法原理

对于两类的情况,线性分类器是一个超平面: *T =w x 0 ,其中*w 是法向量,x 是训练集的增广向量(每一个训练样本的最后一维值为1),应该满足如下条件:

*1

*2

T T w w >∀∈<∀∈w x 0x w x 0

x

该算法的代价函数定义为()()T

Y

J δ∈=

∑x

x w w

x 其中Y 是所有的被分错的训练样本

的集合,而针对每一个分错的样本x ,其对应的δx 满足:

12

11

w w δδ=-∈=+∈x x x x ,因

此()J w 一定大于0的。现在的目标就是求解优化函数min ()J w ,为了简单起见,采用梯度下降法,()()Y

J δ∈∇=

∑w x

x w x ,迭代步骤为(1)()()t

Y

t t αδ∈+=-∑x

x w w x ,

其中t α是迭代步长,同样为了简单起见,可以取一个较小的常数(太大会导致迭代在最小值附近振荡,太小会导致迭代很慢)

1.2 程序代码

function [w, ws, miss] = perceptron( data, nSample, dim, alpha, nStep) %% 感知机算法 %% 输入 % data 训练数据

% nSample 训练的个数,是一个向量(每个类的个数) % dim 代表特征的个数 % alpha 迭代步长 % nStep 迭代次数 % %% 输出

% w 线性分类结果 w'x = 0; (x 是增广向量) % ws 迭代过程ws 的变化情况 % miss 迭代过程中分错数的变化情况

%% 初始化权重向量 w = rand(dim+1, 1); ws = zeros(dim+1, nStep);

miss = zeros(1, nStep);

data1 = data{1, 1};

data2 = data{1, 2};

%% 感知机算法流程

for i = 1 : nStep

% 做第i次迭代

ws(:, i) = w; % 存储当前w的值

missNum = 0;

% 第一类分错统计

for k = 1 : nSample(1)

% 遍历当前组的第k个实例

x = data1(:, k);

if(w' * x < 0)

w = w + alpha * x; % 修改w,分错了x,(x属于第一类,本应该满足w'x > 0)

missNum = missNum + 1;

end

end

% 第二类分错统计

for k = 1 : nSample(2)

% 遍历当前组的第k个实例

x = data2(:, k);

if(w' * x > 0)

w = w - alpha * x;

missNum = missNum + 1;

end

end

miss(i) = missNum;

end

end

1.3运行结果及解释

对上述函数,生成实例的系数为{[2.0 0.8; -1.5 1.7;], [-1.7 1; 1.3 -0.6;]};

分别代表两类数据的两个特征的正太分布的均值和系数。

α=,迭代201次的结果如下图1-1:

当算法取步长0.001

图1-1 感知机算法结果图

图1-1的左边部分为分错次数变化图,说明了算法效果还不错,分错次数一开始降得很快,但因为两类数据不能完全分开,导致错误次数始终不能降到0,从右图中也可以看出,决策线从初始的绿色逐渐变回红色,不断地调整。

α=时,迭代201次结果如下图1-2所示:

当取算法步长1

图1-2 感知机算法结果图

可以发现,由于步长太大的时候,分错样本数发生振荡,因此,梯度下降法不能把步长取太大。

α=,迭代201次的结果如下图1-1:生成样本系数修改为

当算法取步长0.001

{[2.0 0.8; -1.8 0.9;],[-1.9 1; 1.9 -0.6;]};时候两类可以完全分开,发现算法很快就得到了一条决策线(但是这根线离蓝色类很近,直观上讲并不是最佳的线)

图1-3 感知机算法结果图

下面给出三维的分类结果:

图1-4 感知机算法三维分类结果图

第二章 最小二乘算法

2.1 算法原理

此算法采用了不一样的代价函数,定义为:2

2()T

J =w y -w x ,其中y 的第i 项

i y 代表每一个样本对应的函数值,可以用两种方式定义,

第一种:

12

11

T i i i T

i i i w w ==+∀∈==-∀∈y w x x y w x x (此种情况,就不考虑两类的权重),

第二种:

21211122

/()/()

T i i i T

i i i N N N w N N N w ==+∀∈==-+∀∈y w x x y w x x (此种情况,考虑了两类的权重)

第二种方法中,12,N N 分别代表第一类和第二类的样本数量。

分析优化函数min ()J w ,目的是求解T =y x w ,则有:

1()T T T -=⇒=⇒=y x w xy xx w w xx xy ,这个叫做求伪逆。

下面思考,这两种方法有什么不同呢?事实上,对于第一种方案,min ()J w 的

效果就是得到三条平行的超平面,1

2

1

1

T T T w w =+∈==-∈w x x w x w x x ,第一个平面是第一类的

线性拟合结果,第二个平面是决策面,第三个平面是第二类的线性拟合结果,这种情况下,决策面刚好位于两个拟合平面的中央。

对于第二种情况,得到的三个超平面变为2121

1122

/()

/()

T T T N N N w N N N w =+∈==-+∈w x x w x w x x ,

故而当12N N > 时, 决策面就更靠近第一类所拟合的超平面这是因为此时:

212112/()/()N N N N N N +<+

相关文档
最新文档