机器学习A-Z~决策树与随机森林

决策树

有的人可能听过一个词:CART,这个代表的意思是Classification And Regression Tree。它是一个分类和回归的决策树。它被分为两类,一类是分类决策树(Classification Trees),另一个类是回归决策树(Regression Trees)。也就是我们要用这个决策树解决两类问题,一个分类问题一个回归问题。

决策树

对于分类决策树,一般来说用于一些分类离散的数据,比如说人的性别是男或者女,水果的种类有苹果梨子等等都是离散的。反之回归决策树,那么对应的场景就是连续的数据,比如人的年龄或者室外的温度。当我们进行分类问题时,分类的组之间是无序的。这里首先介绍下什么是有序,可以举个例子比如年龄,又年龄大或者年龄小。那么对于性别问题,男或女,它是没有顺序的。本文要讲的是分类问题在决策树上的应用。

来看个例子,在一个二维平面上有两个颜色分组的数据,我们要用决策树算法来构建分类器。这里的决策树算法要做的事情就是不断用水平和竖直的线不断对平面进行分隔,直到某一个区域类只有红类或者绿类。如图所示,我们画出几条线对平面进行分隔。

image

这样图中的红组和蓝组的数据点就被这些数据分隔开来了,但这组数据是为了方便展示而特地画成这个样子的,实际情况并不一定会出现这种比较清晰的分割线。那我们先看看第一条分割线,将其分割成了上下两块区域,虽然两边都是既有红色又有蓝色,但我们可以说分类的结果还是比较纯的。用复杂点的数学语言来说就是,我们正在寻找一条分隔线,可以是水平的也可以是竖直的,我们想要做一个优化的问题,需要最小化分隔后的基尼不纯度。什么叫纯,指的是分隔后的一边如果只有红点或者绿点,那么可以说这个分隔的结果是非常纯的,那么如果两边既有红也有蓝,那么就是不纯的。我们希望当我们添加一条分割线后,想要将两边的纯度和最小化。那么每一条的分割线的寻找实际上就是在做一个优化的问题,那么优化的对象可以是基尼不纯度,也可以是信息学中的熵。这里不做过多解释,只是展示下决策树是如果运作的。

画出第一条分隔线后如图可以得到两组分类结果,一个是x2小于或者不小于60,再然后我们画出第二条分割线,看出x1<50是绿组,否则就是红组,接着再画出第三条分割线,x1<70都是红组,再对x1>70分隔,得出红组和绿组数据。

image

如图其实就是上述所说的工作流程,我们得到的每一片叶子都是比较纯的结果,如果在实际实际生活中,数据可能非常复杂,那么我们的树可能就非常非常大,枝节非常非常多。那么有的时候,有的枝节不一定非要到最后知道yes or no,也许可能在前面某个枝节就停止了。比如对于x2<20这里不再继续分割,假设有个新的数据点落在了这个区域,它落在绿色的区域的概率比落在红色的概率要大,那么我们就可以把这一部分都划分到绿色组中,也就是说可以剪掉多余的枝节,也许它对于训练集是有意义的,但对于更多其他的数据来说,它可能就是个噪音,我们不需要知道这么详细的信息。那最终就没有这两片叶子,到前面一步就结束了。

决策树算法是个很经典的机器学习算法,很多年以前是比较流行的。但到了20世纪初已经逐渐被其他算法所取代。直到最近又发现这个算法中一些新的精妙的东西,比如说随机森林,就是以决策树为根本来展开的。还有提升梯度(Gradient Boosting)等等都是在决策树算法之上我们加上了一些新的元素。

代码实现

由于这次决策树算法,我们没有使用欧式距离,也就是说可以不用进行特征缩放。但最终画图像时之前模版中定义的步距可能就过大或者过小,所以这里就妥协一下保留特征缩放的代码。分类器改成决策树算法的DecisionTreeClassifier。这个方法的参数criterion指的就是标准,默认gini,即基尼指数或者说基尼不纯度。它和熵都是表示分类时划分质量的好坏。这里我们使用熵。其他的参数暂时用不到,random_state依然只是用来大家如果想得到相同的结果时就设置为相同的值即可。

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier(criterion='entropy',random_state=)
classifier.fit(X_train, y_train)

随机森林

在开始讲随机森林之前我们先讲一个更为广义的概念: Ensemble Learning,集成学习。它的意思是我们使用多个分类器对我们的结果进行预测,最后再对分类结果进行一个组合,以达到最终的结果。这个组合的方式有很多种,比如平均,加权平均或者投票等等。这个集成学习的作用就是,我们觉得任何一个单独的分类器去分类结果回感觉有误差,这时可以用成百上千个分类器都进行预测,然后再对结果进行一个组合,可以减少预测结果的浮动率。下面来看看随机森林算法的步骤。

首先,随机采用训练集合中的数据,相当于装袋的过程,构建自己新的训练集;然后用这些数据训练决策树分类器;再然后实际上就是重复第一第二步,但每一次得到的结果是不同的,因为在第一步中我们取得的数据都是随机的。对于一个新的数据点,我们用已经训练好的多个训练器分别对这个新数据的分类进行预测,最后进行一个投票,拥有最大投票数量的分类结果胜出就使用这个分类结果。

随机森林

前文讲述了如何构建一棵决策树,现在拥有成百上千棵决策树来帮助我们解决分类问题。这个分类算法还有不少数学上的一些细节问题,比如Boosting(提升),还有当我们有高维度的情况时,我们每次选取数据时可能只选取部分维度,这样可以避免个别维度比其他维度大的多情况。

代码实现

这里依然开始先套用分类的模版,然后换成随机森林分类器,这里的参数n_estimators指的是决策树的数量,这里暂时设置成10 criterion依然设置为entropy。

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)
classifier.fit(X_train, y_train)

通过结果观察,这里使用随机森林分类器是会出现过拟合的情况。对比这几篇文章中的分类器,实际上最适合的是核svm和朴素贝叶斯,线性分类器准确度不够,随机森林分类器会出现过拟合,而这两者它们保证了拟合的准确率,并且也不会出现过拟合的问题。

以上,就是关于决策树和随机森林相关的基础知识。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 在那一个温暖的下午 我遇见了长发飘飘的你 从此 你在我心中 不可抹去 你温暖的笑容 点燃我青涩的小火苗 在遇见你的...
    情书小王子阅读 194评论 0 1
  • 忍不住何必要伪装坚强,痛痛快快哭一场又何妨? 人生其实就是场离殇,那些舍得舍不得,生命里重要的人或物,都会随着时间...
    云水禅心ZLM阅读 715评论 13 8
  • 1,社会活动的中心应该是,家庭。2,工作的核心应该是,跟对人。3,一个人只活到35岁,35岁以后都是惯性。4,健康...
    拾零录阅读 278评论 0 0
  • 母亲老了。自从去年她生病以来,就表现的越发明显。白皙的手臂上出现了老人斑,光洁的皮肤上刻上了皱纹,挺拔的腰身开始弯...
    淮滨高中李盼盼阅读 151评论 0 0