#tree #random-forest #machine-learning #ensemble #decision-tree

forester

一个用于实现各种随机森林和决策树版本的crate

3个版本

使用旧的Rust 2015

0.0.3 2018年6月30日
0.0.2 2018年4月23日
0.0.1 2018年3月31日

#761 in 机器学习

MIT 协议

75KB
2K SLoC

forester

一个Rust crate,用于将随机森林和决策树定制到 你的 数据集。

本项目的目标是提供用于处理随机森林的通用功能。目前处于非常早期的开发阶段。API的关键元素开始稳定,所以如果你有任何关于它的想法,现在就是打开一个 Issue 这里 的好时机

别忘了查看 仓库中的示例

概述

这个随机森林的实现受到 (1) 的很大启发。特别是,将基于特质在一个统一框架中提供分类、回归和密度估计模型。

概念上,crate提供了两个主要部分

  1. 一个通用的框架,包括
    • 拟合和预测树和森林的功能
    • 特质,允许这些功能理解任意用户数据
  2. 用于插入框架的通用构建块
    • 分割/性能标准(RMSE、GINI、...)
    • 分割查找策略(最佳随机、CART、...)
    • 集成组合器(聚合、提升 - 待完成)

用法

大多数随机森林的实现都针对表格数据,或多或少随机选择尝试特定分割的特征列。这仅适用于有限预定义的特征集。然而,如 (1) 中所述,随机森林可以与无限维特征空间一起工作。换句话说,标识特征参数可以是连续值,而不是离散列索引。

无限维特征空间的例子是由两列的线性组合形成的特征(参见rotational_classifier示例)。选择哪些特征以及如何解释它们很大程度上取决于数据,因此提供一些任意的特征提取方法几乎没有意义。相反,关于数据的推理工作被推迟给了crate的用户,他们需要实现SampleDescriptionTrainingData特性。这些特性定义了如何从数据中参数化和提取特征,如何在树叶子中进行最终预测,如何评估分割,等等...

示例

示例可以在存储库中找到。

文献

  1. A. Criminisi, J. Shotton和E. Konukoglu, "决策森林用于分类、回归、密度估计、流形学习和半监督学习", 微软研究技术报告TR-2011-114 (PDF)

依赖项

~630KB