2014-04-13 77 views
2

我正在使用weka的Reptree算法。這個算法沒有詳細的文檔,只有:Reptree(WEKA),僅對數值屬性的值進行一次排序

快速決策樹學習器。使用信息增益/方差減少構建決策/迴歸樹,並使用減少錯誤修剪(帶有反向配合)修剪它。只對數字屬性的值進行一次排序。將缺失的值通過將相應的實例分割成塊來處理(即如C4.5中所述)。

任何人都可以請解釋我,是什麼意思:「只對數值屬性的值進行一次排序。」

我想重新實現這個算法,但仍然沒有收到結果。

謝謝

的Lubomir

回答

2

我最近一直在尋找有關Weka中的RepTree相同的答案我自己的AMD偶然發現了這個帖子,我沒能在網上找到充分的答案,所以我打開源 - 代碼並嵌入。

「只對數值屬性的值進行一次排序」。意味着該算法在運行開始時對數據集中的所有數字字段進行一次排序,然後使用排序列表計算每個樹節點中的正確拆分。

從閱讀源代碼,我能弄清楚,在一般情況下,該算法是如何工作的:

1)對於非數字(離散分類)它使用普通決策樹減少錯誤修剪 [http://www.stat.cmu.edu/~ryantibs/datamining/lectures/23-tree.pdf] 它最大化熵值,可以看到在根據weka.core.ContingencyTables源代碼中的確切方法實施 - )entropyConditionedOnRows(雙[] []矩陣)

2對於數字值分類陳ge是它使總變化最小化。

而且,對我來說,這是非常令人困惑搞清楚輸出樹,特別是在數字分類,是什麼葉輸出意味着:

years_since> = 9.03:4.64(8/0.68) [8/6.76]

1)在非數字(離散)分級後的第一個數字「:」是樹的分類值,在()括號中的第一個數字是正確的量從該葉子下的訓練集中分類實例,第二個數字是數量葉子下面但具有不同分類值的實例,而在[]括號中,第一個數字是來自修剪集合的正確分類的數量,第二個數字是錯誤的分類。 [http://weka.8497.n7.nabble.com/about-REPtree-td15188.html]

2)在數字分類,這個輸出意味着別的東西。 ':'之後的第一個數字是來自屬於該葉子的訓練集合的樣本的均值(x_mean),()括號中的第一個數字是屬於該葉子的值的權重-k-權重意味着我從代碼中得出的樣本數),而第二個值是樣本的方差,意思是sum_i_from_1_to_k((x_i-x_mean)^ 2)/ k。在[]括號中,第一個是來自屬於該葉子的修剪-L-集合的樣本數量,而第二個數字是相對於來自訓練集合的x_mean的方差,這意味着sum_i_from_1_to_L((y_i-x_mean)^ 2 )/ L

希望這有助於

+0

漂亮,尋找到代碼偉大的工作......感謝名單......其實,我試過其他包 - scikit學習蟒蛇......似乎是更快,更準確的.. 。 – gugatr0n1c

相關問題