随机森林
一、随机森林算法
的扩展包括两方面(除了这两点,与 没什么不同):
-
在以 决策树为基学习器构建 集成。
-
在决策树的训练过程中引入随机特征选择。
具体来说,传统决策树在选择划分特征时是在当前结点的所有特征集合中(假设有 个特征)选择一个最优特征;而在 中,对基决策树的每个结点,先从该结点的特征集合中随机选择一个包含 个特征的子集,然后再从这个子集中选择一个最优特征用于划分。这与 中基学习器的“多样性”仅通过样本扰动(通过对初始训练集采用)而不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自特征扰动,进一步提升模型的泛化能力。
参数 控制了随机性的引入程度;若令 ,则基决策树的构建与传统决策树相同;若令 ,则随机选择一个特征用于划分;一般情况下,推荐值 。
二、随机森林的推广
不仅用于分类、回归,还可用于特征转换、异常值检测等。下面对 家族的算法做一总结。
1. extra trees
是 的一个变种,与 区别:
- 对于每个决策树的训练, 用自助采样法来选择采样集作为每个决策树的训练集,而 每个决策树采用的原始训练集。
- 在选定了划分特征后, 的决策树会基于基尼系数,均方误差之类的原则,选择一个最优的特征值来划分决策树,这和传统的决策树相同。但是 比较的激进,他会随机的选择一个特征值来划分决策树。
2. Totally Random Trees Embedding
,简称 。是一种非监督学习的数据转换方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类、回归模型。我们知道,在支持向量机中运用核方法来将低维的数据集映射到高维,此处 提供了另外一种方法。
在数据转化的过程也使用了类似于 的方法,建立 个决策树来拟合数据。当决策树建立完毕后,数据集里的每个数据在 个决策树中叶子节点的位置也定下来了。比如我们有 个决策树,每个决策树有 个叶子节点,某个数据特征 划分到第一个决策树的第 个叶子节点,第二个决策树的第 个叶子节点,第三个决策树的第 个叶子节点。则 映射后的特征编码为 ,有 维的高维特征。这里特征维度之间加上空格是为了强调三棵决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法。
3. Isolation Forest
,简称 是一种异常点检测的方法。它也使用了类似于 的方法来检测异常点。
对于在 个决策树的样本集, 也会对训练集进行随机采样,但是采样个数不需要和 一样,对于 ,需要采样到采样集样本个数等于训练集个数。但是 不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
对于每一个决策树的建立, 采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和 不同。
另外, 一般会选择一个比较小的最大决策树深度 max_depth
,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
对于异常点的判断,则是将测试样本点 拟合到 棵决策树。计算在每棵决策树上该样本的叶子节点的深度。从而可以计算出平均高度 。此时我们用下面的公式计算样本点 的异常概率:
其中, 为样本个数, 的表达式为:
的取值范围是 ,取值越接近于 ,是异常点的概率越大。
三、随机森林小结
作为一个可以高度并行化的算法, 在大数据时候大有可为。
的主要优点有:
① 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
② 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
③ 在训练后,可以给出各个特征对于输出的重要性
④ 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
⑤ 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
⑥ 对部分特征缺失不敏感。
的主要缺点有:
① 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
② 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)