1. 随机森林训练过程
2. 随机森林的预测过程
输入:训练集S,测试集T,特征维数F
参数:生成的CART树的数量t,每棵树的深度d,每个结点用到的特征数量f
终止条件:结点上的样本数小于s,结点上的信息增益(比)小于m。
输出:由CART组成的随机森林
1. 随机森林训练过程
(1). 从S中有放回的抽取大小和S一样的训练集S(i),作为根结点的样本,从根结点开始训练。
(2).
1. 若当前结点达到终止条件,则设置当前结点为叶子结点。
分类问题:叶子结点输出为当前结点样本集合中数量最多的那一类C(j),概率P 为C(j)占当前样本集的比例。
回归问题:叶子结点输出为当前结点样本集各个样本值的均值。
2. 若当前结点没有到达终止条件,则从F维特征中无放回的随机选取f维特征(满足f<<F).利用这f维特征,寻找分类效果最好(信息增益(比)最大)的一维特征K及其阈值th,当前结点上的样本的第K维特征小于th的进左子树,大于th的进右子树。继续训练其他结点。
3. 重复1,2直到所有结点都训练过了或被标记为叶子结点。(一个CART训练完成)
4. 重复1,2,3直到所有CART都被训练过。
2. 随机森林的预测过程
(1) 从当前树的根结点开始,根据当前结点的第K维特征的阈值,判断是进入左子树还是进入右子树,直到到达某个叶子结点,并输出预测值。
(2) 重复(1)直到所有t颗树都输出了预测值。
分类问题:最终输出为所有树中预测概率总和最大的那个类C(j) (概率相加对比)
回归问题:最终输出为所有树输出的平均值。
随机森林的优点:
1. 实现简单
2. 可以并行化(做成并行化方法)
3. 训练速度快(并行训练节省大量时间)
4. 训练完成后可以知道哪些feature比较重要
5. 能够处理高维数据而不用做特征选择
6. 两个random不容易出现过拟合
7. 对数据容错率高,数据缺失情况下仍能保证高精度。
PS:
通过对比Bagging与Boosting的区别来对比RandomForest和GBDT
1. Bagging的训练集的选择是随机的,各轮训练集之间相互独立。
Boosting的训练集选择是独立的(每一轮训练集的权重分布不一样)。各轮训练集的选择(权值分布)与前面各轮的学习结果有关。
2. Bagging的各个预测函数没有权重,而Boosting有权重。
3. Bagging各个预测函数并行生成,Boosting顺序生成。(神经网络这种极为耗时的学习方法,Bagging可以通过并行训练节省大量时间开销)
4. 多数情况下Boosting的准确性比Bagging高,部分数据中Boosting会产生过拟合。
应用领域:邮件过滤(AdaBoost) 文本分类