天天看点

Task1 随机森林算法梳理

文章目录

    • 集成学习:Task1 随机森林算法梳理
      • 1.1. 集成学习的概念 &
      • 1.2. 个体学习器的概念
      • 1.3. boosting bagging的概念、异同点
      • 1.4. 理解不同的结合策略(平均法,投票法,学习法)
      • 1.5. 随机森林的思想
      • 1.6. 随机森林的推广
      • 1.7. 随机森林的优缺点
      • 1.8. 随机森林在sklearn中的参数解释
      • 1.9. 随机森林的应用场景

集成学习:Task1 随机森林算法梳理

1.1. 集成学习的概念 &

1.2. 个体学习器的概念

  • 又称为“多分类器系统”(multi-classifier system)、“基于委员会的学习”(committee-based learning)等。

    基本的想法是结合多个学习器,获得比单一学习器泛化性能更好的学习器。

    根据个体学习器的生成方式,目前集成学习大致可分为两大类:

    • 序列化方法:个体学习器间存在强依赖关系、必须串行生成,代表是Boosting;
    • 并行化方法:个体学习器间不存在强依赖关系、可同时生成,代表是Bagging和“随机森林”(Random Forest)。
  • 集成学习的理论基础是 PAC 理论、强可学习与弱可学习理论。
    • 集成学习的理论基础表明强可学习器与弱可学习器是等价的。(因此可以寻找方法将弱可学习器转换为强可学习器,而不必去直接寻找较难发现的强可学习器。)

      具有代表性的集成学习方法有Boosting,Bagging,随机森林。

1.3. boosting bagging的概念、异同点

集成算法中主要分为bagging算法与boosting算法,

  • Bagging算法,过程如下:
    • 从原始样本集中使用Bootstraping 方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集

      (k个训练集之间相互独立,元素可以有重复)。

    • 对于n个训练集,我们训练k个模型,(这个模型可根据具体的情况而定,可以是决策树,knn等)
    • 对于分类问题:由投票表决产生的分类结果;
    • 对于回归问题,由k个模型预测结果的均值作为最后预测的结果(所有模型的重要性相同)。
  • Boosting(提升法),过程如下:
    • 对于训练集中的每个样本建立权值wi,表示对每个样本的权重

      其关键在与对于被错误分类的样本权重会在下一轮的分类中获得更大的权重(错误分类的样本的权重增加)。

    • 加大分类误差率较小的弱分类器的权值,使其在表决中起到更大的作用,
    • 减小分类误差率较大的弱分类器的权值,使其在表决中起到较小的作用。
    • 每一次迭代都得到一个弱分类器,需要使用某种策略将其组合,最为最终模型,

      (adaboost给每个迭代之后的弱分类器一个权值,将其线性组合作为最终的分类器,误差小的分类器权值越大。)

  • Bagging和Boosting 的主要区别
主要区别 Bagging Boosting
样本选择 随机有放回的取样(Bootstraping) 每一轮训练的样本是固定的,改变的是每个样本的权重
样本权重 均匀取样,且每个样本的权重相同 根据错误率调整样本权重,错误率越大的样本权重会变大
预测函数 所有的预测函数权值相同 误差越小的预测函数其权值越大
计算过程 各个预测函数可以并行生成 各个预测函数必须按照顺序串行生成
  • 将决策树与以上框架组合成新的算法

    Bagging + 决策树 = 随机森林

    AdaBoost + 决策树 = 提升树

    Gradient + 决策树 = GDBT

1.4. 理解不同的结合策略(平均法,投票法,学习法)

  • 结合策略作用

    1.提高泛化性能

    2.降低进入局部最小点的风险

    3.扩大假设空间

  • 平均法:简单平均、加权平均

    1.规模大的集成,学习的权重较多,加权平均法易导致过拟合

    2.个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法。

  • 投票法:

    1.绝对多数投票法:某标记超过半数;

    2.相对多数投票法:预测为得票最多的标记,若同时有多个标记的票最高,则从中随机选取一个。

    3.加权投票法:提供了预测结果,与加权平均法类似。

  • 学习法

    1.先从初始数据集中训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。

    2.在新数据集中,初级学习器的输出被当做样例输入特征,初始样本的标记仍被当做样例标记。

1.5. 随机森林的思想

随机森林(Random Forest)算法原理

随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。

  • 首先,用自助法(bootstrap方法生成m个训练集,
  • 然后,对于每个训练集,构造一颗决策树,
    • 在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,
    • 而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。

随机森林的方法由于有了bagging(集成的思想)在,

  • 实际上相当于对于样本和特征都进行了采样,所以可以避免过拟合。
  • 如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程

1.6. 随机森林的推广

Bagging与随机森林算法原理小结

1.extra trees

2.Totally Random Trees Embedding

3.Isolation Forest

1.7. 随机森林的优缺点

  • RF的主要优点有:
  1. 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
  2. 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
  3. 在训练后,可以给出各个特征对于输出的重要性
  4. 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
  5. 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
  6. 对部分特征缺失不敏感。
  • RF的主要缺点有:
  1. 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
  2. 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

1.8. 随机森林在sklearn中的参数解释

  • sklearn随机森林-分类参数详解
  • Python Sklearn库中的随机森林分类 RandomForestClassifier
  • 随机森林在sklearn中的实现
class sklearn.ensemble.RandomForestClassifier(
	n_estimators=10, 					#	森林里(决策)树的数目
	criterion='gini', 					#	衡量分裂质量的性能(函数)
	max_depth=None, 					#	(决策)树的最大深度
	min_samples_split=2, 				#	分割内部节点所需要的最小样本数量
	min_samples_leaf=1, 				#	需要在叶子结点上的最小样本数量
	min_weight_fraction_leaf=0.0, 		#	一个叶子节点所需要的权重总和(所有的输入样本)的最小加权分数
	max_features=’auto’, 				#	寻找最佳分割时需要考虑的特征数目
	max_leaf_nodes=None, 				#	叶子节点的数量阀值
	min_impurity_decrease=0.0, 			#	节点分裂(不纯度的下降程度)阀值
	min_impurity_split=None, 			#	早停阈值
	bootstrap=True, 					#	是否使用有放回抽样
	oob_score=False, 					#	是否使用袋外样本来估计泛化精
	n_jobs=1, 							#	线程数
	random_state=None, 					#	随机数生成器使用的种子
	verbose=0, 							#	控制决策树建立过程的冗余度
	warm_start=False, 					#	热启动
	class_weight=None					#	分类权重
	)
           

1.9. 随机森林的应用场景

分类?多分类?

回归?

有缺失值的样本?

继续阅读