模式识别实验二_第1页
模式识别实验二_第2页
模式识别实验二_第3页
模式识别实验二_第4页
模式识别实验二_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模式识别实验二 学院:电子与信息工程学院 学号:3115316005 姓名:黄 亮一、实验内容1、Iris数据集以鸢尾花的特征作为数量来源。该数据集由3种不同类型的鸢尾花的50个样本数据构成。使用感知器算法对3种类型的鸢尾花两两分类。2、产生以(0, 0),(1, 1),(1, 0),(0, 1)为中心的数据样本,其中(0,0)和(1,1)为一类, (1,0)和(0,1)为一类,使用BP算法对这两类数据点分类。3、使用BP算法对Iris 数据集中的3类样本分类。二、实验原理1、感知器算法感知器是两类分类的线性分类模型,其输入为样本的特征向量,输出为样本的类别,即通过样本的特征,就可以准确判断该

2、样本属于哪一类。感知器能解决的问题首先要求特征空间是线性可分的,其次是两类问题。其基本模型如下图所示:其中输入特征X=x0,x1,xn-1T ,连接权值W=w0,w1,wn-1T, b为偏置值,为了方便计算,在X和W中添加一维来表示偏置,X=x0,x1,xn-1,1T, W=w0,w1,wn-1,wnT,感知器的输出y=WTX。感知器学习算法是一种监督学习算法,训练感知器的过程中需要给出样本的特征值X和期望的输出值d,定义误差函数=(d -y)2,算法的优化目标是求得权值向量W,使得在所有样本上误差取得最小值。本次实验中使用梯度下降法来求取最优权值W。权值调整可表示为如下形式:W(n+1) =

3、 W(n) (/W)其中为学习速率,/W为误差关于权值的变化率,/W值如下式:/W = -2(d - y)X感知器学习算法的步骤如下:(1)随机初始化W(0)(2)选取一个样本计算/W(3)更新权值W(n+1) = W(n) (/W)(4)检测是否达到优化目标,达到优化目标则学习完成,否则继续步骤(2)2、BP算法由于感知器算法输入到输出为线性映射,所以只能较好的解决线性可分的分类问题。而非线性映射能较好的解决非线性可分问题,实验中以此为基础使用BP算法对数据进行分类。神经网络的基本结构如上图所示,网络输入X=x0, x1,xnT,输出Y=y0,y1,ymT 。Wij为第L层第i个神经元到第L

4、-1层神经元的连接权值,L层第i个神经元的输入用Ipi表示,输出用Opi表示,输入到输出的映射使用非线性函数f(x)=1/(1+exp(-x)。L层第i个神经元的输入可表示为,其中Opj为第L-1层的输出。BP算法是监督学习算法,训练网络时输入特征值和期望输出d,其误差可表示为E=(d -y)2,BP算法使用梯度下降法使得样本集在网络上的平均误差达到最小值。网络权值调整可表示为:W(l)ij(k+1) = W(l)ij(k) + pW(l)ij其中pW(l)ij = -(Ep/pW(l)ij),为算法的学习速率,(Ep/pW(l)ij)为误差对权值的变化率。输出层和隐含层的Ep/pW(l)ij

5、变化率计算方式是有差别的。(1)输出层Ep/pW(l)ijEp/pW(l)ij = (Ep/I(l)i)*( I(l)i/W(l)ij)I(l)i/W(l)ij = O(l-1)jEp/I(l)I = (Ep/O(l)i)*( O(l)i/I(l)i)O(l)i/I(l)I = O(l)i*(1- O(l)i)Ep/ O(l)I = -2(di - O(l)I)得到输出层Ep/pW(l)ijEp/pW(l)ij = -2(di O(l)i)O(l)i(1- O(l)i)O(l-1)j(2)隐含层Ep/pW(l)ijEp/pW(l)ij = (Ep/I(l)i)*( I(l)i/W(l)ij)I

6、(l)i/W(l)ij = O(l-1)jEp/I(l)I = (Ep/O(l)i)*( O(l)i/I(l)i)O(l)i/I(l)I = O(l)i*(1- O(l)i)Ep/O(l)I = 得到隐含层Ep/pW(l)ijEp/pW(l)ij = O(l)i(1- O(l)i) O(l-1)jBP算法的执行步骤如下:(1)初始化网络权值(2)输入训练样本对,计算各层输出(3)计算网络各层误差(4)调整各层权值(5)检测网络是否达到优化目标,若满足则训练结束,否则重复执行步骤(2)三、实验过程(1)使用感知器算法对Iris数据集两两分类输入特征向量X=x0, x1, x2, x3, 1T,权

7、值W=w0, w1, w2, w3, bT,首先从样本集中选取不同数量的样本训练感知器,在所有样本集上检测分类正确率。首先对第一类和第二类分类,其中一次运行结果如下表所示:训练样本数W0W1W2W3b样本集上正确分类个数10-0.10170.55390.73810.45800.643410020-0.07130.5378-0.4980-0.01510.1335100300.01950.3172-0.61470.4240.652810040-0.14870.4466-0.4245-0.22100.8340100第一类和第三类分类,其中一次运行结果如下表所示:训练样本数W0W1W2W3b样本集上正

8、确分类个数10-0.03030.3965-0.3894-0.04310.395810020-0.04500.2347-0.2671-0.32130.8237100300.22450.0163-0.4702-0.2303-0.587110040-0.04620.2677-0.2332-0.45470.7477100第二类和第三类分类,其中一次运行结果如下表所示:训练样本数W0W1W2W3b样本集上正确分类个数100.39400.6212-0.7665-0.33270.112891200.50440.5444-0.9726-0.28380.574193300.66920.3033-1.0313-0

9、.58480.998298400.66230.5751-1.1088-0.88181.133697选取所有样本训练感知器,学习速率为0.001。首先对第一类和第二类分类,第一类和第二类的平均平方误差最小大约在0.04左右,因此用0.04作为训练算法的终止条件,其中几次训练结果如下表:W0W1W2W3b迭代次数样本集上正确分类个数0.09530.3155-0.6207-0.07920.342626880100-0.00230.3635-0.5577-0.14530.602911738100-0.08170.4417-0.4509-0.31090.6185155811000.07530.3672-

10、0.5901-0.11280.230118034100对第一类和第三类进行分类,学习速率0.001,第一类和第三类所能达到的平均平方误差约在0.02左右,选取0.02作为学习算法的终止条件,其中几次的实验结果如下表示:W0W1W2W3b迭代次数样本集上正确分类个数0.10950.1281-0.3435-0.38410.5996189861000.19420.1215-0.4121-0.30320.2764342941000.18920.1207-0.4130-0.29750.304531294100对第二类和第三类进行分类,学习速率0.001,第二类和第三类所能达到的平均平方误差约在0.25左

11、右,选取0.25作为算法的终止条件,其中几次实验结果如下表所示:W0W1W2W3b迭代次数样本集上正确分类个数0.48180.6917-0.9053-0.84950.836439620970.67420.6881-1.1632-0.71970.704764422980.84190.5656-1.2379-0.79900.50709862596(2)使用BP算法对异或数据分类。以(0,0),(1,1),(1,0),(0,1)为中心,产生边长为0.4的正方形,(0,0),(1,1)为一类,(1,0),(0,1)为一类,使用BP算法对数据分类。构造三层神经网络,隐含层4个神经元,输入X=x0, x1

12、, 1T, d=1,0表示第一类,d=0,1T表示第二类。网络输出为y=y0, y1T,若y0大于y1则判为第一类,否则判为第二类。其中一次实验结果如下所示:隐含层权值:-3.4186 5.5870 1.62614.4379 1.9138 -4.2940Wh = 5.2180 6.3336 -2.1521 3.2383 4.2890 -0.6710输出层权值: 4.0898 5.4056 -5.4691 -2.4168 1.1144Wo = -4.0941 -5.4110 5.2468 2.7867 -1.2488 该网络能对样本集中的所有数据进行正确分类,训练停止的条件是网络在样本集上的平均

13、平方误差小于等于0.02。迭代次数127507次,在整个样本集上大约迭代400次左右。以(0,0),(1,1),(1,0),(0,1)为中心,产生边长为1的正方形,(0,0),(1,1)为一类,(1,0),(0,1)为一类,使用BP算法对数据分类。构造三层神经网络,隐含层5个神经元,学习速率0.005,平均误差小于等于0.08时学习结束。其中一次实验结果如下:隐含层权值:3.4223 2.3185 0.6337-0.1836 2.7699 -0.9258Wh = 7.2399 3.3606 -2.2081 2.6776 4.8163 -6.1144 6.9915 -6.2296 3.7189输

14、出层权值: -2.7949 1.7939 -6.6808 6.5898 7.3565 -0.9116 Wo = 3.0974 -2.0867 6.5947 -6.4006 -7.4555 0.8978(3)使用BP算法对Iris数据集分类Iris数据集包含三类样本,用1,0,0表示第一类,0,1,0表示第二类,0,0,1表示第三类。采用三层神经网络对数据分类,隐含层神经元为6个,学习速率0.001,其中一次实验得到的输出层和隐含层权值如下:输出层权值: -0.6591 5.6660 -0.5686 -2.2803 -0.4915 -1.1567 -0.3333wo = 0.4855 -5.70

15、36 0.7730 -6.0257 0.8285 0.5842 0.4079 -0.6897 -2.0370 -0.5895 6.6174 -1.1247 -0.2451 -0.7879隐含层权值:-0.1066 0.4925 0.7609 0.5546 0.9141 0.4362 2.0043 -3.0739 -1.0273 0.5063 0.7132 0.7303 0.2896 0.6459 0.7072 Wh = -2.7401 -2.6886 4.1146 4.4903 -2.7650 0.1781 0.9133 0.6227 0.6955 0.1221 -0.3074 -0.3541

16、 0.8468 0.7436 0.4610将所有样本输入神经网络,得到网络输出,分类错误三个,第二类样本的第21,23和34个样本被错误的分为第三类。四、实验分析(1)线性分类器对Iris数据分类从实验结果中可以看出,即使选取的样本比较少,第一类和第二类,第一类和第三类总是可以较好地分类。而第二类和第三类随着训练样本数的增加,分类器的性能也会相应的上升。可以看出,第一类数据和其它两类是线性可分的,第二类和第三类样本不是线性可分的。从多次实验中可以看出,虽然算法选取的结束条件是相同的,但初始权值的不同也会影响最终得到的分类器的预测能力。训练过程中需要确定合适的学习速率,在本次实验中,若选取学习速

17、率0.1则会出现算法不收敛的情况,权值会出现趋向无穷或非数的情况。(2)BP算法对异或数据分类BP算法能较好的解决异或问题的分类,在实验中正方形边长取0.4时,网络在样本集上的误差可以小于等于0.01,所有的样本都可以被正确分类。当正方形边长取1时,两类数据之间的界限不明显时,网络在样本上的误差可以达到0.08左右,400个样本中的378个样本被正确分类。(3)BP算法对Iris数据集分类使用BP算法对Iris数据集进行分类,其误差最小可以达到0.04左右,150个样本中的147个可以被正确的分类,第二类的第21,23和34个样本被错误的分为第三类。感知器算法中错误分类的样本也集中在第二类的第

18、21,23和34个样本。可以看出非线性算法可以解决非线性的分类问题,但不能达到百分之百的正确率。在训练过程中学习速率和隐含层单元个数的选择也是比较重要的,但本实验中Iris数据集并不是很复杂,所以在选取不同个数的隐含层单元时对分类的正确率并没有显著的提高。不同的学习速率会影响收敛的速度,学习速率越大则训练会越快,但也会出现误差一直有较大波动的情况。权值初始值的不同导致训练进入局部最小值点,误差停留在较大水平但不在下降。实验中也会出现误差长时间停留在某一个值附近,通过长时间的训练误差才会从新开始下降的情况。五、实验结论通过该次实验比较了线性分类器和非线性分类器,在Iris数据集上线性分类器和非线

19、性分类器的性能差距并不是很大。而对异或数据线性分类器是无法完成分类任务的,非线性分类器则可以比较好地解决该问题。BP算法训练耗时是比较长的,感知器算法训练耗时更短一些。BP算法中学习速率,隐含层单元个数等选择都是比较重要的,但由于时间关系,本次实验并没有深入讨论该问题。对于分类问题没有那种算法是最好的,针对问题选择合适的方法是比较重要的。附录实验代码(Matlab)一、感知器算法function w, samples = two_kind_classify(samples1, samples2, step, mine) rows1, cols1 = size(samples1);rows2,

20、cols2 = size(samples2); weight_temp = rand(cols1 + 1, 1);label1 = ones(rows1, 1);label2 = -ones(rows2, 1);samples1 = samples1 label1;samples2 = samples2 label2;samples = samples1; samples2;flag = true;counter = 1;h_last = my_mse(samples, weight_temp) c = 0;while flag x = samples(counter, 1:cols1); d

21、 = samples(counter, cols1+1); x = x 1; y = x * weight_temp; weight_temp = weight_temp + step * 2 *( d - y) * x' h = my_mse(samples, weight_temp) if h < mine break; end counter = counter + 1; if counter > rows1 + rows2 counter = 1; end c = c + 1;endw = weight_temp;function e = my_mse(sample

22、s, w) rows, cols = size(samples);totle_e = 0;for i=1:rows x = samples(i, 1:cols-1); x = x 1; d = samples(i, cols); y = x * w; temp_e = (d - y) 2; totle_e = totle_e + temp_e;ende = totle_e / rows;(2)BP算法function weight_hidden, weight_out = processBP(samples, targets, hiddens, step, minmse) rows_sampl

23、es, cols_samples = size(samples);rows_targets, cols_targets = size(targets);w_hidden = rand(hiddens, cols_samples + 1);w_out = rand(cols_targets, hiddens + 1);error_out = zeros(cols_targets, 1);error_hidden = zeros(hiddens, 1);e = meanError(samples, targets, w_hidden, w_out)counter = 1;i = 0; ww_out

24、 = zeros(cols_targets, hiddens+1);ww_hidden = zeros(hiddens, cols_samples+1);while e > minmse x = samples(counter, :); target = targets(counter, :); x = x 1' hid_out = sfunc(w_hidden * x); %ÁÐ hid_out_temp = hid_out; 1; out_out = sfunc(w_out * hid_out_temp); %ÁÐ error_out = -2*(target' - out_out).*out_out.*(1-out_out); w_out = w_out - step*error_out*hid

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论