赞
踩
1. 集成学习概念、个体学习器概念
2. boosting bagging
3. 随机森林思想
4. 个体学习器结合策略
5. 随机森林的推广
6. 优缺点
7. sklearn参数
一、集成学习概念
集成学习(Ensemble Learning)不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。
随机森林中的“森林”,顾名思义,很多棵树在一起,算法决策结果也不由一棵树决定,而是“森林”里的树一起“投票”决定,博采众长,它是集成学习方法之一。
如果集成中只包含同种类型的个体学习器,比方只包含决策树,则集成是同质的,个体学习器也称为“基学习器”;如果集成中包含不同类型的学习器,比方有决策树,也有神经网络,则集成式异质的。
二、Bagging和Boosting
根据个体学习器的生成方式,集成学习方法可以分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器之间不存在强依赖关系,可同时生成的并行化方法,前者的代表是“boosting”,后者的代表是bagging和随机森林。
Bagging和Boosting的区别:
1、 bagging的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果;
2、 bagging的每个预测函数都没有权重;而boosting根据每一次训练的训练误差得到该次预测函数的权重;
3、 bagging的各个预测函数可以并行生成;而boosting只能顺序生成。
那思考两个问题,集成学习是由很多个弱学习器组成,那
1、弱学习器满足怎样条件才能在集合的时候带来效果的提升?
2、集成学习中,弱学习器如何结合在一起的?
Bagging
给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过m次随机采样操作,我们得到含m个样本的采样集,初始样本中的样本有的可能会多次出现,有的可能从未出现,
照这样,我们采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再讲这些基学习器结合,这就是bagging的基本流程,bagging通常对回归任务采用简单投票法,对回归任务使用简单平均法。
三、随机森林思想
随机森林是bagging的一个变体,它进一步在决策树的训练过程中引入了随机属性选择,具体来说,传统决策树在选择划分属性时是在当前节点的属性集合中选择一个最优属性,而在随机森林中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的集合,再从k个属性中选择一个最优属性来划分。k控制了随机属性引入的程度,一般取值为
随机森林对Bagging只做了小改动,但是与Bagging中基学习器的“多样性”仅通过样本扰动而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间的差异度的增加而进一步提升。
四、个体学习器结合策略
4.1平均法
对数值性输出
一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
4.2投票法
对分类任务来说,学习器
如果某个标记得票过半数,则预测为该标记,否则拒绝预测。
预测为得票最高的标记,若同时有多个标记获最高票,则从中随机选取一个。
与加权平均法类似,
4.3、学习法
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合,Stacking是学习法的典型代表,这里我们把个体学习器成为初级学习器,用于结合的学习器成为次级学习器或元学习器,Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。
五、随机森林的推广
5.1、extra trees
extra trees是RF的一个变种, 原理几乎和RF一模一样
5.2、Totally Random Trees Embedding
Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。
5.3、Isolation Forest
Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
六、随机森林优缺点
6.1、优点
6.2、缺点
1、随机森林在某些噪音较大的分类或回归问题上会过拟合;
2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响。
七、sklearn中随机森林分类树算法参数
class RandomForestClassifier(ForestClassifier):
参数
1、n_estimators : integer, optional (default=10) 随机森林中树的数目2、criterion : string, optional (default="gini") 树分裂的标准,可选的是信息熵或者基尼指数,默认是基尼指数
3、max_depth : integer or None, optional (default=None)
树的分裂深度,如果是“None”,则分裂到每个叶支点为同一类或直到每个叶支点少于“min_samples_split samples”
4、min_samples_split : int, float, optional (default=2)
分割内部节点所需的最少样本数量 int:如果是int值,则就是这个int值 float:如果是float值,则为min_samples_split * n_samples
5、min_samples_leaf : int, float, optional (default=1)
叶子节点上包含的样本最小值 int:就是这个int值 float:min_samples_leaf * n_samples
6、min_weight_fraction_leaf : float, optional (default=0.)
7、 max_features : int, float, string or None, optional (default="auto")
寻求最佳分割时的考虑的特征数量,即特征数达到多大时进行分割。
int:max_features等于这个int值
float:max_features是一个百分比,每(max_features * n_features)特征在每个分割出被考虑。
"auto":max_features等于sqrt(n_features)
"sqrt":同等于"auto"时
"log2":max_features=log2(n_features)
None:max_features = n_features
8、max_leaf_nodes : int or None, optional (default=None)
最大叶子节点数,以最好的优先方式生成树,最好的节点被定义为杂质相对较少,即纯度较高的叶子节点,如果是“None”,则数目不受限制。
9、min_impurity_decrease : float, optional (default=0.)
一个节点将会被分裂,如果分裂之后,杂质度的减少效果高于或等于这个值。
10、min_impurity_split : float,
树增长停止的阀值,如果不纯度高于这个值,则继续分裂,反之则是一个叶支点。
该参数已经被min_impurity_decrease取代。
11、bootstrap : boolean, optional (default=True)
是否采用有放回式的抽样方式
12、oob_score : bool (default=False)
是否使用袋外样本来估计该模型大概的准确率
13、n_jobs : int or None, optional (default=None)
n_jobs用于并行提高效率,任务并行时指定的CPU数量。
14、random_state : int, RandomState instance or None, optional (default=None)
让结果可以复现,再次运行代码时可以得到之前一样的结果
15、verbose : int, optional (default=0)
是否输出一些模型运算过程中的东西(任务进程)。
16、 warm_start : bool, optional (default=False)
是否使用上次的模型结果作为初始化,默认是False,表示不使用
17、 class_weight : dict, list of dicts, "balanced", "balanced_subsample" or None, optional (default=None)
用于标示分类模型中各种类型的权重,可以不输入,即不考虑权重
属性
1、estimators_ : list of DecisionTreeClassifier决策树列表
拟合好的子分类器列表,也就是单个决策树
2、classes_ : array of shape = [n_classes] or a list of such arrays
类别标签列表
3、 n_classes_ : int or list
类别数量
4、n_features_ : int
拟合过程中使用的特征的数量
5、 n_outputs_ : int
拟合过程中输出的数量
6、 feature_importances_ : array of shape = [n_features]
特征重要程度列表
7、 oob_score_ : float
使用oob(袋外)数据集测试得到的得分数
8、 oob_decision_function_ : array of shape = [n_samples, n_classes]
参考:《机器学习》周志华
随机森林参数理解与调优 - u012559520的博客 - CSDN博客blog.csdn.net 集成学习法之bagging方法和boosting方法 - yip的个人博客 - CSDN博客blog.csdn.netCopyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。