• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

白话空间统计二十八:基于森林的分类和回归(2)R语言的实现 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

上篇文章刚刚说到决策树这个问题,如果我们本来就知道这些条件,那么自然就去写if……else……来构建分支选择条件就好了,但是大部分情况下,是我们根本不知道这些条件:

你做一个我就知道我要什么了……这只是一个美好的梦想,实际上:

不需要……需要……要……

此刻,我的心情是:

遇上这种情况,怎么办呢?这就是我们今天要说,当你不知道规则的时候(客户的需求),但是你有很多设计稿已经被客户给毙了(有很多分类的样本),我们怎么来构建一颗客户的决策树。

首先,来看看下面的最简单的数据:

第一列是设计图中使用的图片数量,第二列就是客户是否接受这个设计,然后通过R语言tree包,直接生成树:

代码见文章底部的github地址

可以很清晰的看出,这就是一个非常简单粗暴的均分法,用平均数作为分断标准。

实际上,这么简单的数据,就算不用这个包去计算,用眼睛一看也能明白,但是如果数据量非常大的话,眼睛自然就不够用了,比如下面这份北京市1978-2005年的GDP数据(数据和代码,见文章底部):

按照传统回归的方式,我们就选择GDP年份来进行线性回归(看看随着年份的变化,GDP的变化情况是怎么样的):

可以看见,两个变量之间简单的线性回归,r方(判断系数)还是挺高的,达到了0.74,也就是说,我的全局回归模型,能解释74%的自变量对因变量的关系,这个拟合程度是比较高的。

下面我们可以试试局部回归,局部回归最大问题就是如何确定回归的窗口过大,效果不明显过小,又会出现过拟合,所以……我们的决策树就可以登场了,首先做一个决策树,看看分类情况以及数据分布情况:

接下去我们可以进行一下局部回归:

如果就做第一层树的窗口回归,以2006年分段,发现在2006年之后的拟合度达到了0.99,这是一个很高的拟合度了,而2006年之前,拟合度也从全局的0.74提升到0.76,不十分明显。

而2006年之前,还可以再分为2000年之前与2000年之后,再做第二层的局部回归:

可以发现,随着层数的加深,局部回归的拟合性能就越好……当然,如果你把窗口缩小到最小,那么就可能出现完全拟合,也就是所谓的过拟合了。

树的层数,决定了窗口的粒度,粒度越细,就能揭示更多的细节,而粒度越粗,就更能抽象出整体的趋势。那么我们把三条回归线都绘制上去,看看最后的结果:

R语言的Tree包,实际上对于树的分层没有太好的控制,虽然可以用tree.control这个参数来控制分裂的最小样本数,但是没有办法控制树的层数,下一章,我们看看Python里面的机器学习包sklearn会不会有更好的办法。

待续未完。

文中R语言的源码和数据,大家可以到虾神的github仓库下载(点击原文也可以跳转过去):

https://github.com/allenlu2008/RDemo


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言-正则表达式1发布时间:2022-07-18
下一篇:
R语言平均值和加权平均值发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap