1

我正在准备一个计算机视觉类的任务,它涉及在从图像中提取特征之后训练一个简单的分类器。由于机器学习不是这里的主题,所以我不希望学生从头开始学习算法。所以,我必须向他们推荐一些参考实现。我相信决策树分类器适用于此。决策树感应开源代码

问题是各种语言允许的类很大:C++,C#,Delphi。此外,我不希望学生花费大量时间来处理链接图书馆等技术问题。 WEKA非常适合Java。我们也可以在所有的包装器上使用OpenCV,但是我想要一些简单而又甜美的东西时,它非常笨重笨拙。

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

+0

我做了信息抽取练习,我遇到过类似的问题。我所做的就是在复杂的图书馆中开发一个简单的包装 - 只展示必要的功能 - 让学生快速入门,并避免花费数小时来计算出框架。 – Skarab 2010-10-07 11:19:16

+0

是的,但我不想为不同的语言实现四种不同的包装。:)此外,我希望学生在使用某些API时获得真实的体验。不幸的是,我们的课程似乎是课程中唯一的课程,涉及到这些问题。 – 2010-10-11 05:28:03

回答

2

我知道这样的图书馆,只有其中一个我最近使用过。这两个是WafflesTilburg-Based Memory Learner(TiMBL)。两者都是免费和开源的(分别是lgpl和GNU gpl)。另外,两者都是稳定的,成熟的图书馆。 Waffles是由一位开发人员创建的,目前由一位开发人员维护,而我相信TiMBL是一个学术项目(针对语言学领域)。

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

我已经使用了华夫饼图书馆的几个类(包括决策树类),我当然可以推荐它。我无法对基于蒂尔堡的记忆学习者多说什么,因为我从来没有使用它的决策树类。

+0

我们终于推荐了Waffles和WEKA。 – 2010-10-11 05:39:44

0

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

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

+0

当然你的观点是有道理的。但是如果只有一个应用程序用户使用(该班由300名学生完成),那么检查提交内容会更简单。另外,我们希望他们把他们的程序看作是一些最终产品,而不仅仅是一些研究代码。 :)另一方面,表现方面的细微差异并不重要:我们不会根据这一点对它们进行排名。 – 2010-10-11 05:33:27

2

您是否看过Alglib中的“决策林”实施?这是免费的学术用途。该网页声称支持C++/C#和(可能)Delphi。这不是一个决策树实现,但random forests倾向于比许多问题上的单个决策树更好的分类器,并且他们不需要太长时间来训练。我的猜测是,很难在多种语言中找到一致的决策树实现,因为有很多不同类型的决策树算法。

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

+0

谢谢你的提示!我们建议学生首先使用决策树,因为它们在基本数据集上提供了足够的质量,并且在概念上很简单,即可以查看结构以进行调试或方法学目的。但是,我们建议学生在任务的高级部分实施随机森林。 – 2010-10-11 05:39:10