Random Forest学习笔记

今天学习一个经典的机器学习算法,Random Forest,老规矩先放参考文献(ps参考文献筛了好几轮,因为我发现很多文献讲的都不一样)

文章目录

  • References
  • Random Forest
    • Bootstrap + Random Feature Selection
      • 为什么要可放回采样?
      • 为什么要对每个样本的特征维度进行采样?
    • Aggregating

References

  • 1.随机森林算法
  • 2.Random Forest Algorithm Clearly Explained!

Random Forest

Random Forest学习笔记_第1张图片图源自参考文献2,上图是6个数据,每个数据有5个特征维度,且有两种不同类型的标签,典型的二分类问题。
Random Forest学习笔记_第2张图片

Bootstrap + Random Feature Selection

对于包含m个样本的原始数据集,对该原始数据集进行可放回抽样m次,上图就对原始数据进行了6次有放回的采样,且该过程重复了四次,接着对每个样本的特征维度也进行采样后得到了上图上半部分,这时你可能会有以下问题:

为什么要可放回采样?

首先对于一个样本,其每次被采样到的概率是 1 m \frac{1}{m} m1,不被采样到的概率是 1 − 1 m 1-\frac{1}{m} 1m1。m次采样都没被抽到的概率是 ( 1 − 1 m ) m {(1-\frac{1}{m})}^m (1m1)m ,那么让我们看看样本个数对数据中无法采样到的样本的比例的影响:Random Forest学习笔记_第3张图片
上图中横坐标采用了e为底的指数坐标( e 2 − e 14 e^2-e^{14} e2e14),可以发现当x趋向无穷时,无法采样到的样本的比例为 l i m x → ∞ ( 1 − 1 m ) m = 1 e lim_{x \rightarrow \infty}{(1-\frac{1}{m})^m}=\frac{1}{e} limx(1m1)m=e1,这些数据被称为Out of Bag(OOB)。Breiman在随机森林的论文中证明了OOB误差估计是一种可以取代测试集的误差估计方法,即OOB误差是测试数据集误差的无偏估计,因此可以用来检测模型的泛化能力。

为什么要对每个样本的特征维度进行采样?

1.为了降低树之间的相关性,如果选择所有的特征,那得到的结果具有高方差。
2.不是每个特征都对预测有帮助,删掉一些特征有时反而能更好的预测,但有时候会更差。
那么如何选择特征的数量呢,一般如果总特征数为n,选择 l o g ( n ) log(n) log(n)或者 n \sqrt{n} n 的特征数较好。

Aggregating

选好数据和特征之后构建决策树,测试集数据根据所有的决策树投票决定最优结果。如下图所示。
Random Forest学习笔记_第4张图片

你可能感兴趣的:(算法学习,随机森林,机器学习,算法)