随机森林算法

1、集成学习思想(ensemble):

   集成学习就是“博采众长”,将一组弱学习器通过一定方法结合在一起得到强学习器,这个强学习器的泛化能力相对任何一个弱学习器都要好,甚至还有起到三个臭皮匠,赛过诸葛亮的效果。

集成学习的分类:

1.Bagging(bootstrap aggregating自助聚集):装袋。并行处理,

基本思想为:假设需要T个学习器,首先从数据集中采样出T个数据集(自主采样法bootstrap sampling:有放回的采样),然后基于这T个数据集训练分类器,再将这些基分类器进行组合做出预测,做预测采用简单投票法。

Bagging的代表算法是随机森林。

   2.Boosting:增强,后训练的学习器会比前一个更强。与Bagging能够并行处理不同,Boosting由于各基学习器之间存在强依赖关系,因此只能串行处理,也就是说Boosting实际上是一个迭代学习的过程。

   其工作机制为:先从初始训练集中训练一个基学习器,再根据基学习器的表现对训练样本分布进行调整(比如增大被误分样本的权重,减少正确分类样本的权重),使得先前基学习器做错的样本在后续的训练过程中得到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复,直到基学习器的数目达到了实现自定的值T,然后将这T个基学习器进行加权组合(比如错误率小的基学习器权重大,错误率大的基学习器权重小,这样做决策时,错误率小的基学习器影响更大)。

   Boosting的算法典型代表有AdaBoost和GBDT。

2. 决策树

   决策树是一种基本的分类与回归方法,构建决策树有三个步骤:特征选择,决策树的生成,决策树的修剪。

2.1 特征选择

   1.原则:划分数据集提高“纯度”,越快越好

   2.基本概念:

1)信息熵:衡量信息的混乱程度,熵增,信息更混乱,熵减,信息更有序。

2)条件熵:已知特征X的条件下,分类结果Y的不确定性。

3)基尼指数:另一种衡量信息混乱程度的标准,越大越混乱。

特征选取的几种方式

  1. 信息增益:ID3算法中特征选取的方法,就是用整体的信息熵减去按某一特征分裂后的条件熵,结果越大,说明这个特征越能消除不确定性,数据集划分所获得的“纯度提升”越大。
  2. 信息增益率:C4.5算法中特征选取的方法(信息增益率最大化),在信息增益的基础上。增加了一个关于特征包含类别的惩罚项,这主要是考虑到如果看纯信息增益,会导致包含类别越多的特征信息增益越大(比如编号),会导致决策树效果不好。
  3. 基尼系数:CART算法按基尼系数最小化选取特征,也是衡量信息不确定性的方法,与信息熵计算出的结果差距很小,基本可以忽略,但基尼系数计算要快得多,因为没有对数。基尼系数代表了模型的不纯度,基尼系数越小,纯度越高,特征越好。这和信息增益(比)相反。

2.2 常见决策树算法

   1. ID3:主要应用于分类任务

   2. C4.5:主要应用于分类任务

   3. CART:主要应用于预测任务,二叉树

2.3 剪枝

   完整的决策树可能并不是一颗分类预测新数据对象的最佳树,存在过度学习或过度拟合,为了提高其泛化能力,对其进行剪枝,有两种方式:预剪枝和后剪枝。

  1. 预剪枝:决策树还未生成,事先确定决策树的最大深度,或最小样本量,以防止决策树过度生长。
  2. 后剪枝:先构建好决策树,自底向上对非叶节点进行考察,若该节点对应子树换为叶节点能够带来泛化能力的提升,则把该子树换为叶节点。
  3. 随机森林

3.1 介绍

随机包括两方面:样本和特征,这两个随机过程很大程度上避免了过拟合现象的出现。

过程

  1. 从训练数据中选取n个训练数据作为输入,一般情况下n是远小于整体训练数据N的,这样就会造成有一部分数据是无法被用到的,这部分数据成为袋外数据,可以用作验证集(oob_score)
  2.  选取了输入的训练特征之后,需要构建决策树,具体的方法是每一个分裂节点从整体的特征集M中选取m个特征构建,一般情况下m远小于M
  3.  在构造每棵决策树的过程中,按照选取最小的基尼指数(和熵差别不大,但计算速度快,不用计算对数)进行分裂节点的选取进行决策树的构建(一般是CART)。决策树的其他节点都采用相同的分裂规则进行构建,直到该节点的所有训练样本都属于同一类或达到最大深度。
  4.  重复1. 2. 3.步骤多次,就得到了随机森林,可以用来对预测数据进行决策
  5.  随机森林进行决策时,所有的树同时决策,最终的结果采用多数投票的方式给出决策结果。

 随机森林的特点

  1. 构建决策树无需剪枝
  2. 森林中树的数量和特征人为设定
  3. 构建决策树时的分裂节点依据最小基尼系数原则

随机森林的优点

  1. 两个随机性的引入使其不易陷入过拟合,并具有良好的抗噪声能力。
  2.  能够处理维数很高的数据集,并且不用做特征选择,对数据的适应能力强:连续型数据和离散型数据均可,且无需规范化。
  3. 并行化,训练速度快,实现较简单。
  4. 随机森林的缺点
  1. 参数较复杂
  2. 模型训练和预测都比较慢
    1. 分类算法
  1. from sklearn.ensemble import RandomForestClassifier

导入数据包

  1. RandomForestClassifier()函数参数及属性

参数:

n_estimators 森林决策树的数目。(默认值为10)

criterion :衡量分裂质量的性能(默认值为“gini”),还可选信息增益的‘entropy’

max_features :寻找最佳分割时需要考虑的特征数目,

           automax_features=sqrt(n_features)

           log2max_features=log2(n_features)

           None:max_features=n_features

max_depth :决策树的最大深度,如果值为None,那么会扩展节点直到所有的叶子是纯净的,或直到所有的叶子包含少于min_sample_split的样本

min_samples_split分割内部节点所需要的最小样本数量

min_samples_leaf:需要在叶子节点上的最小样本数量

bootstrap建立决策树时,是否使用有放回抽样,布尔值,(默认值为True)

oob_score是否用袋外样本来估计泛化精度,布尔值,(默认值为False)

random_state随机种子,任意赋值时可使每次选出的随机数相同

属性:

estimators_ :决策树分类器的序列

classes_ :类别标签

n_classes_ :类别数量

n_features_ :执行拟合时特征的数量

n_outputs_ :执行拟合时输出的数量

feature_importances_ :特征重要性

oob_score_ :袋外估计获得的训练数据集的得分

  1. GridSearchCV()函数:网格搜索,自动调参,只要把参数输进去,就能给出最优化的结果和参数

参数:

estimator选择使用的分类器

param_grid选择需要优化的参数取值

scoring模型评价标准

 cv交叉验证折数

属性:

best_score_ :分类器的分数

best_params_ 最佳结果的参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值