随机森林算法在选择决策中的应用研究
2021-01-13赵明梅金洋洋王语嘉曾孟佳
赵明梅 金洋洋 王语嘉 曾孟佳
摘要:提出了一种运用以决策树为基学习器的随机森林辅助用户做出决策的方法。根据待决策的问题,多次从收集的数据中随机抽取样本和特征,生成多个训练集,通过取众数或取均值的形式确定结果。人们只需填入对应的属性值,便会通过上述建立的决策模型获得结果。为选择困难人群提供科学决策的方式,帮助其缓解面临决策时的心理压力,同时提供了一个较为正确的决策意见,对其身心发展有重大意义。
关键词:决策树;随机森林;选择困难
中图分类号:TP393文献标志码:A文章编号:1008-1739(2021)22-56-4
0引言
選择是人们日常生活中常常要面对的事情,而担心错过最佳选择而举棋不定和由于缺乏目标而无法决策,是人们在选择时的常见表现。中国青年报社曾对2 007名受访者开展了一项调查,数据显示84.7%的受访者自称有选择困难症,其中80、90及00后占比高达79.6%,而最容易出现选择困难的前3名场景分别为购物选商品、吃饭选餐厅和菜品以及规划出游行程,分别占54.0%,53.4%,42.5%。同时44.7%的受访者感觉选择困难症浪费时间和精力,使自己心情烦躁;41.2%的受访者指出选择困难症会让自己对生活缺少掌控感[1]。
基于上述问题,本文提出通过软件对需要做出选择问题的背景信息做运算,用其结果帮助有选择困难的人群做出决策,提高效率。其基本思想是根据待决策问题,多次从收集的数据中随机抽取样本和特征,生成多个训练集,将训练数据投入随机森林,通过取众数或取均值的形式确定结果。
1随机森林算法
1.1决策树
决策树[2]是有监督的机器学习算法,是一种与流程图相似的树状结构,主要解决分类问题[3]。这种方法根据数据属性特征对其进行分类,记录为做出决策而进行的一系列选择过程。
1.2决策树的构建
决策树由根节点、内部节点、叶子节点组成。根节点无入边,有多条出边,是决策树最上面的节点,同时也是决策判断的起始点。节点的每一条出边对应一个内部节点或者叶子节点。内部节点代表问题的决策,通常对应决策所依据的属性。每一个叶子节点代表分类的标签值,决策树判断过程实际上就是决策树由上到下的一个遍历过程,每一个节点不同的判断结果会引入不同的分支,最后进入不同的叶子节点,获得不同的标签值。
式中,表示通过第项属性判断标签的正确率;表示属性的个数。根据某一项基尼系数非常小的属性对决策进行判断,则认为这一属性是一项准确性高的区分类别的属性。在构建决策树分类模型时,首先计算不同属性基尼系数的加权平均,选择最小的一个属性作为根节点,基尼系数的大小随事件发生的概率而改变,基尼指数图如图1所示。每确定一个节点便对数据进行测试。在后续的构建中,若节点中对象均为同类,则无需继续划分,直接给出标签值;若节点中对象为不同类,则在剩余属性中选择基尼系数最小的作为当前节点继续划分,直到决策树各节点中对象均为同类或者所有属性都被用于构建决策树。
1.3决策树的剪枝
如果决策树在构建中考虑了所有的训练数据集,得到的决策树就会很庞大。虽然这样可以保证训练数据集的决策正确率达到100%,但是由于过多考虑所有数据,将数据分割的过于零散,致使决策树学习到一些噪声点和错误点,出现过拟合现象。
通过剪枝可以解决过拟合问题,决策树有2种常用的修剪办法[4]:
①预剪枝:在构造决策树的过程中,每个节点在划分前先进行估计,若当前的划分不能让决策树在验证集上的准确率得到提高,则停止划分,并将节点标记为叶子节点。假设要划分的属性为a,划分在a属性下的样本集合为。若划分属性a,则将集合划分成多个子集,每个子集中个数最多的类别作为该子集的标签,然后计算验证集上的准确率1;若不划分属性a,则将集合中个数最多的类别作为属性a的标签,计算验证集上的准确率2,若1< 2,则停止属性a的划分。
②后剪枝:在决策树构建完之后,自下向上地对每个非叶子节点进行考察,选择该节点中个数最多的类别作为标签,试将节点的子树替换为叶子节点,若能够使得决策树在验证集上的准确率升高,则将该子树替换成叶子节点。
对比2种方法,预剪枝可能造成欠拟合,后剪枝的训练开销比较大。后剪枝通常比预剪枝保留的分支多,造成欠拟合的可能性很小,但后剪枝过程是自下向上的,其训练时间开销比预剪枝大。
1.4随机森林算法
随机森林最早是由Leo Breiman和Adele Cutler[5]提出,是一种利用多棵树对样本进行训练、预测的分类器,兼顾了解决回归问题和分类问题的能力。随机森林算法由一定数量的决策树组成,决策树的数量越大,算法的鲁棒性越强,精度越高[6]。随机森林在Bagging算法的基础上,在决策树的构建中加入随机属性的选择。随机森林中的每一颗决策树都是随机抽取训练集的一小部分进行训练,即看问题的角度不一样,以保证每个决策树的输出相似但不一样。
在随机森林内决策树的训练过程中,从完整数据集中有放回地进行次采样,每次随机取出个样本,个特征,生成个训练集,分别训练构成个决策树模型。给定一个新的识别对象,随机森林中的每一棵树都会根据这个对象的属性得出一个分类结果并且以投票的形式保存下来。对于分类问题,随机森林选出票数最高的分类结果作为这个森林的分类结果。对于回归问题,对每一棵决策树的输出求均值得到结果[7]。随机森林决策的流程如图2所示。
鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树。决策树可以用于分类又可以解决回归问题。作为分类器时,由于有多个决策树模型,即使有部分数据缺失,随机森林也能保持很高的分类精度。另外,决策树的增加并不会使随机森林出现过度拟合,可以对数量庞大的较高维数据进行分类。
2实现
2.1模型的建立
①参数选择:在建立决策树模型之前首先要选取构建决策树的参数[8-9]。人们纠结的方面主要有衣、食、住、行。例如,在吃什么方面,参数选择主要包括用餐人数、忌口、喜好、所需时间和经济状况等。
②知识表示:对于已经确认要录入的参数,利用人工智能与知识工程的表示理論,分析出不同选择的具体信息结构特征[10-11],将各个相关因素的信息划分为不同的信息侧面,之后再对每个信息侧面进行再划分,从而形成树形结构。
③建立模型:根据目标的设定和运算要求利用随机森林算法将相应的离散化信息与变量映射到模型中,计算机来完成数据映射的任务,并进行剪枝操作,最终得出适合用户的最佳选择。
2.2随机森林算法实例分析
对于选择困难中最普遍的一个选择困难就是吃什么。因此,用随机森林的算法尝试去解决晚饭吃什么。现在人们出去吃饭经常去的就是火锅店和日料店,利用随机森林算法帮助那些不知道吃火锅还是日料的用户做出选择。首先收集数据,并从中提取用户相关信息共48条,如表1所示。
表1训练集中一共有48个样本。按照人们出去吃饭的选择分为“火锅”和“日料”来构建决策树模型,决策树模型如图3所示。
随机森林名称中的随机指2种方面的随机:第1种是不放回的随机个特征(如几个人,能不能吃辣等);第2种是有放回的随机个样本(要小于或等于总样本)。
因此令=2,=4,建立3棵决策树,其中样本随机选择编号为2,4,5,48的样本。
本文以决策树为基学习器,因此,首先建立第1棵决策树,随机选择2个特征人数和时间。由于时间的信息增益比人数的信息增益大,因此根节点为时间特征,第1棵决策树如图4所示。
接下来按照同样的方法再随机选择2个特征,如辣和经济,比较信息增益值可得经济为根节点。第2棵决策树如图5所示。
同理选取海鲜和肉作为特征,得到第3棵决策树,如图6所示。
这样就建立好了3棵决策树,接着把用户数据代入上述3棵树,以判断是去火锅店还是日料店。用户数据如表3所示,根据3棵决策树可得出3个结果,如表4所示。
用户的数据中,人数和时间的特征值通过图3的决策过程分析得到,第1棵决策树的结果为火锅;经济和辣的特征值通过第2棵决策树的决策流程分析的结果为日料;肉和海鲜的特征值通过图5的决策流程分析的结果为日料。综合3棵决策树的结果,结果是火锅的决策树有1棵,结果是日料的决策树有2棵,以少数服从多数的原则,最后推荐用户选择日料店。
3结束语
以用户选择吃火锅还是吃日料的问题为例,通过随机森林算法的应用,分析了该算法帮助用户做选择的过程。同类问题,如是否买车、是否买房、是否去相亲等都可以通过在收集用户属性后,采用随机森林算法帮助用户做决策。这种方法由于使用了用户属性值,得到的分类决策结果比完全随机决策结果要更为准确,更满足用户需求。因此,采用随机森林算法解决选择困难的问题是可行的,可以在其他更多场景推广应用。
参考文献
[1]崔艳宇,杜园春. 84.7%受访者自称有选择困难症[N].中国青年报, 2018.01.302.
[2]亓文娟,晏杰.决策树算法在大学生心理健康测评系统中的应用[J].计算机系统应用,2015,24(11):230-234.
[3] ZHENG Hui,HE Jing,ZHANG Yanchun,et al. A General Model for Fuzzy Decision Tree and Fuzzy Random Forest[J]. Computational Intelligence, 2019, 35(2): 310-335.
[4]郑伟,马楠.一种改进的决策树后剪枝算法磁[J].计算机与数字工程, 2015, 43(6):960-966,971.
[5] RAJKOMAR A, DEAN J, KOHANE I,et al. Machine Learning in Medicine[J]. New England Journal of Medicine, 2019,380(14):1347-1358.
[6]张洁慧.决策树分析法在企业风险管理应对策略选择中的应用[J].现代经济信息,2017(14):57,59.
[7]刘贵全,叶剑鸣,印金汝.基于分类聚类的故障预警算法: CN106203519A[P].2016.
[8]张良均,王路,谭立云,等.Python数据分析与挖掘实战[M].北京:机械工业出版社,2016.
[9]杨萌,聂铁铮,申德荣,等.基于随机森林的实体识别方法[J].集成技术, 2018, 7(2):57-68.
[10]吕建驰.机器学习算法在数据挖掘中的应用[J].电子世界, 2019, 571(13):62-63.
[11]金巨波,葛雷,徐秀丽.计算机数据挖掘技术的开发及其应用[J].浙江水利水电学院学报,2019,31(6):68-72.