版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习案例报告——基于随机森林的收入预测姓名:李山雨【摘要】本文拟对kaggle上的一篇关于随机森林模型的文章进行案例调研,对文章的各个环节,包括案例描述、数据检视、特征工程、模型训练和模型优化使用的方法进行梳理并对文章的亮点与不足做出相应的反思。该文章的任务是基于随机森林模型,结合人的15项特征来预测该人年收入是否超过5万美元。数据源是美国人口普查局1994年的普查数据,调查对象数量为32561。这篇文章的亮点有:1.特征工程使用了简单而且容易理解的方法;2.进行充分的数据检视,对后续数据处理有了启示性作用;3、通过计算特征重要度过滤不重要的特征,展现了模型可以不断优化的可能性。主要不足有:1、没有解决高基数问题;2.并没有优化模型参数;3.没有处理离群值。【关键词】随机森林、收入、预测、探索性数据分析
案例描述案例链接:/prashant111/random-forest-classifier-feature-importance作者:PrashantBanerjee随着中国人均收入的不断增长,人们之间的收入差异变得越来越大,形成了不同的收入群体。收入水平在很大程度上决定了消费结构,因此消费者的收入与购买能力直接相关。对于众多电商企业而言,针对不同收入消费者群体采取针对性的营销策略很重要。但是由于收入信息涉及到个人隐私,消费者的收入水平往往难以直接获取。如果电商企业能通过其他指标来间接预测消费者的收入层次,那么它将有助于制定其营销策略。本次机器学习案例的意义也是与上述内容一脉相承。本案例基于随机森林利用人的各项特征来预测人的收入层次。该案例利用成人人口普查数据集,是从1994年美国人口普查局数据库中提取的数据。数据集一共有32561行数据,每行数据代表一个人,包含该人的15项特征。特征包括年龄(age)、雇佣形式(workclass)、个人权重(fnlwgt)、最终学历(education)、受教育时间(education_num)、婚姻状况(marital_status)、职业(occupation)、家庭内的关系(relationship)、种族(race)、性别(sex)、资本收益(capital_gain)、资本损失(capital_loss)、每周工作时间(hours_per_week)、祖国(native_coutry)、收入(income),如图1。其中fnlwgt是人口普查局赋予每个人的个人权重,是一个大于零的数值。图SEQ图\*ARABIC1收入(income)是一个定类变量,取值为“超过5万美元”和“不超过5万美元”两类。这个案例的目标是利用人的各项特征来预测某人的年收入是否超过图SEQ图\*ARABIC1
数据检视检视定类变量图图SEQ图\*ARABIC2如图2,分类变量有九种,分别是雇佣形式、职业、家庭内的关系、种族、性别、祖国和收入。图3展示了雇佣形式(workclass)变量在各个取值上的频率。可以发现这个数据集是使用“?”来表示缺失值的。因此用问号表示的缺失值需要编码成python程序可以识别的缺失值,如NaN。图SEQ图\*ARABIC3图SEQ图\*ARABIC3图SEQ图\*ARABIC4图SEQ图\*ARABIC4这张图展示了收入的饼状图和条形图。可以看到年收入超过5万美元的人占被调查人口中的24%。性别与收入图SEQ图\*ARABIC5图SEQ图\*ARABIC5性别与收入图SEQ图\*ARABIC6从这张图可以看到,白人的占比在收入超过5万美元的群体中更高,说明数据集当中白人更有可能年收入超过5图SEQ图\*ARABIC6雇佣形式与收入图SEQ图\*ARABIC图SEQ图\*ARABIC7这张图描述的是不同雇佣形式在收入上的差异。在几乎所有的雇佣形式类别中,年收入低于五万美元的比例很高,而且这种趋势在个人(private)类别当中更加明显。还有一些反例,比如在有限责任公司(self-emp-inc)类别当中,收入超过5万的人比低于5万的人更多。图SEQ图\*ARABIC8图SEQ图\*ARABIC8图8描述不同职业与祖国的频数分布。从职业分布图(左图)中可以发现,不同职业类型之间的分布是比较均匀的。但是私人住宅服务(priv-hous-serv)和军队(armed-forcer)类职业的频数很低,与频数最高的职业有相当大的差异。祖国变量的分布(右图)则更加极端。几乎所有被调查者的祖国均是美国。在42个国家中,实际上很难发现以美国以外的国家为祖国的人。作者在这里提到了高基数(highcardinality)的问题。基数(cardinality)是每个定类变量的不同类别个数。如果基数太高(如大于100)那么它就会影响机器学习模型的效果。祖国变量的基数为42,属于较高水平,而且类别的分布非常不均衡,如果对它直接进行One-hot编码,则会产生m*42(m为行数)的稀疏矩阵,很有可能对模型的效果产生不良影响。探索定比变量图SEQ图\*ARABIC9图SEQ图\*ARABIC9定比变量有6种,分别为年龄、个人权重、受教育时间、资本收益、资本损失、周工作时间。在这个数据集中,定比变量是不存在缺失值的,如图10所示。下面将探索定比变量的分布及定比变量之间的关系。图SEQ图\*ARABIC10图SEQ图\*ARABIC10图SEQ图\*ARABIC11图SEQ图\*ARABIC12图SEQ图\*ARABIC11图SEQ图\*ARABIC12图11是年龄的直方图,在上面还画出了用核密度函数估计的概率密度函数。可以看出,年龄分布较为右偏,调查对象均为成人,其中年轻的人较多。图12是描述不同收入群体当中年龄分布的箱线图。在收入低于5万以下的人群中,大约有一半的人的年龄集中在25岁和45岁之间,而且四分位差较大。而在收入超过5万的人群中,大约有一半的人的年龄集中在35岁和55岁之间,而且四分位差较小。这表明收入高于5万的调查对象的年龄比较高,而且收入高的人群集中在相对小的年龄范围内。定比变量的相关性矩阵从图SEQ图\*ARABIC13数值型变量之间的相关性矩阵可以看出,两两变量之间没有强相关关系。但是还有一些值得关注的弱相关关系,例如受教育时间(education_num)越多,资本收益(capital_gain)越高(0.1226),受教育时间越高,每周工作时间(hours_per_week)图SEQ图\*ARABIC13两两数值型变量之间的关系,可以被散点图矩阵更形象地展示出来,如图14所示。图SEQ图\*ARABIC14图SEQ图\*ARABIC14根据模型对数据的要求和提升模型效果的考虑,原始数据必须经过特征工程再输入模型。以下内容阐述了各方面的数据预处理与特征工程。缺失值处理这个数据集只有定类变量才有缺失值,具体来说包含缺失值的变量只有雇佣形式、职业、祖国。原始数据的缺失值用问号表示,因此作者首先把“?”转换为Nan,其次用频数最高的类别填充了该缺失值。这是一种常用而简单的定类变量缺失值填补方法。数据编码作者对多分类定类变量做了独热编码(one-hotencoding)。独热编码将多分类变量中的每个类别拆成单独的二进制哑变量,如果某样本属于该类别则取值为1,否则为0。独热编码要求定类变量的每个类别之间是相互独立的关系,如果类别之间有顺序关系(定序变量),则在独热编码的过程中顺序的信息将会被丢失掉。本案例的定类变量中,没有一个定类变量包含顺序的信息,所以不会产生遗漏顺序信息的情况。如果不进行独热编码,机器学习模型可能把定类变量误解为一个数值型变量,对类别之间的关系产生不正确的理解。比如说我们把白人、黑人、黄种人分别编码为1,2,3,这可能导致计算机认为白人(1)+黑人(2)=黄种人(3)这个显然不正确。图SEQ图\*ARABIC15雇佣形式(workclass)原来有8中类别,它经过独热编码后被拆成了8个哑变量,如图15所示。进行独热编码后每行数据的特征数量由15增加到了105图SEQ图\*ARABIC15归一化处理在训练模型之前,我们需要对每个特征变量做归一化处理。归一化的目的就是消除每个变量的量纲单位,从而保证变量之间的可比性。常用的归一化方法有一下5种。1.StandardScaler:即将变量的均值与方差分别置为0和1,让数据符合标准正太分布。该方法要求数据分布近似服从高斯分布。适用于需要计算距离或者相似性的场景2.RobustScaler:将变量的中位数置为0,IQR(上四分位数、下四分位数)置为1。这么做的效果是受离群值的影响小。3.MinMaxScaler(a,b):将变量的最小值置为a,最大值置为b。如果最小最大值不稳定,有可能影响后续使用效果也不稳定,在实际应用当中可以选取其他的常量来替代最小值和最大值。4.MaxAbsScaler:把变量值的绝对值限定在[0,1]区间内。如果变量值不小于零,则它的效果等于MinMaxScaler5.Normalizer:前面四种方法是对数据的每一列进行的归一化。而这个方法对数据的每一行做归一化,使得每一行向量的欧氏距离变成1。作者在本案例中使用了RobustScaler。其可能的原因是他省略了离群值处理阶段,因此归一化方法使用受离群值影响较小的RobustScaler。而且数据集中很多数值型变量都不服从高斯分布,所以不太符合使用standardScaler的要求。模型训练本案例要解决的是二分类问题,作者重点采用了随机森林算法。下面将介绍随机森林的基本原理与随机森林在sklearn软件包中的实现方法。随机森林概述随机森林是多个决策树集成的分类器。随机森林可以理解为Bagging方法的扩展变体。它在Bagging方法的基础上引入了随机属性选择。即,在训练集中有放回地抽取样本集,然后在所有特征中无放回地选取若干个特征来构造一个决策树。按照这个流程构造多个决策树后,再根据投票原则预测目标类型。随机森林的思想虽然简单,但它实际上实现了一个有效提升模型泛化能力的方法。森林中的每颗决策树代表看待数据集的不同视角,都对分类方法有一定程度的偏见。在投票决定的过程中,每棵树的决策偏见能够得到折中,从而提高模型的泛化能力。决策树的数量越多越好,但同时多个决策树会对计算机性能提出更高的要求。图16展示了采用随机森林后的分类边界,可以看到随机森林的分类界限比单一决策树更能区分两类数据。图SEQ图\*ARABIC16图SEQ图\*ARABIC16在sklearn包实现随机森林sklearn包提供随机森林对象sklearn.ensemble.RandomforestClassifier。生成随机森林对象以后,我们可以对它进行训练,同时可以使用多种函数功能,如计算每个特征的重要度等。在生成RandomforestClassifier对象的时候,设置好它的参数对模型效果起到关键作用,以下几项介绍了它的几个重要参数。Criterion:“gini”或“entropy”(defualt=”gini”)n_estimators:决策树的数量(default=100)max_features:节点分裂时参与判断的特征数(default=“auto”)If“auto”,thenmax_features=sqrt(n_features).bootstrap:是否用bootstrap抽取样本(default=False)该对象还提供有关决策树剪枝策略的多种参数,有助于使模型避免过拟合。max_depth:最大深度(default=None)min_samples_split:分裂所需的最小样本数(default=2)min_samples_leaf:叶节点最小样本数(default=1)min_impurity_decrease:最小不纯度减少量(default=0.0)可以看到,在默认情况下,决策树不采取剪枝策略,会划分到最细,叶节点只有包含相同的类别时才会停止划分。训练结果作者生成了两个RandomforestClassifier对象,分别具有10个决策树和100个决策树,其他参数的设置均置为默认值,包括不采取剪枝策略。结果表明,10个决策树的森林的正确度(accuracy)为0.8446,而100个决策树的森林的正确度为0.8521,比10个决策树有了小幅提升。图SEQ图\*ARABIC17采用100个决策树的模型,其检准率、召回率、F值分别为0.928、0.885、0.906。图SEQ图\*ARABIC17图17展示了它的混淆矩阵。模型优化本案例中,模型在特征选择方面进行了优化,主要是过滤不重要的变量后重新训练模型。RandomForestClassifier对象具有一个属性叫feature_importances_,它返回包含每个特征的正要程度的列表。重要度的计算方法是Gini重要度,即对于某个属性M统计在每棵树中由M形成的分支节点带来的Gini指数下降程度。某特征带来的Gini指数下降程度越多,这个特征越重要。图SEQ图\*ARABIC18可以看到最重要的特征有fnlwht、age、capital_gain、hours_per_week和education_num,而相对不重要的特征是在独热编码过程中生成的各个国家或职业所对应的哑变量。作者去除最不重要的特征native_country_41后重新训练了模型,发现模型的正确率由0.8521提升到0.8544。可以看出,不考虑一些不重要的特征后,模型的整体效果会增大。在数据检视过程中已经了解到了“祖国”变量既有高基数问题也有分布极其不均衡的问题,因此我索性在让祖国变量不参与训练的条件下构造了随机森林,结果发现去除祖国变量后训练模型反而能够提升模型的正确率。图SEQ图\*ARABIC19从这张图能发现,前几个特征才是最重要的特征,后面几十个特征实际上并不重要,我们可以考虑去掉更多变量,而不仅仅是native_country_41。小结本案例基于随机森林算法根据人的各项特征预测该人的年收入是否超过5万美元。案例的作者在数据检视、特征工程、训练模型、模型评估和模型优化方面都经过了比较完整的流程。我认为本案例的亮点有以下方面:第一,在特征工程步骤使用的方法,如用最频繁类别填充缺失值,用独热编码处理定类变量,都是简单而可理解的方法,对初学者掌握数据预处理的方法很有帮助。即便作者使用了简单的预处理方法,模型也能表现出良好的效果(F1score超过0.9)。因此,在进行数据预处理与建模时,我们不应该因方法简单而不采用该方法,因为有时候简单的方法反而更有效,而且具有更高的可解释性。第二,在特征工程之前,作者事先做了比较充分的数据检视。数据是事件发生结果的具体展现。我们看到的数据,一定有这个数据背后的事件。数据科学家在分析数据时,必须理解数据背后的事件,否则他的模型得出的结论将误导读者。数据检视步骤通过分析数据分布、变量之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气胸的教学查房
- 保洁投标书范本
- 《汽车维修理论》课件
- 《公共关系的职能》课件
- 小学三年级数学两位数乘两位数笔算综合监控模拟题大全附答案
- 想象微电影分库周欣然
- 福建省建瓯市芝华中学2020-2021学年高一下学期第一阶段考试化学试题
- 一季度安全生产工作总结
- 中班社会活动红旗飘飘
- 微量输液泵什么是微量输液泵是电子输液控制装置能将药液精确
- 湘教版初中美术八年级上册 第5课《静物画有声》[31张PPT]
- MSA - AIAG Manual--d2表
- 医疗集团人事聘用和调配管理办法
- 欧盟最新农残标准
- 药学科研选题及实践经验PPT课件
- 随访平台解决方案.docx
- 中石油项目建议书写作模板
- 二层式升降横移自动立体车库结构设计(机械CAD图纸)
- 超市值班经理制度
- 8个干细胞药物
- 24 供应商(合作伙伴)反恐评估表
评论
0/150
提交评论