决策树

树的节点将要预测的空间划分为一系列简单域,划分预测空间的规则可以被建模为一棵树,所以这种方法也叫决策树方法。

bagging,随机森林,boosting 是多棵决策树组合起来采用投票方式产生一个预测结果的方法。

以树为基础的方法可以用于回归和分类。

 

回归树:

输出是一个实数,如房子的价格等。

回归树是将特征空间划分为若干个区域,在每个区域里进行预测。假设被分为了M个部分,$C_m$是第m个部分的值。

预测值 $y =  \sum_{m=1}^M C_m I(x \in R_m)$

          $I()$是指示函数,当括号中的式子成立时返回1,否则返回0

自顶向下:从树的根开始不断的将预测空间分为两个子空间

贪心:每次划分都选择当前最优的方法。

为了防止过拟合,限制模型的复杂度,通常会通过剪枝(Pruning)来正则化决策树。

建树的过程:

1)选择最优切分变量j和切分点s。遍历变量j,对固定的切分变量j扫描切分点s,选择使得RMSE最小的切分对(j,s)

    RMSE(root mean squar error)均方根误差

    $RMSE = \sum_{j=1}^J \sum_{i \in R_j} (y_i - \hat{y_{R_j}})$

    $\hat{y_{R_j}}$ 是落入$R_j$样本的平均值。

2)用选定的(j,s)对特征空间进行划分,划分为$R_1$和$R_2$两个区域,并决定相应的输出值$c_1$和$c_2$

    $R_1(j,s) = {X| X_j \leq s}$

    $R_2(j,s) = {X| X_j > s}$

    $c_1 = avg(y_i | x_i \in R_1(j,s))$

    $c_2 = avg(y_i | x_i \in R_2(j,s))$

3)继续对两个子空间调用1)和2),直到满足停止条件

 

分类树:

信息熵:衡量随机变量的不确定性。熵越大不确定性越大,携带的信息就越多。

           随机变量X的熵:$H(X) = - \sum_{i=1}^n p_i log p_i$

                                 $0\leq H(X)\leq log n$

条件熵:假设有随机变量(X,Y),其联合概率分布为$p(X=x_i,Y=y_j) = p_{ij}$

           则条件熵 (Y|X) 表示已知随机变量X的条件下,随机变量Y的不确定性。

           $ H(Y|X) = \sum_{i} p(X=x_i) H(Y|X=x_i)$

信息增益:如果按照某个特征划分数据,信息的不确定性减少了多少

             IG(Y|X) = H(Y) - H(Y|X)

Gini系数:

           集合T包含n个类别,每个类别的概率为$p_i$,那么这个集合的基尼系数为:

           $Gini(T) = - \sum_{i=1}^n p_i log p_i $

           按某个特征划分为m个子集,第i个子集的大小为$N_i$,则划分后子集的基尼系数为:

           $Gini_split (T) = \frac{N_i}{N} Gini(T_i) + ...... +  \frac{N_m}{N} Gini(T_m)$

如何确定划分的特征?

ID3 算法:信息增益。选择信息增益最大的特征。

C4.5算法:信息增益率。选择信息增益率最大的特征。

CART算法:Gini系数。选择使得划分后基尼系数最小的特征来划分。

 

基于决策树的集成算法

bagging,随机森林,boosting 是多棵决策树组合起来采用投票方式产生一个预测结果的方法。

 

bagging

算法过程:

1)从训练集中采样得到新的训练集

2)重复1)m次得到m个训练集,对m个不同训练集分别训练一棵树

3)评价每一个树的预测值 或者 选择少数服从多数的原则得到分类结果

可以用1)中没有采样到的数据作为测试集,来评估训练结果

 

随机森林

1)从训练集中采样得到新的训练集

2)重复1)m次得到m个训练集,对m个不同训练集分别训练一棵树

3)训练树的过程中,先从所有特征中随机选择n个特征作为候选,然后再从这n个特征中选择一个最优的特征来划分。

   (假设p为总的特征数,在分类问题中 $n =\lfloor \squrt p \rfloor$,在回归问题中  $n =\lfloor \frac{p}{3} \rfloor$)

 

Boosting

其中有一种最为有名:adaboost

 

 比较:
Bagging: 树"并行"生成
Boosting:树"串行"生成

 

GBDT:

boosting 是一种算法思路,它的基函数可以采用各种分类器、预测器。其中采用
决策树为基函数的 boosting 就叫 GBDT,即 Gradient Boosting Decision Tree。

 

随机森林算法和 Adaboost 哪个比较容易过拟合?
随机森林算法比较容易过拟合。
1.随机森林的决策树尝试拟合数据集,有潜在的过拟合问题,而 boosting 的决策树则是拟合数据集的残差,然后更新残差,由新的决策树再去拟合新的残差。这虽然学得慢,但大    大地降低了过拟合的风险。
2.boosting 的每棵决策树通常都很小,一般分裂次数只有 1,生成的决策树一般是树桩。
3.通过收缩参数,可以放慢拟合的速度,允许更多不同的树来拟合残差。不同的树带来的是多样性,也降低了过拟合的风险

 

参考:

http://www.cnblogs.com/senlie/p/3868265.html

 

posted @ 2017-04-24 14:16  江小修  阅读(242)  评论(0编辑  收藏  举报