阅读本文需要的背景知识点:决策树学习算法、一丢丢编程知识
最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn
一、引言
前面一节我们学习了一种简单高效的算法——决策树学习算法(Decision Tree Learning Algorithm),下面来介绍一种基于决策树的集成学习1 算法——随机森林算法2(Random Forest Algorithm)。
二、模型介绍
有一个成语叫集思广益,指的是集中群众的智慧,广泛吸收有益的意见。在机器学习算法中也有类似的思想,被称为集成学习(Ensemble learning)。
集成学习
集成学习通过训练学习出多个估计器,当需要预测时通过结合器将多个估计器的结果整合起来当作最后的结果输出。

图2-1展示了集成学习的基本流程。
集成学习的优势是提升了单个估计器的通用性与鲁棒性,比单个估计器拥有更好的预测性能。集成学习的另一个特点是能方便的进行并行化操作。
Bagging算法
Bagging 算法3是一种集成学习算法,其全称为自助聚集算法(Bootstrap aggregating),顾名思义算法由 Bootstrap 与 Aggregating 两部分组成。
图 2-2 展示了Bagging 算法使用自助取样(Bootstrapping4)生成多个子数据的示例

算法的具体步骤为:假设有一个大小为 N 的训练数据集,每次从该数据集中有放回的取选出大小为 M 的子数据集,一共选 K 次,根据这 K 个子数据集,训练学习出 K 个模型。当要预测的时候,使用这 K 个模型进行预测,再通过取平均值或者多数分类的方式,得到最后的预测结果。
随机森林算法
将多个决策树结合在一起,每次数据集是随机有放回的选出,同时随机选出部分特征作为输入,所以该算法被称为随机森林算法。可以看到随机森林算法是以决策树为估计器的Bagging算法。

图2-3展示了随机森林算法的具体流程,其中结合器在分类问题中,选择多数分类结果作为最后的结果,在回归问题中,对多个回归结果取平均值作为最后的结果。
使用Bagging算法能降低过拟合的情况,从而带来了更好的性能。单个决策树对训练集的噪声非常敏感,但通过Bagging算法降低了训练出的多颗决策树之间关联性,有效缓解了上述问题。
三、算法步骤
假设训练集 T 的大小为 N ,特征数目为 M ,随机森林的大小为 K ,随机森林算法的具体步骤如下:
遍历随机森林的大小 K 次:
从训练集 T 中有放回抽样的方式,取样N 次形成一个新子训练集 D
随机选择 m 个特征,其中 m < M
使用新的训练集 D 和 m 个特征,学习出一个完整的决策树
得到随机森林
上面算法中 m 的选择:对于分类问题,可以在每次划分时使用 M \sqrt{M} M 个特征,对于回归问题, 选择 M 3 \frac{M}{3} 3

本文介绍了随机森林算法,一种基于决策树的集成学习方法,用于音乐转谱和人声分离。通过Bagging原理结合多个决策树,提高预测性能,应用于实际在线应用反谱(Serocs)。
最低0.47元/天 解锁文章
6万+





