2012-11-07 96 views
2

我正在使用Weka並希望使用隨機森林進行迴歸。具體來說,我有一個數據集:Weka迴歸樹林

Feature1,Feature2,...,FeatureN,Class 
1.0,X,...,1.4,Good 
1.2,Y,...,1.5,Good 
1.2,F,...,1.6,Bad 
1.1,R,...,1.5,Great 
0.9,J,...,1.1,Horrible 
0.5,K,...,1.5,Terrific 
. 
. 
. 

,而不是學習來預測最有可能的類,我想學習在班級的概率分佈對於給定的特徵向量。我的直覺是,僅僅使用Weka中的RandomForest模型是不合適的,因爲它會試圖最小化其絕對誤差(最大似然度)而不是其平方誤差(條件概率分佈)。那直覺是對的嗎?如果我想執行迴歸而不是分類,是否有更好的模型?

編輯:我現在其實在想,其實這可能不是問題。據推測,分類器正在學習條件概率P(Class | Feature1,...,FeatureN),所得到的分類只是在Class中找到最大化該概率分佈的c。因此,RandomForest分類器應該能夠給我條件概率分佈。我只需要再想一想。如果這是錯誤的,請糾正我。

回答

2

如果要明確預測每個類的概率,則需要不同的輸入數據。也就是說,您需要替換要預測的值。您可能需要n個數據集(針對n個不同的標籤),而不是每個唯一特徵向量的彙總數據。你的數據會看起來像

Feature1,...,Good 
1.0,...,0.5 
0.3,...,1.0 

Feature1,...,Bad 
1.0,...,0.8 
0.3,...,0.1 

等。您需要爲每個課程學習一個模型,並分別在要分類的任何數據上運行它們。也就是說,對於每個標籤,您都會學習一個模型來預測一個數字,該數字就是該類別中的概率,並給出一個特徵向量。

如果您不需要顯式預測概率,請查看Weka中的貝葉斯分類器,它們利用他們學習的模型中的概率。

+0

所以這裏的困難是我沒有我想學習的實際分佈數據。相反,我有它的樣本。所以如果我把每個類分成自己的數據集,那將是一個二元分類任務。我想我可以做到這一點,但是爲什麼它會更好地工作有一些原則性原因嗎? –

+0

如果您正在預測概率,它將成爲一個迴歸任務 - 您預測的是一個數字而不是一個標籤。分成幾個數據集的重點將是能夠爲每個類別單獨判斷屬於它的數據的可能性。 –