机器学习(决策树与随机森林)

决策树与随机森林

  • 决策树的特点
  1. 每个内部节点对应于某个属性上的测试
  2. 每个分支对应于该测试的一种可能结果
  3. 每一个叶节点对应于一个预测结果
  • 学习过程

通过对训练样本的分析来确定划分属性

  • 预测过程

将测试实例从根节点开始,沿着划分属性所构成的判定测试序列下行,直到叶节点

  • 三种停止条件
  1. 当前节点包含的样本全部属于同一类别,无需划分(一票否定权或一票通过权)
  2. 当前属性集为空,或是所有样本在所有属性上取值相同(属性用完)
  3. 当前节点包含的样本集合为空,不能划分(样本已经用完)
  1. 定义
    信息熵(entropy)是度量样本集合"纯度"最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为 p k p_k ,则D的信息熵定义为:
    E n t ( D ) = k = 1 y p k l o g 2 p k Ent\big(D\big)=-\sum\limits_{k=1}^{\lvert y\rvert}p_klog_2p_k
    约定:p=0时 p l o g 2 p = 0 plog_2p=0
    Ent(D)的值越小则D的纯度越高
    信息增益直接以信息熵为信息,计算当前划分对信息熵所造成的变化
  • 信息增益(ID3)
  1. 概念

离散属性a的取值 { a 1 , a 2 , a 3 ,   , a v } \{a^1,a^2,a^3,\cdots,a^v\} :
D v D^v :D在a上取值= a v a^v 的样本集合
以属性a对数据集D进行划分所获得的信息增益为:
G a i n ( D , a ) = E n t ( D ) v = 1 V D v D E n t ( D v ) Gain\big(D,a\big)=Ent\big(D\big)-\sum\limits_{v=1}^V\frac{\lvert D^v\rvert}{\lvert D \rvert}Ent\big(D^v\big)
其中 E n t ( D ) Ent\big(D\big) 为划分前的信息熵

  1. 信息增益的缺点

对可取值数目较多的属性有所偏好(如考虑将“编号”作为一个属性)

  • 信息增益率(C4.5)

定义:

G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio\big(D,a\big)=\frac{Gain\big(D,a\big)}{IV\big(a\big)}
I V ( a ) = ν = 1 V D ν D l o g 2 D ν D 其中IV\big(a\big)=-\sum\limits_{\nu=1}^V\frac{\lvert D^\nu\rvert}{\lvert D\rvert}log_2\frac{\lvert D^\nu\rvert}{\lvert D\rvert}
属性a的取值越多即V越大,则IV(a)的值通常就越大

  • 基尼系数(CART)
  1. 定义

G i n i ( D ) = k = 1 y k k p k p k = 1 k = 1 y p k 2 Gini\big(D\big)=\sum\limits_{k=1}^{\lvert y \rvert}\sum\limits_{k^\prime \neq k}p_kp_{k^\prime}=1-\sum\limits_{k=1}^{\lvert y\rvert}p_k^2
反映了从D中随机抽取两个样例,其类别标记不一致的概率,其中 G i n i ( D ) Gini\big(D\big) 越小,数据集D的纯度越高

  1. 基尼系数评价纯度

G i n i _ i n d e x ( D , a ) = ν = 1 V D ν D G i n i ( D ν ) Gini\_index\big(D,a\big)=\sum\limits_{\nu=1}^{V}\frac{\lvert D^\nu \rvert}{\lvert D \rvert}Gini\big(D^\nu\big)
一般选择基尼系数最小的属性作为最优化分属性

  • 用决策树完成回归
  1. 回归树背后的含义为:对空间进行划分
  2. 构建方法:

假设一个回归问题,预估结果 y R y\in R ,特征向量为 X = [ x 1 , x 2 , x p ] R X=\big[x_1,x_2,\cdots x_p\big]\in R ,回归树的两个步骤为:
1)把整个特征空间Z分割称J个没有重叠的区域 R 1 , R 2 , R j R_1,R_2,\cdots R_j
2) 其中区域 R j R_j 中的每个样本我们都给一样的预测结果 y ~ R j = 1 n j R j y j \tilde{y}_{R_j}=\frac{1}{n}\sum_{j\in R_j}y_j 其中n是 R j R_j 中样本的总数

  1. 含义

上述构建方法的目的是希望能够找到如下的RSS最小的划分方式 R 1 , R 2 ,   , R j R_1,R_2,\cdots,R_j
R S S = j = 1 J i R j ( y i y ~ R j ) 2 RSS=\sum\limits_{j=1}^J\sum_{i\in R_j}\big(y_i-\tilde{y}_{R_j}\big)^2

  1. 递归二分

1)自顶向下的贪婪式递归方案
自顶向下:从所有样本开始,不断从当前位置把样本切分到两个分支里
贪婪:每一次划分,只考虑当前最优,而不回头考虑之前的划分
2) 选择切分的维度(特征) x j x_j 以及切分点s使得划分后的树RSS结果最小

  1. 回归树剪枝

如果让回归树充分生长,同样会有过拟合的风险
1)解决方法:添加正则化衡量
2)考虑剪枝后得到的子树 T a {T_a} ,其中 a a 是正则化项的系数,当我固定一个 a a 后,最佳的T_a就是使得下列式子最小的子树。
m = 1 T x i R m ( y i y ~ R 2 ) 2 + a T \sum\limits_{m=1}^{\lvert T \rvert}\sum_{x_i \in R_m}\big(y_i-\tilde{y}_{R_2}\big)^2+a\lvert T \rvert
其中 T \lvert T \rvert 是回归树叶子节点的个数, a a 可以通过交叉验证去选择

  • Bagging思想
  1. Bagging是bootstrap aggregating的缩写,使用了上述bootstraping思想。Bagging降低过拟合风险,提高泛化能力。
  2. 输入为样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ( x m , y m ) } D=\{\big(x_1,y_1\big),\big(x_2,y_2\big)\cdots\big(x_m,y_m\big)\}
    1)对于 t = 1 , 2 T t=1,2\cdots T
    a) 对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集 D t D_t
    b)用采样集 D t D_t 训练第t个随机学习器 G m ( x ) G_m\big(x\big)
    2)分类场景,则T个学习器透出最多票数的类别为最终类别。回归场景,T个学习器得到的回归结果进行算术平均得到的值为最终的模型输出
  • 随机森林
  1. 定义

随机森林是一种基于树模型的Bagging的优化版本。核心思想就是bagging,但是做了一些独特的改进

  1. 输入为样本集 D = { ( x 1 , y 1 ) , ( x m , y m ) } D=\{\big(x_1,y_1\big),\cdots\big(x_m,y_m\big)\}

1) 对于 t = 1 , 2 ,   , T t=1,2,\cdots,T
a) 对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集 D t D_t
b) 用采样集 D m D_m 训练m个决策树模型 G m ( x ) G_m\big(x\big) ,在训练决策树模型的节点的时候,在节点上所有的样本特征中选择一部分样本特征,在这些随机选择的部分样本中选择一个最优的特征来做决策树的左右子树划分
2)分类场景,则T个模型投票最多票数的类别为最终类别。回归场景,T个基模型得到的回归结果进行算术平均得到的值为最终的模型输出。

猜你喜欢

转载自blog.csdn.net/weixin_42150936/article/details/85588218
今日推荐