随机森林相关概念介绍
随机森林
随机森林是由许多决策树构成,是一种有监督学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。
“随机”是针对森林中的每一颗决策树,有两种含义:
1. 数据采样随机
构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合;
2. 特征随机
训练集会包含一系列特征,随机选择一部分特征进行决策树的构建。通过这些差异点来训练的每一颗决策树都会学习输入与输出的关系。
那么既然是树结构,根节点和叶子节点又是如何选择的呢? 下面将会介绍几个数学原理来一起学习一下。
1. 信息熵
信息熵可以用来度量信息源的不确定度。熵越大表明数据集的不确定度越高,数据集越不纯;熵越小表明数据集的不确定度越低,数据集越纯。所以在选取根节点时,尽量选取熵小的特征值作为根节点。
目标熵计算公式:
其中A为数据集的数据量,i为特征的类别,Ai为某种特征类别的数据量,B为特征类别下的目标数据量,B与Ai相等,j为某特征下的目标类别,Bj为某特征类别下某目标类别的数据量。
计算得到两个信息熵之后,就可以计算信息增益。能够提供最大信息增益的特征将会被用于划分子集,信息增益的计算公式为:
信息增益 = 目标熵 - 熵(目标,特征) 这种做法通常也称为ID3算法;
C4.5 算法
C4.5算法,是对ID3算法的一个改进,因为数据集中一旦出现了没有实际意义的ID列,根据信息增益计算而来的结果就会不太准确。
C4.5 算法采用信息增益率作为衡量数据集纯度的标准,信息增益率的计算公式为:
信息增益率 = 信息增益/特征自身的熵
基尼系数 — CART算法
Gini系数越高说明纯度越低,Gini系数越低说明纯度越高,每次选择Gini系数最小的特征作为节点,采用Gini系数衡量标准的决策树也称为CART(分类回归树)
ID3、C4.5、CART的使用场景比较
- ID3只能用于离散型变量,这是由于ID3算法倾向于选择分支多的特征作为节点,这是该算法的一个缺陷,对于连续性变量而言,切割之后就会有较多的分支,所以ID3不能用于连续性变量。
- C4.5可以处理对连续变量进行切割的情况,因为C4.5算法可以通过分母中特征的熵进行惩罚。
- CART,由于其构建时每次都会对特征进行二值划分,因此也可以很好地应用于连续性变量。
PySpark 实操
from pyspark.sql import SparkSession
from pyspark.sql.functions import rand
spark = SparkSession.builder.appName('randomForest').getOrCreate()
# 读取数据文件
dfInfo <