机器学习入门:随机森林(实际篇)
作者头像
  • 刘帅政
  • 2020-06-20 17:32:50 6

大家好,我是一名Python数据分析师,希望通过这篇文章分享我在转行过程中的经验和心得。本文将介绍我的“人工智能四部曲”,其中包括《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》以及《33天搞定机器学习》。


集成学习

集成学习是一种当前非常流行的机器学习方法。它并不是单一的算法,而是通过结合多个基础学习器(弱学习器)来形成一个强大的学习器。这些弱学习器需要具备一定的准确性和多样性,通常使用的弱学习器包括决策树和神经网络。

集成学习的组合分类器往往比单一分类器表现更好,但需满足两个条件: - 基础分类器之间应尽量独立; - 基础分类器的表现应优于随机猜测(在二分类问题中,准确率应高于50%)。

由于基础分类器通常针对同一任务进行训练,因此彼此间的独立性较难实现。因此,根据生成方式的不同,集成学习可以分为两大类: - 依赖性强的序列生成方法,如Boosting,常见的算法有Adaboost、GBDT和XGBoost等; - 依赖性较弱的并行生成方法,如Bagging,主要代表算法是随机森林(Random Forest)。


Bagging

Bagging(Bootstrap AGGREGATION)是一种通过多次随机采样来生成多个训练集的方法。例如,给定一个包含m个样本的数据集,每次随机从该数据集中抽取一个样本放入新数据集D,然后将其放回原始数据集。重复这一过程m次,即可得到一个新的数据集D'。

利用这种方法,我们可以生成多个包含m个样本的训练集,基于这些训练集训练出多个基础学习器,最后将这些学习器结合起来形成最终的模型。


随机森林

随机森林是一种基于Bagging框架的集成学习算法,其核心在于通过引入更多的随机性来改进Bagging的效果。随机森林的所有基础学习器都是CART决策树。传统决策树在选择划分属性时会在当前节点的所有属性中寻找最优属性,而随机森林的决策树则是在节点的所有属性中随机选择一部分属性,然后在这部分属性中选择最优的属性来进行左右子树的划分。

随机森林算法流程

输入数据集D={(x1,y1),(x2,y2),...,(xm,ym)},弱分类器迭代次数T。最终输出强分类器f(x)。

  1. 对于t=1,2,...,T:

    • 进行第t次随机采样,得到包含m个样本的新数据集Dt;
    • 使用采样集Dt训练第t个决策树模型Gt(x),在训练过程中,在每个节点上随机选择一部分特征,然后在这些特征中选择最优特征进行划分。
  2. 对于分类任务,选择T个弱分类器中投票最多的类别作为最终预测类别;对于回归任务,将T个弱分类器的预测结果求平均作为最终输出。


随机森林的优点与缺点

随机森林的优点包括: - 能够处理高维度数据,无需进行特征选择; - 可以处理缺失数据和不平衡数据; - 可以应用于回归和分类问题; - 容易实现并行化,速度快; - 结果易于可视化,便于分析。

随机森林的缺点包括: - 当数据噪声较大时,可能会出现过拟合现象; - 决策树数量较多时,训练所需时间和空间较大; - 模型内部机制较为复杂,难以解释。


随机森林的重要参数

在scikit-learn库中,随机森林分类器是RandomForestClassifier,回归器是RandomForestRegressor。这些类需要调参的参数包括两个部分:Bagging框架的参数和CART决策树的参数。

    本文来源:图灵汇
责任编辑: : 刘帅政
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
入门随机实际机器森林学习
    下一篇