量化机器学习系列分享(五)树模型与组合模型
由bq2qbou2创建,最终由small_q 被浏览 95 用户
nan1. 决策树模型
1.1 决策树模型的概念
决策树是机器学习中的一个典型的非参数模型,它使用规则,而不是参数,来定义模型
- 这种决策方式其实是和人类最直接的思考方式是类似的
- 例如,我们使用身高这一特征,去预测性别这一标签的时候,一个比较直觉的方式是,如果身高大于 175 就分类为男生,如果身高小于 175 就分类为女生
以下是一个典型的决策树模型:使用三个特征:X1,X2,X3;预测一个标签 Y
- 图中的圆圈和方框叫做节点:
- 最上面的,依靠X1进行分类的,叫做根节点
- 其他圆圈,叫做中间节点
- 最下面的方框,叫做叶节点
- 节点和节点之间的连线就组成了决策路径,例如
- 红色决策路径是,如果一个个体,X1小于5,并且X2大于3的话,它的Y我就预测为1
- 蓝色决策路径是,如果一个个体,X1大于5,并且X3不等于2,并且X2大于1的话,它的Y我就预测为0
在这个例子中,我们可以观察到树模型的两个特点:
- 树模型本质上是将我的样本进行分组,例如,红色路径,其实就是将X1小于5,并且X2大于3,的所有个体分为一组,这一组中的所有个体标签我都预测为1
- 一个特征节点,在树模型中是可以出现不止一次的,例如X2这一特征节点,在树模型中就出现了两次
1.2 树模型分组的预测特征是如何决定的
在上面这个例子中,红色路径的分组是,将X1小于5,并且X2大于3,的所有个体分为一组,并且这一组中的所有个体标签都预测为1
那么为什么这一组的标签被分为了1,而不是0呢
其实这就是一个简单的少数服从多数的原理
- 我们的样本中X1小于5,并且X2大于3,的个体有很多个
- 如果这一组中,标签为1的个体数量,大于标签为0的个体数量,那么这个组就听多数的,整个组的标签都预测为1了
1.3 树模型的训练
树模型的训练过程,其实就是不断拓展节点的过程,在拓展一个新的节点时,主要有两个需要考量的点:
- 在某一个节点上,选择哪个特征进行分组,例如,三个特征X1,X2,X3,在这个节点上,用哪个去分组
- 选择的这个特征,分组临界值是多少,例如,我选择了X2了,那么X2的分组临界值是多少,是小于5和大于5这样分两组,还是小于6和大于6这样分两组
基于这两个考量,一个树模型的训练过程为:
- 从根节点出发,选择一个特征和一个临界值进行分组,选择的依据是模型表现可以提高
- 分完之后,就形成了两个小组,对于这两个小组来说,选择一个特征和一个临界值进行分组,选择的依据是模型表现可以提高
- 分完之后,就形成了四个小组,对于这四个小组来说,选择一个特征和一个临界值进行分组,选择的依据是模型表现可以提高
- 。。。
- 一直进行这个过程,直到某些停止条件满足,一般是设置一个总路径数的上限,或者是模型的表现无法再提高(如果在某个小组中,发现,不论怎么再分,模型的表现都无法提高了,那么这个分支就停止了,如果所有的小组都满足这个条件的话,那么模型的训练当然也停止了)
模型的表现有以下几种衡量方式:
1.4 树模型防止过拟合的方法
通常用来防止树模型过拟合的方法,其实就是控制树的大小和复杂程度,这个过程有一个很玄幻的名称,叫做”剪枝“
具体来说,在代码层面,我们可以进行的剪枝操作有以下几种:
- 树的最大深度:限制树的深度可以避免决策树在训练数据上过度生长
- 分割内部节点所需的最小样本数:如果一个节点的样本数少于这个值,则不会继续分割
- 叶节点上的最小样本数:这个值限制了叶节点必须有的最小样本数量,避免模型在训练数据上过度拟合
- 最大叶节点数:通过限制决策树的叶节点数量,可以控制树的复杂度
1.5 树模型的特征重要性
树模型中的特征重要性,衡量起来不像参数模型那样方便,因为参数模型中,每个特征前面的参数值越大,就表示这个特征越重要
在树模型中,特征重要性的衡量比较复杂,但是逻辑是很简单的,就是如果我把这个特征删去以后,再训练一遍这个树的话,树模型的表现会不会有所下降;依此思路可以有两种计算模型特征重要性的方式:
- 基尼指数的增加值:如果我把这个特征删去以后,再训练一遍这个树,树模型的基尼指数的增加值就是这个特征的重要性
- 分类误差的增加值:如果我把这个特征删去以后,再训练一遍这个树,树模型的分类误差的增加值就是这个特征的重要性