1、1、实验目的1. 了解多元正态分布2. 对多元正态分布利用矩估计法进行参数估计,了解参数估计的过程3. 掌握利用贝叶斯最大后验概率准则对三类数据进行两两分类的方法2、实验原理Iris 数据集共有三组,分别为 setosa,versicolou 和 virginica,每一组都是一个单独的类别,此实验中,默认 setosa 为第一类,versicolou 为第二类,virginica 为第三类,每组 50 个数据,每个数据都是一个四维向量,且服从四维正态分布。即类别空间为: =1,2,3数据向量为: =(1,2,3,4)2.1 多元正态分布随机向量 X= 的分布密度函数有如下形式:(1,)(1,
2、2,)=()= 1(2)42|1212()1() (1)其中 为常量, 为随机向量的均值向量,B 为=(1,2,) =(1,2,)p*p 的协方差矩阵,则称 X 服从 p 元正态分布,记 为。因此,对于多(,)元正态分布而言,只需要确定均值向量和协方差矩阵即可确定概率密度函数。2.2 参数估计由于三组数据均服从四维正态分布,首先要确定数据的具体分布,因此在分类之前,利用一部分实验数据进行训练,分别得到三组数据的四维正态分布参数。即 ,分别为 setosa,versicolou 和 virginica 三组数(1,1),(2,2),(3,3)据的参数。实验中,参数估计采用矩估计法,即利用样本(训
3、练数据)的均值向量和协方差矩阵作为总体的均值向量和协方差矩阵的估计值,进而得到每组数据的分布密度函数。以第一组数据为例:setosa 中的数据 服从均值为四维列向=(1,2,3,4)量 ,4*4 维协方差矩阵 B 的四元正态分布。均值向量和协方1=(1,2,3,4)差矩阵的估计式为:1=1=1 (2)1=()()=1=1(1)(1) (3)从第一类数据中选取部分数据按照上式进行训练,得到第一类数据的正态分布参数,因而可求得其密度函数。三类数据都按照上公式,选取部分实验数据得出正态分布的均值向量和协方差矩阵。进而得到自己的概率密度公式()= 1(2)42|1212()1() (4)2.3 贝叶斯
4、最大后验概率准则利用贝叶斯准则对数据进行两两分类时,以贝叶斯公式为基础,利用测量到的对象特征配合必要的先验信息,求出两种可能分类情况的后验概率,选取后验概率大的,作为分类的结果。即最大后验概率准则,也称最小错误概率准则。以第一类和第二类为例,对这两组数据进行分类。两组数据经过参数估计之后,分别得到条件概率密度 , 。根据贝叶斯准则:(|1) (|2)(1)=(1)(1)() (5)(2)=(2)(2)() (6)贝叶斯最大后验概率准则进行分类时,根据输入的列向量 ,分=(1,2,3,4)别计算两类的后验概率,判 x 为后验概率的大类别,即:如果 则判别 x 为 类(第一类)即:(1) (2)
5、1(1)=(|1)(1)() (|2)(2)() =(2) (7)即:12=(|1)(|2)(2)(1)=21 (9)因此根据最大后验概率准则判断 x 所属的类别,转变为比较似然比 和阈值12的大小。21实验中首先求得两类数据的条件概率密度 和 ,关于先验概(|1) (|2)率 ,实验进行时,将待分类的两组数据合并放入一个 100*4 的矩(1)和 (2)阵中,每次随机选取待分类数据 x,因此先验概率(1) =(2) (9)故而,判别式(8)简化为: (1) (2) (10)因此,根据上式即可对输入向量 x 进行分类。如果 则判别 x 为 类(第一类)同理(|1)(|2) 1如果 则判别 x
6、为 类(第二类)(|2)(|1) 23、实验过程实验中,根据实验原理,首先对两组数据分别进行训练,得到其四维正态分布的密度函数,再根据最大后验概率准则进行分类。3.1 参数估计已知三组数据均为 的四元正态分布,即4(,)(1,2,3,4)=()= 1(2)42|1212()1()其中, 为均值向量,B 为协方差矩阵, 和 均为四维列向量。根据式(2)和 (3)对每组数据的均值向量和协方差矩阵进行估计。参数估计即选取部分数据进行训练,数据可以采用随机选取的方式,也可以从开始固定的选取若干数据进行训练。同时,参与训练的数据多少也会影响最后的分类结果。实验中尝试了不同的选取方法,结果如下:(1)从前
7、向后依次选取 10 个数据进行训练:(2)从前向后依次选取 15 个数据进行训练:(3)从前向后依次选取 20 个数据进行训练:(4)从前向后依次选取 25 个数据进行训练:(5)随机选取 15 个数据进行训练:(6)随机选取 20 个数据进行训练:3.2 贝叶斯分类学习分类时,本实验中,将待分类的两类数据合并为一个矩阵 test,然后每次随机的从 test 矩阵中抽取一维向量进行分类判别。因此先验概率满足(1) =(2) =12所以,实验中只需要根据估计的参数得出两类的概率密度函数(1)= 1(2)42|1|1212(1)11(1)(2)= 1(2)42|2|1212(2)21(2)对于输入
8、的列向量 x 带入上面两个公式中进行计算,则 x 归入概率大的一类。下面以第一类和第二类分类为例进行说明:实验中,m:表示参与训练的数据个数,进行分类学习时t:表示每次学习的次数,实验置为 10000,即每次随机选取 10000 次 x 进行分类test 矩阵: 将待分类的两组数据合并为一个矩阵 test,之后随机的从 test 矩阵中选择输入向量,保证先验概率相等W 向量: 表示随机选择的输入向量的位置,若 W(i)50 则说明此时的输入向量来自第二类set 向量: 输入的 x 判别属于第一类,则将 set 的相应位置 1,否则置 0ver 向量 :输入的 x 判别属于第二类,则将 ver
9、的相应位置 1,否则置 0最后比较 W 向量和 set 向量、ver 向量,若选择于第一类( W(i)51)也判别为第一类(set(i)=1 ) ,则说明判别正确。第二类同理。部分框图如下所示:相应部分代码如下:最后,统计 set 向量和 ver 向量中不为 0 的元素个数即在 10000 次学习分类时错误的次数。进行分类实验时,考虑到两方面的影响:(1)参数估计时训练样本的选取方式不同,分为固定选取样本和随机选取样本(2)参数估计时选取的样本数目同时,实验中,每次分类相当于进行 10000 次判别,由于选择输入矢量时具有随机性,因此针对同一 m(m 表示参与训练的样本数目) ,各进行 10
10、次实验进行比较。3.2.1 第一类与第二类(即 setosa 和 versicolou)(1)当训练样本从前向后固定选取时:当训练样本固定选取时,当参与训练的样本个数分别为为 6,10,15,均不会产生错误。(2)当训练样本随机选取时当训练样本随机选取时:m=6 时平均错误率为:7.274%m=10 时平均错误率为:0.109%m=15 时平均错误率为:0次数 1 2 3 4 5 6 7 8 9 10错误个数0 0 0 0 0 0 0 0 0 0m=6错误率0 0 0 0 0 0 0 0 0 0错误个数0 0 0 0 0 0 0 0 0 0m=10错误率0 0 0 0 0 0 0 0 0 0错
11、误个数0 0 0 0 0 0 0 0 0 0m=15错误率0 0 0 0 0 0 0 0 0 0次数 1 2 3 4 5 6 7 8 9 10错误个数1824 702 0 213 0 109 2027 495 1904 0m=6错误率18.24% 7.02% 0 2.13% 0 1.09% 20.27% 4.95% 19.04% 0错误个数0 0 0 0 0 0 109 0 0 0m=10错误率0 0 0 0 0 0 1.09% 0 0 0错误个数0 0 0 0 0 0 0 0 0 0m=15错误率0 0 0 0 0 0 0 0 0 03.2.2 第一类与第三类(即 setosa 和 virg
12、inica)(1)当训练样本从前向后固定选取时:当训练样本固定选取时,当参与训练的样本个数分别为为 6,10,15,均不会产生错误。(2)当训练样本随机选取时当训练样本随机选取时:m=6 时平均错误率为:6.634%m=10 时平均错误率为:0m=15 时平均错误率为:0次数 1 2 3 4 5 6 7 8 9 10错误个数0 0 0 0 0 0 0 0 0 0m=6错误率0 0 0 0 0 0 0 0 0 0错误个数0 0 0 0 0 0 0 0 0 0m=10错误率0 0 0 0 0 0 0 0 0 0错误个数0 0 0 0 0 0 0 0 0 0m=15错误率0 0 0 0 0 0 0
13、0 0 0次数 1 2 3 4 5 6 7 8 9 10错误个数0 3997 0 1025 0 0 720 950 0 0m=6错误率0 39.97% 0 10.25% 0 0 7.2% 9.5% 0 0错误个数0 0 0 0 0 0 0 0 0 0m=10错误率0 0 0 0 0 0 0 0 0 0错误个数0 0 0 0 0 0 0 0 0 0m=15错误率0 0 0 0 0 0 0 0 0 03.2.3 第二类与第三类(即 versicolou 和 virginica)(1)当训练样本从前向后固定选取时:当训练样本固定选取时:m=6 时平均错误率为:3.983%m=10 时平均错误率为:6
14、.096%m=15 时平均错误率为:4.038%m=50 时平均错误率为:3.049%次数 1 2 3 4 5 6 7 8 9 10错误个数410 397 413 369 389 409 430 416 387 363m=6错误率4.1% 3.97% 4.13% 3.69% 3.89% 4.09% 4.3% 4.16% 3.87% 3.63%错误个数626 622 561 613 677 610 605 614 613 555m=10错误率6.26% 6.22% 5.61% 6.13% 6.77% 6.1% 6.05% 6.14% 6.13% 5.55%错误个数399 396 409 399
15、355 434 431 393 406 416m=15错误率3.99% 3.96% 4.09% 3.99% 3.55% 4.34% 4.31% 3.93% 4.06% 4.16%错误个数325 285 323 298 299 302 306 315 288 308m=50错误率3.25% 2.85% 3.23% 2.98% 2.99% 3.02% 3.06% 3.15% 2.88% 3.08%(2)当训练样本随机选取时当训练样本随机选取时:m=6 时平均错误率为: 17.471%m=10 时平均错误率为: 9.341%m=15 时平均错误率为: 4.933%m=50 时平均错误率为: 2.98
16、2%次数 1 2 3 4 5 6 7 8 9 10错误个数637 3478 2000 504 1510 891 4250 2046 1000 1185m=6错误率6.37% 34.78% 20% 5.04% 15.1% 8.91% 42.5% 20.46% 10% 11.85%错误个数901 984 889 1260 382 1136 1130 959 780 920m=10错误率9.01% 9.84% 8.89% 12.6% 3.82% 11.36% 11.3% 9.59% 7.8% 9.2%错误个数478 328 726 531 100 657 395 286 740 692m=15错误率
17、4.78% 3.28% 7.26% 5.31% 1% 6.57% 3.95% 2.86% 7.4% 6.92%错误个数408 221 319 374 88 403 444 310 213 202m=50错误率4.08% 2.21% 3.19% 3.74% 0.88% 4.03% 4.44% 3.1% 2.13% 2.02%4、实验分析实验中,第一部分为参数估计,从实验中可得,以训练样本固定选取,样本个数 m=20 为例:从中可以看出,第一类和第二类,第一类和第三类相比较而言,均值向量和协方差矩阵均相差较大,即正态分布的形式差距较大,因此第一类较容易和其余两类分类。相比较而言,第二类和第三类的均
18、值向量和协方差矩阵相近,因此其对应的正态分布相似,所以第二组数据和第三组会比较难区分,这一点在后面的实验中也有反映。实验第二部分,在进行分类学习时,得到在样本选取方式不同和样本数目不同的情况下的分类错误率,汇总如下:(1)表一 第一类与第二类分类结果第一类与第二类 m=6 m=10 m=15固定样本参数估计 0 0 0随机样本参数估计 7.274% 0.109% 0从中可以看出,当参数估计的样本按照顺序固定选取时,在很小的样本数目下即可得到很好的分类结果。当样本随机选取时,在样本数目较少时会有一定的错误率,但是随着样本数目的增加,错误率降低。(2)表二 第一类与第三类分类结果第一类与第三类 m
19、=6 m=10 m=15固定样本参数估计 0 0 0随机样本参数估计 6.634% 0 0从中可以得到与上面相似的结论,同时,比较表一和表二可以发现,在随机样本参数估计的情况下,表二所展示的错误率更低,说明相较第二类数据而言,第一类与第三类数据的差别更大,更易分类。(3)表三 第二类与第三类分类结果第二类与第三类 m=6 m=10 m=15 m=50固定样本参数估计 3.983% 6.096% 4.038% 3.049%随机样本参数估计 17.471% 9.341% 4.933% 2.982%从中可以看出,第二类数据与第三类数据不论在什么情况下,分类错误率都较大。甚至当用所有的数据进行参数估计时(m=50 ) ,分类结果仍然会有错误。由此可见,这两组数据较为相似,难以分类。这一点也从上面计算其正态分布的的参数可以想见。5、实验结果实验得出,第一组数据与第二组数据较易分类,当训练样本数目在 10 左右时就能得到较高的正确率,进而当训练样本数目为 15 时几乎不出错。第一组数据与第二组数据更容易分类,当训练样本数目为 10 时几乎就不出错。但同时,第二组数据由于与第三组数据过于相似,所以很难分类。