时间:2024-04-25
杜春澎
摘要:本文通过对机器学习中各类分类方法的学习之后,对输血服务中心的数据集采用决策树(分类树)、Adaboost、Bagging、随机森林、支持向量机、最近邻方法和神经网络等七类方法对其进行分类,并采用五折交叉验证法评价预测精度,结果发现支持向量机的是最好的分类方法。
关键词:机器学习;分类;交叉验证
1.引言
分类就是经典统计中所说的判别,当因变量有多个水平且自变量也有分类变量的情况下,判别分析就不可用,此时就要采用机器学习或数据挖掘的方法,比如决策树的分类树、Adaboost、Bagging、随机森林、支持向量机、最近邻方法和神经网络等。
2.数据实验
本文研究的数据来源于the UC Irvine机器学习数据库,下载地址:http://archive.ics.uci.edu/ml/datasets/Blood+Transfusion+Service+Center。该数据集有748个观测值,5个变量,分别是: Recency - months since last donation(定量);Frequency - total number of donation(定量);Monetary - total blood donated in c.c.(定量);Time - months since first donation(定量);Class -whether he/she donated blood in March 2007(定性)。最后一个分类变量的水平为:Class(whether he/she donated blood in March 2007 )有两个水平:1=献血,0=没献血。通过对数据的查看,可以用前四个变量作为自变量来预测作为因变量C (最后一个变量)的类别。
3.机器学习
机器学习能使计算机在没有明确编程的情况下自主学习。不同于传统方法的模型驱动,机器学习是数据驱动,它探索构建了从数据中学习并对数据进行预测的算法。传统的统计模型对数据的分布都有一定的要求或假定,但在现实中,真实的数据可能并不满足那些假定或要求,若再用传统方法,它们的某些优良性质将不能得到,甚至得出的结论都有可能错误。此时选择机器学习的方法将更加合理,它不需要对数据分布做任何假定,且产生的结果也可用交叉验证的方法进行评价。
3.1 决策树分类(分类树)
决策树分类是通过一定的规则对数据样本进行分类的过程,当数据结构为连续形变量时,称为决策树回归。使用R软件的程序包rpart.plot进行决策树回归,得出的分类结果如决策树如表1。
其中,行是真实类,列是预测类。一共有138个观测值被分错,误判率为0.184492。再利用函数Fold()所产生的5个随机数据集做五折交叉验证,给出测试集的分类平均误判率为0.2271857。
3.2 Adaboost分类
Adaboost是Boosting的一种,是一种组合方法,这里用的程序包是adabag,分类结果如表2。
表里一共有101个观测值被分错,误判率为0.135026。通过五折交叉验证,给出测试集的分类平均误判率为0.2592931。
3.3 Bagging分类
Bagging分类是一个最简单的基于分类树的组合方法,它利用了自助法放回抽样。这里用的程序包是adabag中的函数bagging(),分类结果如表3。
表里一共有133个观测值被分错,误判率为0.1778075。通过五折交叉验证,给出测试集的分类平均误判率为0.2271857。
3.4 随机森林分类
随机森林也是从原始数据抽取一定数量的自助法样本,程序包randomForest包含了随机森林函数randomForest(),分类结果如表4。
表里一共有63个观测值被分错,误判率0.08823529。通过五折交叉验证,给出测试集的分类平均误判率为0.253915。
3.5 支持向量机分类
支持向量机分类是用程序包e1071中的svm()函数和程序包kernlab中的ksvm()函数来做SVM分类,两个不同函数的分类结果分别如表5和表6。
表里一共有158个观测值被分错,误判率为0.2112299 。
表里一共有138个观测值被分错,误判率为0.184492。通過五折交叉验证,给出测试集的分类平均误判率为0.2339329和0.2151588。
3.6 最近邻方法分类
最近邻方法可能是所有算法中最简单的方法,它基于训练集对测试集进行分类。用程序包kknn中的kknn()函数来对输血中心的全部数据做分类,程序代码中选项的默认值为:k=7,distance=2(Minkowski距离),分类结果如表7。
表里一共有110个观测值被分错,误判率为0.1470588。通过五折交叉验证,给出测试集的分类平均误判率为0.2526174。
3.6 神经网络分类
人工神经网络是由大量的节点构成,其相关原理是,将上层节点的值加权后传递给下一层,依次传递到最终输出节点,再根据输出节点的误差大小情况给前面节点层一个激励或者抑制的信号,从而改变权重,最后经过反复传递,达到输出误差在某个范围内。利用程序包nnet的函数nnet()对输血中心的全部数据进行拟合,得到误判率为0.2348993,此时的size=2。
通过五折交叉验证,给出测试集的分类平均误判率为0.2312573,此时size=2;当size=1时,误判率为0.2326264;当size=3时,误判率为0.2379597。当size增大时,误判率也随之增大,通过比较可知,size=2时最为合适。
4.结果分析
运用以上八种方法来对输血中心数据拟合的五折交叉验证测试集的误判率归纳如下表8所示。
由表可知,在八种方法的五折交叉验证测试集误判率中,误判率最低的是支持向量机(ksvm)为0.2151588,其次是决策树和bagging,误判率最高的是adaboost为0.2592931。故针对输血服务中心的数据而言,进行分类最好的方法就是采用支持向量机分类法。
参考文献:
[1]吴喜之.复杂数据统计方法:基于R的应用[M].北京:中国人民大学出版社,2013:54-69.
[2]唐华松,姚耀文.数据挖掘中决策树算法的探讨[J].计算机应用研究,2001,18(8):18-19.
[3]宋捷,吴喜之.一种新的Boosting回归树方法[J].统计与信息论坛,2010,25(5):9-13.
[4]王鸿斌,张立毅,胡志军.人工神经网络理论及其应用[J].山西电子技术,2006(2):41-43.
[5]王定成,方廷健,高理富,等.支持向量机回归在线建模及应用[J].控制与决策,2003,18(1):89-91.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!