任务一 随机森林算法梳理
- 目录
-
- 1.集成学习概念
- 2.个体学习器概念
- 3.boosting bagging
-
- 3.1boosting
- 3.2baggging
- 4结合策略(平均法,投票法,学习法)
-
- 4.1平均法
- 4.2投票法
- 4.3学习法
- 5.随机森林思想
- 6.随机森林的推广
- 7.随机森林优缺点
- 8.sklearn参数
-
- 参数
- 9.应用场景
目录
- 集成学习概念
- 个体学习器概念
- boosting bagging
- 结合策略(平均法,投票法,学习法)
- 随机森林思想
- 随机森林的推广
- 优缺点
- sklearn参数2
- 应用场景
1.集成学习概念
集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的"弱学习器"。
集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器"。基于该弱学习器,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的"强学习器"。
随着集成学习研究的深入,其广义的定义逐渐被学者们所接受,它是指对多个学习器集合采用学习的方式,而不对学习器性质加以区分。根据这一定义,多学习器系统 (multi-classifier system) 、多专家混合 (mixture of experts) 以及基于委员会的学习 (committee-based learning)等多个领域都可以纳入到集成学习中。但当前仍然以同质分类器的集成学习研究居多。
2.个体学习器概念
通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器。
3.boosting bagging
3.1boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
3.2baggging
Bagging是并行式集成学习方法最著名的代表,给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。
4结合策略(平均法,投票法,学习法)
4.1平均法
简单平均、加权平均
适用范围:
规模大的集成,学习的权重较多,加权平均法易导致过拟合
个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法。
4.2投票法
1.绝对多数投票法:某标记超过半数;
2.相对多数投票法:预测为得票最多的标记,若同时有多个标记的票最高,则从中随机选取一个。
3.加权投票法:提供了预测结果,与加权平均法类似。
4.3学习法
Stacking描述:先从初始数据集中训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在新数据集中,初级学习器的输出被当做样例输入特征,初始样本的标记仍被当做样例标记。
5.随机森林思想
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想–集成思想的体现。
其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。
6.随机森林的推广
extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
2) 在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是bias相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好
7.随机森林优缺点
优点:
a)随机森林算法能解决分类与回归两种类型的问题,表现良好,由于是集成学习,方差和偏差都比较低,泛化性能优越;
b)随机森林对于高维数据集的处理能力很好,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出特征的重要性程度,这是一个非常实用的功能。
c) 可以应对缺失数据;
d)当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;
e ) 高度并行化,易于分布式实现
f) 由于是树模型 ,不需要归一化即可之间使用 。
缺点:
a)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
b)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
c) 忽略属性之间的相关性。
随机森林的出现主要是为了解单一决策树可能出现的很大误差和overfitting的问题。这个算法的核心思想就是将多个不同的决策树进行组合,利用这种组合降低单一决策树有可能带来的片面性和判断不准确性。用我们常说的话来形容这个思想就是“三个臭皮匠赛过诸葛亮”。
随机森林的出现主要是为了解单一决策树可能出现的很大误差和overfitting的问题。这个算法的核心思想就是将多个不同的决策树进行组合,利用这种组合降低单一决策树有可能带来的片面性和判断不准确性。用我们常说的话来形容这个思想就是“三个臭皮匠赛过诸葛亮”。
作者:Chenyukuai6625
原文:https://blog.csdn.net/chenyukuai6625/article/details/73670473
8.sklearn参数
// RandomForestClassifier
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)
参数
n_estimators : integer, optional (default=10) 整数,可选择(默认值为10)。
criterion : string, optional (default=”gini”) 字符串,可选择(默认值为“gini”)。
max_features : int, float, string or None, optional (default=”auto”) 整数,浮点数,字符串或者无值,可选的(默认值为"auto")
max_depth : integer or None, optional (default=None) 整数或者无值,可选的(默认为None)
**min_samples_split **: int, float, optional (default=2) 整数,浮点数,可选的(默认值为2)
min_samples_leaf : int, float, optional (default=1) 整数,浮点数,可选的(默认值为1)
**min_weight_fraction_leaf **: float, optional (default=0.) 浮点数,可选的(默认值是0.0)
max_leaf_nodes : int or None, optional (default=None) 整数或者无值,可选的(默认值为None)
min_impurity_split : float, 浮点数
min_impurity_decrease : float, optional (default=0.) 浮点数,可选的(默认值为0)
bootstrap : boolean, optional (default=True) 布尔值,可选的(默认值为True)
oob_score : bool (default=False) bool,(默认值为False)
n_jobs : integer, optional (default=1) 整数,可选的(默认值为1)
random_state : int, RandomState instance or None, optional (default=None) 整数,RandomState实例,或者为None,可选(默认值为None)
verbose : int, optional (default=0) 整数,可选的(默认值为0)
warm_start : bool, optional (default=False) 布尔值,可选的(默认值为False)
class_weight : dict, list of dicts, “balanced”, 字典,字典序列,“balanced”
更详细内容可参考 https://blog.csdn.net/w952470866/article/details/78987265
9.应用场景
没有最好的分类器,只有最合适的分类器。
随机森林适用于数据维度相对低(几十维),同时对准确性有较高要求时。
因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。