1、模式识别关于男女生身高和体重BP算法模式识别实验报告(二) 学院: 专业: 学号: 姓名:XXXX教师: 1实验目的通过实际编程操作,实现对课堂上所学习的BP神经网络、SVM支持向量机和决策树这三种方法的应用,加深理解,同时锻炼自己的动手实践能力。2实验内容本次实验提供的样本数据有149个,每个数据提取5个特征,即身高、体重、是否喜欢数学、是否喜欢文学及是否喜欢运动,分别将样本数据用于对BP神经网络分类器、SVM支持向量机和决策树训练,用测试数据测试分类器的效果,采用交叉验证的方式实现对于性能指标的评判。具体要求如下:BP神经网络-自行编写代码完成后向传播算法,采用交叉验证的方式实现对于性能指
2、标的评判(包含SE,SP,ACC和AUC,AUC的计算可以基于平台的软件包);SVM支持向量机-采用平台提供的软件包进行分类器的设计以及测试,尝试不同的核函数设计分类器,采用交叉验证的方式实现对于性能指标的评判;决策树-采用平台提供的软件包进行分类器的设计以及测试,采用交叉验证的方式实现对于性能指标的评判(包含SE,SP,ACC和AUC,AUC的计算基于平台的软件包)。3实验平台专业研究方向为图像处理,用的较多的编程语言为C+,因此此次程序编写用的平台是VisualStudio及opencv,其中的BP神经网络为自己独立编写, SVM支持向量机和决策树通过调用Opencv3.0库中相应的库函数
3、并进行相应的配置进行实现。将Excel中的119个数据作为样本数据,其余30个作为分类器性能的测试数据。 4实验过程与结果分析4.1基于BP神经网络的分类器设计 BP神经网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。其学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。在独自设计的BP神经中,激励函数采用sigmod函数,输入层节点个数为5,一个隐层并且节点数为5,输出节点数为1个,通过读取exc
4、el中相应的特征数据,进行训练,再用测试数据进行测试。如图4-1为所设计的BP类。 图4-1 BP类的设计源码如图4-1,其中重要的两个函数便是神经网络的训练train和识别函数recognize,具体的源码如图4-2,图4-3,图4-4。其中训练函数包括了前向传播以及后向传播的权值修正,而识别函数只包括了前向传播后输出计算结果。图4-2 BP分类器的训练函数一图4-3 BP分类器的训练函数二图4-4 BP分类器的识别函数输入119个样本数据进行训练后,输入30个测试数据进行测试,测试结果如图4-5所示。通过数据可以看出共30个测试数据,其中有两个正样本被分为负样本,即男生分类成了女生。其中R
5、OC曲线(受试者工作特性曲线)如图4-6,可见该曲线的AUC值为0.96表示分类器的效果是较好的,从敏感性(SE)、特异性(SP)和准确率(ACC)也可以看出分类器的效果还是不错的。图4-5 BP测试结果图4-6 BP测试结果的ROC曲线4.2基于SVM的分类器设计SVM即支持向量机。SVM的主要思想可以概括为两点:第一是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。通常在线性不可分的情况下,通过核函数进行非线性映射达到线性可分的效果。其
6、中核函数的类型包括线型、多项式型和RBF高斯核等,采用不同的核函数可能造成的分类效果有所区别,在本实验中分别利用三种核函数对测试数据进行测试。SVM调用Opencv3.0中的库函数来实现,Opencv3.0所集成的SVM为libsvm。源码如图4-7。 图4-7 SVM调用源码由图4-7可以看到,首先对SVM进行了参数设置,接着调用训练函数,接着进行测试数据测试,分别采用高斯核、线型核和SIGMOD核测试结果如图4-8到4-10,所对应的ROC曲线如图4-11到4-13所示。图4-8 高斯核分类结果图4-9 线型核分类结果图4-10 SIGMOD核分类结果 图4-11 高斯核分类ROC曲线图4
7、-12 线型核分类ROC曲线图4-13 SIGMOD核分类ROC曲线 由上面的图4-8到图4-13可以看出,高斯核出现2个分类错误,线性核出现3个分类错误,而sigmod核未出现分类错误,再结合ROC曲线及AUC值,可以看出对于测试数据,sigmod核函数具有最高的分类效果,可以实现完全的正确分类,而高斯核其次,线性核性能稍微差一点,出现误差的类型都是将男生错分为了女生。4.3基于决策树的分类器设计决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由
8、于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。在本次实验中,调用Opencv3.0中的决策树类来进行数据的训练与分类。调用源码如图4-14。图4-14 决策树调用源码在图4-14中,首先初始化决策树,设置了决策树的最大深度等初始化信息,接着进行样本数据训练,最后进行预测数据预测,其结果如图4-15和图4-16。 图4-15 决策树测试结果 图4-16 决策树测试结果ROC曲线由图4-15到图4-16可以看出,在决策树分类器对于测试数据的分类中也出现了两个分类错误,也是将男生分为了女生。4.4三种分类器对比通
9、过以上三种分类器的测试结果,可以发现他们有各自的优缺点,具体如下:分类器种类优点缺点BP神经网络1、 属于全局逼近的方法,有较好的泛化能力;2、 连接权个数多,有较好的容错性;1、采用梯度下降法,速度较慢;2、存在局部极值问题;SVM1、 可以解决小样本情况下的机器学习问题;2、 可以解决高维、非线性问题;3、 具有较小的鲁棒性,可避免神经网络结构的选择和局部极小点问题;1、 对缺失数据敏感;2、 对非线性问题没有通用解决方案;决策树1、 针对多类、多峰非常方便,设计方式灵活多样且便于利用先验知识;2、 可以直观地看到决策流程,易于理解和解释;3、 在相对短的时间内可以对大型数据源做出可行且效
10、果良好的结果;1、 对各类别样本数量不一致的数据,信息增益的结果偏向于那些具有更多数值的特征;2、 会出现过度拟合问题。5.总结通过这次实验,对课堂上所学习的BP神经网络、SVM、决策树进行了学习巩固,加深了对其原理的理解,通过编程完成了对分类器的训练和预测的实验过程。通过参数的调节所设计的分类器在30个测试数据中都有较好的分类效果,其中最差的仅将三个数据分错,通过观察可以发现,分类错误主要都是将男生误分类成了女生,原因在于该男生的特征数据与女生较为相似,这应该是造成分类错误的一大原因,同时分类器在编程设计当中也存在很多问题,分类效果有待提高。通过这次的实验,发现了自己的很多不足,上课要更认真的听讲,及时解决遇到的问题,编程能力也急需提高,MATLAB强大的功能要学会使用,同时要进一步提高C+变成水平,为以后实际的工程项目及应用打好基础。THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1