随机森林(Random Forest,RF)
1、定义
随机森林指的是利用多棵树对样本进行训练并预测的一种分类器
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
bagging算法
bagging是一种用来提高学习算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将它们组合成一个预测函数
1、从原始样本集中使用Bootstraping(自助采样法)随机抽取n个训练样本
2、根据这n个训练样本训练出一个基学习器(模型)
3、将这个n个训练样本放回原始样本集
4、重复1、2、3步 得到m个基学习器(模型)
5、再将这m个基学习器结合
Bagging + 决策树 = 随机森林
随机森林的构造方法(与Bagging过程相似)
1、从原始样本集中使用Bootstraping(自助采样法)随机抽取n个样本组成一个训练样本集
2、根据这个 训练样本集训练出一个n_tree决策树模型
3、将这n个样本组成的训练样本集 放回原始样本集
4、重复1、2、3步 得到m个n_tree决策树模型
5、将这m个n_tree决策树组成随机森林
对于单棵树的训练
1、假设训练样本特征的个数为x,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂
2、每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。或者达到我们的限制。
2、优缺点
优点:(https://www.csdn.net/article/2015-09-25/2825795)
§ 简单,容易实现,计算开销小但是性能强大具有极高的准确率
§ 随机性的引入,使得随机森林不容易过拟合、有很好的抗噪声能力
§ 能处理很高维度的数据,并且不用做特征选择
§ 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
§ 容易实现并行化,训练速度快,可以得到变量重要性排序
缺点:
§ 随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。
§ 当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
§ 随机森林模型还有许多不好解释的地方,给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试
§ 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
3、应用场景
随机森林方法被证明对大规模数据集和存在大量且有时不相关特征的项(item)来说很有用
因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。
§ 户流失分析
§ 风险评估
-end-
===彩蛋 ===
Boosting算法:
Boosting是一族可将弱学习器提升为强学习器的算法
1、从初始训练集训练出一个基学习器(模型)
2、根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注
3、然后基于调整后的样本分布来训练下一个基学习器
4、重复123步,直至基学习器数目达到事先指定的值m,最终将这m个基学习器进行加权结合
bagging算法
bagging是一种用来提高学习算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将它们组合成一个预测函数
1、从原始样本集中使用Bootstraping(自助采样法)随机抽取n个训练样本
2、根据这n个训练样本训练出一个基学习器(模型)
3、将这个n个训练样本放回原始样本集
4、重复1、2、3步 得到m个基学习器(模型)
5、再将这m个基学习器结合
boosting算法与Bagging算法的区别
| boosting算法 | Bagging算法 |
样本抽取方式 | 每一轮的训练集是不变的,改变的只是每一个样本的权重 | 随机有放回的抽样 |
样本权重 | 根据错误率调整样本权重,错误率越大的样本权重越大
| 均匀取样,每个样本权重相等 |
预测函数 | 误差越小的预测函数其权重越大 | 所有的预测函数的权重相等 |
并行计算 | 各个预测函数必须按顺序迭代生成 | 各个预测函数可以并行生成 |