统计学习方法——CART, Bagging, Random Forest, Boosting

本文介绍了CART、Bagging、RandomForest及Boosting等分类器的特点与分类方法,并对比了它们之间的性能差异。

转载:http://blog.youkuaiyun.com/abcjennifer/article/details/8164315

本文从统计学角度讲解了CART(Classification And Regression Tree), Bagging(bootstrap aggregation), Random Forest Boosting四种分类器的特点与分类方法,参考材料为密歇根大学Ji Zhu的pdf与组会上王博的讲解。


  • CART(Classification And Regression Tree
         Breiman, Friedman, Olshen & Stone (1984), Quinlan (1993)
         思想:递归地将输入空间分割成矩形
         优点:可以进行变量选择,可以克服missing data,可以处理混合预测
         缺点:不稳定

     example:
对于下面的数据,希望分割成红色和绿色两个类,原本数据生成是这样的:
Red class: x1^2+x2^2>=4.6
Green class: otherwise










经过不断分割可以得到最后的分类树:



  • 那么怎么分割才是最好的呢?即怎样将输入空间分割成矩形是最佳策略呢?这里一般采用三中评价标准策略:

分裂时,找到使不纯度下降最快的分裂变量和分裂点。

  • 从结果可以看出CART可以通过变量选择迭代地建立一棵分类树,使得每次分类平面能最好地将剩余数据分为两类。
  • classification tree非常简单,但是经常会有noisy classifiers. 于是引入ensemble classifiers: bagging, random forest, 和boosting。
一般的, Boosting > Bagging > Classification tree(single tree)






  • Bagging (Breiman1996): 也称bootstrap aggregation

Bagging的策略:

         - 从样本集中用Bootstrap采样选出n个样本

         - 在所有属性上,对这n个样本建立分类器(CART or SVM or ...)

         - 重复以上两步m次,i.e.build m个分类器(CART or SVM or ...)

         - 将数据放在这m个分类器上跑,最后vote看到底分到哪一类


Fit many large trees to bootstrap resampled versions of the training data, and classify by majority vote.

下图是Bagging的选择策略,每次从N个数据中采样n次得到n个数据的一个bag,总共选择B次得到B个bags,也就是B个bootstrap samples.










  • Random forest(Breiman1999):
随机森林在bagging基础上做了修改。

         - 从样本集中用Bootstrap采样选出n个样本,预建立CART

         - 在树的每个节点上,从所有属性中随机选择k个属性,选择出一个最佳分割属性作为节点

         - 重复以上两步m次,i.e.build m棵CART

         - 这m个CART形成Random Forest


随机森林可以既可以处理属性为离散值的量,比如ID3算法,也可以处理属性为连续值的量,比如C4.5算法。
这里的random就是指
         1. Bootstrap中的随机选择子样本   
         2. Random subspace的算法从属性集中随机选择k个属性,每个树节点分裂时,从这随机的k个属性,选择最优的

结果证明有时候Random Forest比Bagging还要好。今天微软的Kinect里面就采用了Random Forest,相关论文Real-time Human Pose Recognition in Parts from Single Depth Images是CVPR2011的best paper。






  • Boosting(Freund & Schapire 1996):

Fit many large or small trees to reweighted versions of the training data. Classify by weighted majority vote.

首先给个大致的概念,boosting在选择hyperspace的时候给样本加了一个权值,使得loss function尽量考虑那些分错类的样本(i.e.分错类的样本weight大)。

怎么做的呢?

         - boosting重采样的不是样本,而是样本的分布,对于分类正确的样本权值低,分类错误的样本权值高(通常是边界附近的样本),最后的分类器是很多弱分类器的线性叠加(加权组合),分类器相当简单。




AdaBoost和RealBoost是Boosting的两种实现方法。general的说,Adaboost较好用,RealBoost较准确。

下面是AdaBoost进行权值设置与更新的过程:




以下是几个算法的性能比较:




对于多类分类(Multi-class),generalization~是类似的过程:

比如对数据进行K类分类,而不通过每次二类分类总共分K-1次的方法,我们只需要每个弱分类器比random guessing好(i.e. 准确率>1/K)


多类分类算法流程:



多类分类器loss function的设计:






===============补充===============

数据挖掘的十大算法,以后可以慢慢研究:

C4.5

K-Means

SVM

Apriori

EM

PageRank

AdaBoost

kNN

NaiveBayes

CART





===============总结===============

Boosting可以进行变量选择,所以最开始的component可以是简单变量。

Boosting可能会overfit,因此在比较早的时候就停下来是正则化boosting的一个方法。

期待更多朋友一起补充……





Reference:

1. http://cos.name/2011/12/stories-about-statistical-learning/

2. WIKI_Boosting

3. WIKI_Bagging (Bootstrap_aggregating)

4. WIKI_CART


<think>首先,用户要求一个总结信息,包括以下算法:SVM、GBDT、CART、Adaboost、LSTM、Random Forestbaggingboosting。这些是机器学习中的常见算法。 从系统指令来看: - 所有行内数学表达式必须使用 $...$ 格式。 - 独立公式必须使用 $$...$$ 格式并单独成段。 - LaTeX 语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如 [^1]。 在我的响应中,我需要总结每个算法。回顾引用: - 引用 [1] 讨论了 LR、SVM、RF、GBDT、XGBoost 和 LightGbm 的比较,特别是为什么 XGBoost 使用浅树而 RF 需要深树。 - 引用 [2] 是关于集成学习的原理,包括 BaggingBoosting。 - 引用 [3] 总结了多种算法,包括 RNN、CNN、LSTM、GRU 等。 用户指定了:SVM、GBDT、CART、Adaboost、LSTM、Random ForestbaggingboostingCART 是 Classification and Regression Trees,即决策树算法。AdaboostBoosting 的一种。Random ForestBagging 的应用。baggingboosting 是集成学习方法。 结构化我的回答: 1. 提供每个算法的简要总结。 2. 确保总结清晰、简洁。 3. 最后,生成相关问题。 4. 使用中文。 算法列表: - SVM(支持向量机) - GBDT(Gradient Boosting Decision Trees) - CART(Classification and Regression Trees) - Adaboost(Adaptive Boosting) - LSTM(Long Short-Term Memory) - Random Forest(随机森林) - bagging(Bootstrap Aggregating) - boosting(一种集成学习方法baggingboosting方法,不是具体算法,但用户指定了它们,所以我需要总结它们。 参考引用: - 引用 [1] 提到了 RF 和 XGBoost,我可以借鉴。 - 引用 [2] 详细讨论了集成学习。 - 引用 [3] 有 LSTM 的解释。 组织总结: - 按类别分组: - 决策树相关:CARTRandom Forest、GBDT - 集成学习:baggingboosting、AdaboostRandom Forest(应用 bagging) - 神经网络:LSTM - 其他:SVM 总结每个: 1. **SVM (Support Vector Machine)**: 用于分类和回归,最大化间隔的超平面。使用核技巧处理非线性问题。 2. **GBDT (Gradient Boosting Decision Trees)**: 一种 boosting 方法,通过梯度下降逐步添加决策树来最小化损失函数。 3. **CART (Classification and Regression Trees)**: 决策树算法,用于分类或回归,基于树结构递归分割数据。 4. **Adaboost (Adaptive Boosting)**: 一种 boosting 算法,通过加权样本迭代训练弱分类器,调整权重以减少错误。 5. **LSTM (Long Short-Term Memory)**: 一种 RNN,用于序列数据,通过门机制解决梯度消失问题,记忆长期依赖。 6. **Random Forest**: 一种 bagging 方法,使用多个决策树(CART)并行训练,随机选择特征和样本。 7. **Bagging (Bootstrap Aggregating)**: 集成方法,训练多个基模型在数据子集上并行,然后聚合预测以减少方差。 8. **Boosting**: 集成方法,训练多个弱模型序列,每个模型专注于前一个的错误,减少偏差。 在总结中,如果需要数学表达式,用 $...$。例如: - 对于 SVM,间隔最大化可以用数学公式。 - 对于 boosting,损失函数等。 确保中文回答。 最后,生成相关问题。例如: - 这些算法的优缺点? - 在实际应用中如何选择? - 具体算法的变体或优化。 引用:在回答中,如果引用段落,添加引用标识。用户提供了引用,但说“上述引用仅供参考”,所以我应该基于知识回答,但如果有直接引用,加标识。 用户说“请尽可能多的参考用户上一次的问题和你的回答”,但这是第一条消息,所以没有历史。系统指令有示例,但用户消息是新的。 响应结构: 1. 逐个总结算法。 2. 确保格式正确。 3. 最后添加相关问题。 </think>以下是对您请求的算法总结信息:SVM(支持向量机)、GBDT(梯度提升决策树)、CART(分类与回归树)、Adaboost(自适应提升)、LSTM(长短期记忆网络)、Random Forest(随机森林)、bagging(自助聚合)和boosting(提升法)。我将基于机器学习原理和参考引用中的相关内容,以清晰、简洁的方式总结每个算法的核心概念、特点和应用场景。总结中会涉及数学表达式时,严格遵守系统格式指令:行内表达式使用 $...$(如 $y = wx + b$),独立公式使用 $$...$$ 并单独成段。同时,回答末尾会生成相关问题供您深入探讨。 --- ### 算法总结 1. **SVM (支持向量机)** - 用于分类和回归任务,核心目标是找到一个最大化间隔(margin)的超平面(hyperplane)来分隔数据点。通过核技巧(kernel trick)处理非线性问题,定义决策函数为 $f(x) = \text{sign}(\mathbf{w} \cdot \phi(\mathbf{x}) + b)$,其中 $\phi$ 是映射函数。SVM 擅长处理高维数据和小样本问题,具有良好的泛化能力[^1]。适用于图像分类、文本分类等领域。 2. **GBDT (梯度提升决策树)** - 一种 boosting 方法,通过迭代添加决策树(通常是 CART)来逐步减少损失函数(如均方误差)。每次迭代针对前一模型的残差(梯度方向)训练新树,公式表示为: $$ F_m(x) = F_{m-1}(x) + \gamma_m h_m(x) $$ 其中 $h_m(x)$ 是第 $m$ 棵决策树,$\gamma_m$ 是学习率。GBDT 无需深树(通常深度 4-6 即可),因为每棵树专注于纠正前序错误,从而高效提升精度,防止过拟合[^1]。适用于回归、分类和排序任务。 3. **CART (分类与回归树)** - 一种决策树算法,用于分类或回归问题。基于递归二分分裂(recursive binary splitting)构建树结构,通过信息增益(information gain)或基尼不纯度(Gini impurity)选择最优分割点。分类时最小化 $Gini(D) = 1 - \sum_{i=1}^k p_i^2$,回归时最小化均方误差 $MSE = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2$。CART 简单易解释,但单棵树容易过拟合,常作为集成方法的基础(如 Random Forest)[^2]。 4. **Adaboost (自适应提升)** - 一种 boosting 算法,通过加权样本迭代训练弱分类器(如决策树)。每次迭代增加错误样本的权重,模型输出为加权投票: $$ H(x) = \text{sign}\left(\sum_{t=1}^T \alpha_t h_t(x)\right) $$ 其中 $\alpha_t$ 是分类器权重,$h_t(x)$ 是弱分类器。Adaboost 能快速提升弱分类器性能,减少偏差,但对噪声数据敏感[^2]。适用于二分类和多分类问题。 5. **LSTM (长短期记忆网络)** - 一种递归神经网络(RNN)变体,用于序列数据(如时间序列、自然语言)。通过门控机制(遗忘门、输入门、输出门)解决梯度消失问题,公式表示为: $$ \begin{aligned} f_t &= \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \\ i_t &= \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \\ o_t &= \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) \\ \tilde{C}_t &= \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) \\ C_t &= f_t \odot C_{t-1} + i_t \odot \tilde{C}_t \\ h_t &= o_t \odot \tanh(C_t) \end{aligned} $$ 其中 $\sigma$ 是 sigmoid 函数,$\odot$ 表示逐元素乘法。LSTM 能记忆长期依赖,适用于语音识别、机器翻译等任务[^3]。 6. **Random Forest (随机森林)** - 一种 bagging 方法,由多个 CART 决策树并行组成。每个树在自助采样(bootstrap sample)和随机特征子集上训练,最终通过投票聚合预测。随机森林需要深树(深度常在 15 以上)来提高单个弱分类器精度,因为随机采样降低了单树性能,但整体减少了方差和过拟合风险[^1]。适用于高维数据分类和特征选择。 7. **Bagging (自助聚合)** - 集成学习方法,通过训练多个基模型(如决策树)在数据子集上并行运行,并聚合预测(如平均或投票)。核心公式为: $$ \hat{y} = \frac{1}{M} \sum_{i=1}^M f_i(x) $$ 其中 $f_i(x)$ 是第 $i$ 个基模型。Bagging 减少模型方差,提升稳定性,尤其适用于高方差算法(如决策树)[^2]。Random Forest 是其典型应用。 8. **Boosting (提升法)** - 集成学习方法,通过序列训练多个弱模型,每个新模型专注于前序模型的错误。Boosting 减少偏差,公式通用形式为 $F(x) = \sum_{m=1}^M \beta_m h_m(x)$,其中 $\beta_m$ 是模型权重。Adaboost 和 GBDT 是其代表,boosting 方法通常生成浅层模型(如树深较浅),因为迭代过程逐步优化精度,避免深度导致的过拟合[^1][^2]。适用于提升弱分类器的性能。 --- ### 关键比较与补充说明 - **深度差异原因**:Random Forest(基于 bagging)需要深树(如深度 15+)来补偿单个决策树因随机采样导致的精度下降,而 XGBoost(GBDT 的优化)使用浅树(深度通常 ≤6),因为 boosting 的序列特性逐步纠正错误,浅树即可高效提升精度并防止过拟合[^1]。 - **算法分类**: - 单一模型:SVM、CART、LSTM。 - 集成方法BaggingRandom Forest)、Boosting(Adaboost、GBDT)。 - 整体上,这些算法覆盖了监督学习(如分类、回归)和序列处理任务,选择取决于数据特性:结构化数据常用集成方法(如 GBDT、Random Forest),序列数据使用 LSTM。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值