算法梳理

随机森林算法梳理
1.集成学习的概念
2.个体学习器的概念
3.boosting和bagging
4.结合策略(平均法,投票法,学习法)
5.随机森林思想
6.随机森林的推广
7.优缺点
8.sklearn参数
9.应用场景
1.集成学习的概念
集成学习通过构建并结合多个学习器来完成学习任务。即先产生一组个体学习器,再用某种策略将它们结合起来。集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。
根据个体学习器的生成方式,目前集成学习方法大致可分为两大类:即个体学习器间存在强依赖关系、必须串行化生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法。前者的代表是boosting,后者的代表是Bagging和随机森林。

选择性集成:
对于集成学习,有个问题就是,由于随着分量分类器的不断增加,导致需要更大的内存,运行速度下降。于是提出一种方法就是选择性集成。
选择性集成:通过选择部分个体学习器来构建集成要优于使用所有的个体学习器构建的集成,也就意味着利用中小规模的选择性集成就可以获得很好的性能。

2.个体学习器的概念
集成学习构建的多个学习器都是个体学习器,同种类型的又被称为基学习器,不同类型的常称为组件学习器或直接称为个体学习器。

3.boosting和bagging
Boosting是一族可将弱学习器提升为强学习器的算法。这类算法的工作机制类似于:先从初始训练集训练出一个基学习器。再根据学习器的表现对样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器。
bagging是并行式集成学习方法最著名的代表。它直接基于自助采样法。即给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过m次随机采样操作,得到含m个样本的采样集。
假设采样出T个含m个样本的采样集,基于每个采样集训练出一个基学习器,然后 将这些基学习器进行结合。Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

4.结合策略(平均法,投票法,学习法)
1)平均法
对数值型输出h(x)∈R,最常见的结合策略是使用平均法。
简单平均法

加权平均法

其中wi是个体学习器hi的权重,通常要求wi>=0,Σwi=1。
2)投票法
绝对多数投票法

即若某标记得票过半数,则预测为该标记;否则拒绝预测。

相对多数投票法

即预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取
一个。
加权投票法

3)学习法
当训练数据很多时,一种更为强大的结合策略是使用"学习法",即通过另一个学习器来进行结合。Stacking是学习法的典型代表。Stacking先从初始数据集中训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在新数据集中,初级学习器的输出被当做样例输入特征,初始样本的标记仍被当做样例标记。

5.随机森林思想
随机森林是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性时是在当前节点的属性集合(假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个节点,先从该结点的属性集合中随机选择一个包含k个属性的子集合,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建和传统决策树没有区别。若令k=1,则是随机选择一个属性。一般情况下推荐k取logd。

6.随机森林的推广
1)extra trees
2)Totally Random Trees Embedding
3)Isolation Forest

7.优缺点
RF的优点:

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

8.sklearn参数

  1. max_features
    决策树划分时考虑的最大特征数max_features:可以使用很多种类型的值,默认是”None”,意味着划分时考虑所有的特征数
  2. max_depth
    决策树最大深度max_depth, 默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布
  3. min_samples_split
    内部节点再划分所需最小样本数min_samples_split: 这个值限制了子树继续划分的条件
  4. min_samples_leaf
    叶子节点最少样本数min_samples_leaf: 这个值限制了叶子节点最少的样本数
  5. min_weight_fraction_leaf
    这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝
  6. max_leaf_nodes
    最大叶子节点数,通过限制最大叶子节点数,可以防止过拟合,默认是”None”,即不限制最大的叶子节点数
  7. min_impurity_split
    节点划分最小不纯度,这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。即为叶子节点

9.应用场景
易于处理高维特征的场景
适合大规模数据。

参考
[1]https://blog.csdn.net/geduo_feng/article/details/79558572
[2]周志华.[机器学习]
[3]https://www.cnblogs.com/pinard/p/6156009.html

GBDT 算法梳理

  1. GBDT
  2. 前向分步算法
  3. 损失函数
  4. 负梯度拟合回归模型
  5. 分类算法
  6. 正则化
  7. 优缺点
  8. sklearn参数
  9. 应用场景

1.GBDT(Gradient Bootsting Decision Tree)梯度提升决策树算法由以下三个部分构成:
加法模型:基函数的线性组合
前向分布算法
基函数:决策树
一句话概括就是:GBDT由多颗决策树组成,把所有树的结论加起来形成最后的输出。
2. 前向分步算法
加法模型

f ( x ) = ∑ m = − 1 M β m b ( x ; γ m ) f(x)=\sum_{m=-1}^M\beta_mb(x; \gamma_m) f(x)=m=1Mβmb(x;γm)

上述公式其实就是基函数的一种线性组合,其中:
b ( x ; γ m ) b(x; \gamma_m) b(x;γm)为基函数
γ m \gamma_m γm​为基函数的参数
β m \beta_m βm为基函数的系数
在给定训练数据以及损失函数L(y,f(x))的条件下,上述模型学习问题转化为求损失函数极小值得优化问题:
m i n β m , γ m ∑ m = 1 M L ( y i , ∑ m = 1 M β m b ( x i ; y m ) ) min_{\beta_m,\gamma_m}\sum_{m=1}^ML(y_i, \sum_{m=1}^M\beta_mb(x_i;y_m)) minβm,γmm=1ML(yi,m=1Mβmb(xi;ym))
若直接求解上述问题是非常困难的,因为需要同时求解m=1,…,M个参数。

前向分步算法的求解思路就是把上述同时求多个参数拆解为每一步只求一个,更具体的是每一步只学习一个基函数及其系数,逐步逼近上述的目标函数,所以,前向分布算法每一步的优化目标为:

m i n β m , γ m ∑ i = 1 N L ( y i , β b ( x ; y ) ) minβ_{m},γ_{m}∑_{i=1}^NL(y_{i},βb(x;y)) minβm,γmi=1NL(yi,βb(x;y))
每次仅仅只学习一个基函数及其系数

前向分布算法流程
在这里插入图片描述
3 损失函数
1.分类问题损失函数
对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种:
如果是指数损失函数,则损失函数表达式
如果是对数损失函数,分为二元分类和多元分类两种,
对于二元分类
2.回归问题损失函数
对于回归算法,常用损失函数有如下4种:

均方差,这个是最常见的回归损失函数了
绝对损失,这个损失函数也很常见
Huber损失,它是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。
分位数损失。它对应的是分位数回归的损失函数

4 负梯度拟合回归模型
提升树算法
提升方法实际采用加法模型与前向分步算法,以决策树作为基函数的提升方法称为提升树。注意,这里的决策树为CART回归树,不是分类树。当问题是分类问题时,采用的决策树模型为分类回归树。
在这里插入图片描述
梯度提升
提升树用加法模型与前向分布算法实现学习的优化过程,当损失函数为平方损失函数和指数损失函数时,优化问题较简单。而对于一般的损失函数并不容易,这时候一般利用梯度下降来进行优化,而我们一般用负梯度拟合:
在这里插入图片描述5 分类算法

6.正则化
三种方法:
给没课树输出结果加一个步长η \etaη(学习率)
子采样比例
正则化剪枝
7.优缺点
优点:
可以处理连续值和离散值
较小调参的情况下效果也比较好
对异常值有较好的鲁棒性
缺点:
弱学习器之间有较强依耐性,难以并行训练。
8.sklearn参数
GradientBoostingRegressor(loss=’ls’, learning_rate=0.1, n_estimators=100,
subsample=1.0, criterion=’friedman_mse’, min_samples_split=2,
min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3,
min_impurity_decrease=0.0, min_impurity_split=None, init=None,
random_state=None, max_features=None, alpha=0.9, verbose=0,
max_leaf_nodes=None, warm_start=False, presort=’auto’,
validation_fraction=0.1, n_iter_no_change=None, tol=0.0001)
参数说明:

n_estimators:弱学习器的最大迭代次数,也就是最大弱学习器的个数。
learning_rate:步长,即每个学习器的权重缩减系数a,属于GBDT正则化方化手段之一。
subsample:子采样,取值(0,1]。决定是否对原始数据集进行采样以及采样的比例,也是GBDT正则化手段之一。
init:我们初始化的时候的弱学习器。若不设置,则使用默认的。
loss:损失函数,可选{‘ls’-平方损失函数,‘lad’绝对损失函数-,‘huber’-huber损失函数,‘quantile’-分位数损失函数},默认’ls’。
alpha:当我们在使用Huber损失"Huber"和分位数损失"quantile"时,需要指定相应的值。默认是0.9,若噪声点比较多,可适当降低这个分位数值。
criterion:决策树节搜索最优分割点的准则,默认是"friedman_mse",可选"mse"-均方误差与’mae"-绝对误差。
max_features:划分时考虑的最大特征数,就是特征抽样的意思,默认考虑全部特征。
max_depth:树的最大深度。
min_samples_split:内部节点再划分所需最小样本数。
min_samples_leaf:叶子节点最少样本数。
max_leaf_nodes:最大叶子节点数。
min_impurity_split:节点划分最小不纯度。
presort:是否预先对数据进行排序以加快最优分割点搜索的速度。默认是预先排序,若是稀疏数据,则不会预先排序,另外,稀疏数据不能设置为True。
validationfraction:为提前停止而预留的验证数据比例。当n_iter_no_change设置时才能用。
n_iter_no_change:当验证分数没有提高时,用于决定是否使用早期停止来终止训练。
8.应用场景
回归/分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值