首页 > 其他分享 >白话空间统计二十八:基于森林的分类和回归(6)完结篇

白话空间统计二十八:基于森林的分类和回归(6)完结篇

时间:2022-12-14 22:33:06浏览次数:58  
标签:完结篇 系数 变量 训练 二十八 白话 模型 验证 数据


(七千多字的大章……诚意满满啊……好吧,我知道你们是没有时间阅读这么大篇幅的文章的,所以只需要转发和收藏就阔以了……)


第一节的时候,曾经有过这样一张图:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林

所以作为完结篇的这篇文章,就讲讲这个工具怎么使用:

 

先介绍一下数据:

数据来源于Aurélien Geron(奥雷利安·吉翁,法国著名机器学习专家,法国工程学院的计算机科学讲师,前Google员工,曾在2013年至2016年领导YouTube视频分析团队)的著作:《Scikit-Learn与TensorFlow机器学习实用指南》中提供的示例,他的github地址如下:

 

​https://github.com/ageron​

 

数据地址如下:

 

​https://github.com/ageron/handson-ml/tree/master/datasets/housing​

 

 

数据描述情况如下:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_02

 

在ArcGIS Pro里面,很容易的进行可视化,以及数据的探索性分析,比如,按照区位信息做一个box图:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据集_03

下面用ArcGIS Pro提供的随机森林分类与回归工具,来对这份数据进行回归:

 

首先设定分析参数:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_04

这里做一个测试训练,所以选择仅进行训练,而不生成预测,设定往因变量和自变量之后,点击运行,系统会自动进行分析,并且生成这样一个分析结果表:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_05

下面我们来逐步解释一下这结果里面的各项信息:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据集_06

第一项,是模型的特征信息表,一般称之为森林特征表,他包含有关我们训练的森林模型的许多重要的信息,其中一些内容通过分析工具中的高级森林选项中的参数进行设定,还有一部分是由参与训练的数据本身的特征来构造的。

 

主要要注意的是那些由数据驱动的特征,它们对于了解什么时候对模型性能的优化非常重要。

 

  • Number of Trees : 模型默认会生成多少颗树,100是ArcGIS pro的默认值。
  • Leaf Size : 每颗树最少有多少个叶子节点。5个叶子,也是ArcGIS Pro的默认值。
  • Tree DepthRange :“树深范围”用于显示在森林中发现的最小树深和在森林中发现的最大树深(最大值设置为参数,但低于该最大值的任何深度都可行)
  • Mean Tree Depth  :“平均树深”用于报告森林中树的平均深度。如果最大深度设置为 100,并不是说所有的树都搞得这么深,树深范围和平均深度才是表明真实的结果,可以看到,大部分时候,使用的深度要比最大深度小得多,一般来说,则较小的最大深度参数可以提高模型的性能,因为较小的深度,可以减少过拟合的可能性。

 


树越深,结果越精确,但是性能越慢,过拟合的可能性也越高。


树越浅,结果越抽象,性能也就越快,还能有效的减少过拟合的可能。


 

  • % ofTraining Available per Tree 每棵树采用的变量比例,默认就是百分之百,所有被随机抽中的变量都参与决策树的构建。

 

  • Number of Randomly Sampled Variables:随机采样的变量数选项,主要是构造决策树的时候选用的特征类型的数量,比如这里为2,则表示每棵树采用两个特征来构造。每棵树都会具有不同的变量组合,但每个树都会使用该数量的变量。默认选择的数量基于要素数和可用变量数的组合。

 

对于回归,该数量为解释变量(包括要素、栅格和距离要素)总数的三分之一。对于分类,该数量为变量总数的平方根。

 

  • % of Training Data Excluded for Validation:用于验证的数据,也就是不参与抽样训练的数据的比例,10%也是默认值。

 

以上这些参数,都可以在工具参数里面进行设置:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_07

第二类为OOB(袋外数据)误差说明

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_08

OOB误差用来评估模型精度:均方误差(MSE) 和变化百分比这两个指标都是用来说明模型精度的。具体说,就是利用训练数据集中的观测值进行训练,构建出来的模型,对于要进行的预测的验证值的验证精确程度。

 

前面的文章中解释过,OOB是指在构建训练集的时候,完全没有被选取的那一部分数据集,这些数据集对于构建模型的时候,是完全不可见的,所以就可以用来它来对构建的模型进行精度评估。

 

结果报告里面,分别是50(百分之五十)还是100(百分之百)的树构建的森林,对OOB进行校验时候得到的MSE(均分误差),来告知我们,数据的数量与精度之间是否有显著的提高。如果发现只用一半的树和用全部的树,得到的精度差不多,那么实际上没有必要构建100%的树了,它用于帮助评估增加树数量是否可提高模型性能。

 

如果对于两个不同数量的树,所对应的误差和变化百分比的值差不多,则表明可以更多的树实际上是没有多少必要的,那么我们就可以使用较少数量的树来进行构建,越少自然也就越快,就可以尽可能减小数量对模型性能的影响。

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_09

当然,最好允许计算机来构建的尽可能多的树。森林中的树数量越多,生成的结果越稳定,模型的数据和采样方案中的噪点越少。

 

解释变量的重要性列表:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据集_10

 

这个列表就是回归分析里面的系数了,也是解释变量在模型中的重要性排行,这里的报告仅显示前20项。

 

这个重要性是通过尼基系数来计算的。实际上随机森林用的是CART算法,用尼基系数就是必然的了,如果用C.45的话,就会改用信息增益率了。

 

这里的尼基系数和经济学上那个用于衡量贫富差距的东东是一个道理的。经济学上的尼基系数指的是全部居民收入中,用于进行不平均分配的那部分收入所占的比例。这里的随机森林里面的尼基系数指的就是数据纯净程度,数据越纯,尼基系数就越接近0,看下面这个例子:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_11

从尼基系数的公式,可以看出这样一个曲线:

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_12

当X越接近0或者1的时候,Y越小,说明其中有一类数据占的比重越大,而X达到50%的时候,Y轴最高,也就是0.5的时候,尼基系数最大

 


尼基系数



基尼指数越大,说明不确定性就越大;基尼系数越小,不确定性越小,数据分割越彻底,越干净


 

上面说到,变量的重要性通过基尼系数计算处理,首先要确定,包含的是有统计意义的变量。

 

在这里,我们可以把尼基系数看成变量负责分割的次数,这句话是啥意思呢?这个就要从分割说起了,数据越纯净,那么分割就越容易,比如AB两个数,一个是1,一个是0,就非常容易分割,但是一个是1.61,一个是1.64,那么就没有那么容易分割了。

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_13

(PS:上面那个金毛,是著名公众号差评的吉祥物,名字就叫做“火锅”……)

那么数据的尼基系数越小,分割就越容易;反之,就需要很多刀才能切开了。

报告中,变量的重要性数值,实际上就是该分割除以树的数量产生的影响。决策树中的每个单独决策(分支)就可以看成一次分割。变量重要性可用于创建更简洁的模型。

 

这个结果,很容易变成图形,只要在分析的时候选择输诊断表:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_14

ArcGIS Pro会自动生成一个条状图。

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_15

 

 

训练数据的回归诊断:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_16

回归诊断嘛,老规矩,看R方,R方是回归的主要性能指标,指的是模型对结果的解释程度,比如这里的0.949,就说明训练出来的模型,对我们的训练数据集的解释度,达到了94.9%。后面的P值和标准误对应回归分析的概念就好。

 

用训练模型来说明指标实际上没啥意义……用自己来检验自己嘛,所以真正的性能说,是下面的验证数据的回归诊断说明

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据_17

 

前面说过OOB对于训练集是不可见的,所以这里的验证数据,就是OOB数据,使用这份数据对模型进行验证,一般来说,就是原始数据集的10%左右,当然这个值也是可以设置的。看这里的R方,价值比看上面打R方要有意义得多的多得多了。

 

不过随机森林本身的算法所限,用于验证的数据只能是部分数据,而不是所有的数据都来验证,这点可以算是OOB思想的一个缺点吧。

 

因为OOB的抽样是随机的,所以每次跑同样的数据,也有很大的概率,结果也不一样。

 

如果做的是分类(因变量设定为类型值),那么给出的来的性能说明,就是分类的精度。如下所示:

白话空间统计二十八:基于森林的分类和回归(6)完结篇_数据集_18

 

最后就是解释性可变范围诊断说明了:

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_19

 

这个是东西主要来评估你用的这些训练和评估的数据集,是否能够生成足够优化的模型,并且生成的模型是否足够可信。机器学习比统计模型对数据的依赖性要强很多,所以理想情况下下,训练数据就应该代表了正在建模的数据。默认数据被拆成了两部分,90%的数据用于建模,10%的数据用于验证,这个诊断表前半部分,就是对建模数据和验证的数据统计性说明。如果这两个统计值出现了量级的误差,就说明抽样出了问题(不过这种情况一般很少会出现,因为抽样算法是模型里面自身提供的,我们只能设定随机种子值,而无法定义抽样算法)。

 

因为选定数据的方式是随机的,所以训练的子集就不可能达到理想状态中,代表全部输入数据的总体值。所以这里就给出了所谓的训练数据集与验证数据集的重叠率,一般来说,如果训练数据集完全能够覆盖住验证数据集,那么就是百分之百,但是如果覆盖不了,则不是百分之百,比如下面这样的情况:

 

白话空间统计二十八:基于森林的分类和回归(6)完结篇_随机森林_20

一般来说,100%的覆盖度,基本上是可信的,如果达不到100%,模型的诊断结果就很大的概率出现偏差了。

 

而验证数据集与训练数据的覆盖度的意义也是一样,最好尽可能的多,否则就会产生偏差(不过,除了类型值的特征以外,连续变量一般不可能达到100%)。

 

如果是回归分析,那么这样就算完了,但是如果是分类型分析,还会有一些其他的说,比如精度等。

 

关于分类的,等以后有空找到数据,再说了。

 

最后总结:

 

基于森林的分类和回归工具,是ArcGIS Pro最新推出的GIS与机器学习结合的尝试……和GIS和空间统计实际上没多少关系,所以我这里就以烂尾结局了,如果大家对这个工具还敢兴趣的话,可以考虑去网上看更完备更详细的资料……

 

从下一篇开始,回归空间统计学系列。

标签:完结篇,系数,变量,训练,二十八,白话,模型,验证,数据
From: https://blog.51cto.com/u_15707947/5938419

相关文章

  • 白话空间统计二十七:统计学七支柱之空间统计版本(二):聚合(1)
    聚合,或者说汇总,可以称之为统计学的始祖级应用了。人类对任意事物,都有天然的概括和归纳的习惯,比如对于阅兵:第三排左边第四辆坦克的左前悬挂轮的第二颗螺丝,擦的真干净……锃光......
  • 用通俗易懂的大白话讲解Map/Reduce原理
    下面是我自己的微信公众号(不定期更新JAVA、大数据、个人成长等干货)1、公众号上有经典的技术电子书可以免费领2、大家有问题可以在公众号问我,只要你问了我就会回复(相互交流......
  • Mapbox 与 Babylon.js 可视化 glsl 特效篇(二十八)
    我决定不从Babylonjs基础来讲了直接整合mapbox与babylonjs可视化来讲我整合一个类库后续不断更新中npmi@haibalai/mapbox-babylonjs 初始化mapbox-babylonjs......
  • ChatGPT 大白话 SmartIDE
    最近OpenAI下的ChatGPT刷爆了朋友圈,好不容易注册成功后,我马上问了“他”几个程序题,让我自愧不如,本文我再用SmartIDE来趁一下热度。首先需要把官网上的一些解释都......
  • 白话理解什么是图灵完备、图灵非完备
    前言在阅读文章时,经常会看到"图灵完备"、"图灵非完备"的概念,用来形容一种脚本语言或一种机器逻辑模型。其实用白话来说,图灵是一个人名,他提出了一种抽象计算模型--图灵机,......
  • (一)大白话MySQL执行SQL的流程
    ​​(一)大白话MySQL执行SQL的流程​​​​(二)大白话InnoDB存储引擎的架构设计​​​​(三)大白话MySQLBinlog是什么?​​​​(四)MySQL的BufferPool内存结构​​​​(五)MySQL的Buf......
  • 一文理解什么是DevOps,通俗易懂白话文
    一文理解什么是DevOps,通俗易懂白话文 devops是什么❝DevOps维基百科定义DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)......
  • .NET6之MiniAPI(二十八):Tracing
    Log,Metrics,Tracing是为服务正常运行保驾护航的三件套,前面有介绍过Log和Metrics,本篇说明说一下Tracing。Tracing的思路和Metrics一样,通过三方服务,来达成效果,这里选用的......
  • 【白话模型量化系列一】矩阵乘法量化
    模型量化是模型加速方向一个很重要的方法,主要思想就是用int8数据格式来存储和进行计算。这样做有两点好处:可以减小模型存储的体积。原本float32存储需要4个字节,现在int8存储......
  • JAVA-动漫美女拼图—完结篇(重置业务实现)
    代码一packagecom.itheima_10;publicclassApp{publicstaticvoidmain(String[]args){PictureFramepf=newPictureFrame();}}代码二pa......