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