1

我正在为计算机视觉课程准备一项任务,其中涉及在从图像中提取特征后训练一个简单的分类器。由于机器学习不是这里的主要话题,我不希望学生从头开始实施学习算法。所以,我不得不向他们推荐一些参考实现。我相信决策树分类器适合于此。

问题是该类允许使用的语言种类非常多:C++、C#、Delphi。另外,我不希望学生花很多时间在任何技术问题上,比如链接图书馆。WEKA 非常适合 Java。我们也可以将 OpenCV 与所有包装器一起使用,但它相当大而且笨拙,而我想要一些简单而甜蜜的东西。

那么,您知道任何用于学习决策树的简单 C++/C#/Delphi 库吗?

4

3 回答 3

2

我知道这样的库,我最近只使用过其中一个。这两个是华夫饼基于蒂尔堡的记忆学习器(TiMBL)。两者都是免费和开源的(分别是 lgpl 和 GNU gpl)。此外,两者都是稳定、成熟的库。Waffles 是由一个开发人员创建和维护的,而我认为 TiMBL 是一个学术项目(针对语言学领域)。

在这两个中,我只使用了 Waffles 中的决策树模块(在 GDecisionTree 类中,请参阅此处的文档) Waffles 可能是这里的首选库,因为它包含一组不错的描述性统计函数以及用于诊断的绘图函数,以可视化解决方案空间等。库作者 (Mike Gashler) 还包含了一组演示应用程序,但我不记得其中一个应用程序是否是决策树。

我已经使用了 Waffles Library 中的几个类(包括决策树类),我当然可以推荐它。关于 Tilburg-Based Memory Learner,我无法多说什么,因为我从未使用过它的决策树类。

于 2010-10-05T06:35:01.307 回答
2

你看过Alglib中的“决策森林”实现吗?它是免费的学术用途。该网页声称支持 C++/C# 和(也许)Delphi。它不是决策树实现,但在许多问题上,随机森林往往比单一决策树更好的分类器,而且它们的训练时间也不长。我的猜测是,很难在多种语言中找到一致的决策树实现,因为有很多不同类型的决策树算法。

如果 Alglib 不是您需要的,维基百科文章中列出了许多其他开源随机森林库。Cavaet:Alglib 实现声称不是传统的随机森林。

于 2010-10-07T19:40:35.127 回答
0

编程语言不是问题。很难找到每种语言的决策树实现。几乎不可能保证所有版本都是相同的实现。

由于决策树是一种黑盒方法。您可以将训练和测试数据写入标准文件(例如 Weka 中的 arff 格式,opencv 也有自己的格式。)并使用命令行调用树学习器和测试器。这样,所有学生都有相同的决策树。否则,学生 A 使用好的树学习器,学生 B 使用不好的树学习器,当他们的结果不同时,你不知道是来自决策树的差异还是 CV 部分(例如特征处理)。在这种情况下,您将进入必须关心树学习器的细节/实施质量的情况。

于 2010-10-07T10:59:49.487 回答