随机森林
一、随机森林算法
随机森林(\(Random\ Forest\),\(RF\))是 \(Bagging\) 的一个扩展变体。
\(RF\) 的扩展包括两方面(除了这两点,与 \(Bagging\) 没什么不同):
-
在以 \(CART\) 决策树为基学习器构建 \(Bagging\) 集成。
-
在决策树的训练过程中引入随机特征选择。
具体来说,传统决策树在选择划分特征时是在当前结点的所有特征集合中(假设有 \(d\) 个特征)选择一个最优特征;而在 \(RF\) 中,对基决策树的每个结点,先从该结点的特征集合中随机选择一个包含 \(k\) 个特征的子集,然后再从这个子集中选择一个最优特征用于划分。这与 \(Bagging\) 中基学习器的“多样性”仅通过样本扰动(通过对初始训练集采用)而不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自特征扰动,进一步提升模型的泛化能力。
参数 \(k\) 控制了随机性的引入程度;若令 \(k=d\) ,则基决策树的构建与传统决策树相同;若令 \(k=1\),则随机选择一个特征用于划分;一般情况下,推荐值 \(k=log_2d\)。
二、随机森林的推广
\(RF\) 不仅用于分类、回归,还可用于特征转换、异常值检测等。下面对 \(RF\) 家族的算法做一总结。
1. extra trees
\(extra\ trees\) 是 \(RF\) 的一个变种,与 \(RF\) 区别:
- 对于每个决策树的训练,\(RF\) 用自助采样法来选择采样集作为每个决策树的训练集,而 \(extra\ trees\) 每个决策树采用的原始训练集。
- 在选定了划分特征后,\(RF\) 的决策树会基于基尼系数,均方误差之类的原则,选择一个最优的特征值来划分决策树,这和传统的决策树相同。但是 \(extra\ trees\) 比较的激进,他会随机的选择一个特征值来划分决策树。
2. Totally Random Trees Embedding
\(Totally\ Random\ Trees\ Embedding\),简称 \(TRTE\)。是一种非监督学习的数据转换方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类、回归模型。我们知道,在支持向量机中运用核方法来将低维的数据集映射到高维,此处 \(TRTE\) 提供了另外一种方法。
\(TRTE\) 在数据转化的过程也使用了类似于 \(RF\) 的方法,建立 \(T\) 个决策树来拟合数据。当决策树建立完毕后,数据集里的每个数据在 \(T\) 个决策树中叶子节点的位置也定下来了。比如我们有 \(3\) 个决策树,每个决策树有 \(5\)个叶子节点,某个数据特征 \(x\) 划分到第一个决策树的第 \(2\) 个叶子节点,第二个决策树的第 \(3\) 个叶子节点,第三个决策树的第 \(5\) 个叶子节点。则 \(x\) 映射后的特征编码为 \((0,1,0,0,0,\ \ \ \ 0,0,1,0,0,\ \ \ \ 0,0,0,0,1)\),有 \(15\) 维的高维特征。这里特征维度之间加上空格是为了强调三棵决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法。
3. Isolation Forest
\(Isolation Forest\),简称 \(IForest\) 是一种异常点检测的方法。它也使用了类似于 \(RF\) 的方法来检测异常点。
对于在 \(T\) 个决策树的样本集,\(IForest\) 也会对训练集进行随机采样,但是采样个数不需要和 \(RF\) 一样,对于 \(RF\),需要采样到采样集样本个数等于训练集个数。但是 \(IForest\) 不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
对于每一个决策树的建立, \(IForest\) 采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和\(RF\) 不同。
另外,\(IForest\) 一般会选择一个比较小的最大决策树深度 max_depth
,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
对于异常点的判断,则是将测试样本点 \(x\) 拟合到 \(T\) 棵决策树。计算在每棵决策树上该样本的叶子节点的深度\(h_t(x)\)。从而可以计算出平均高度 \(h(x)\)。此时我们用下面的公式计算样本点 \(x\) 的异常概率:
其中,\(m\) 为样本个数,\(c(m)\) 的表达式为:
\(s(x,m)\) 的取值范围是 \([0,1]\),取值越接近于 \(1\),是异常点的概率越大。
三、随机森林小结
\(RF\) 作为一个可以高度并行化的算法,\(RF\) 在大数据时候大有可为。
\(RF\) 的主要优点有:
① 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
② 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
③ 在训练后,可以给出各个特征对于输出的重要性
④ 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
⑤ 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
⑥ 对部分特征缺失不敏感。
\(RF\) 的主要缺点有:
① 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
② 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。