2017-06-14 132 views
2

這裏是一個例子,提到matlab的fitctree考慮了特徵順序!爲什麼?matlab'fitctree'的CART算法考慮了屬性順序爲什麼?

load ionosphere % Contains X and Y variables 
Mdl = fitctree(X,Y) 
view(Mdl,'mode','graph'); 
X1=fliplr(X); 
Mdl1 = fitctree(X1,Y) 
view(Mdl1,'mode','graph'); 

不一樣的模型,因此儘管處理相同的功能,分類精度不一樣嗎?

+1

這不是重新排序,而改變的標籤。 X代表特徵矩陣,Y代表類標籤的組合向量。 下面是一個簡單的例子:假設我們有2種人顯眼和貪婪的人第一個會很高興,如果他得到5個蘋果和3個香蕉或2個蘋果和2個香蕉,另一個不會,如果他得到10個蘋果和9個香蕉或8個蘋果和8個香蕉,因爲他貪婪。在這種情況下:訓練矩陣X將是'[5 3; 2 2; 10 9; 8 8],Y會[開心快樂生氣]'。通常,如果我們對我們的特徵進行排序即[5 2 10 8]'和[3 2 9 8],我們得到相同的模型 – LMarwa

+0

當我運行你的代碼時,我得到了相當類似的樹,只有很小的差異。我假設唯一的區別是因爲要劃分A類= [2 1 2 1]和B類= [5 6 5 6],你可以在(2-5)之間劃分任何地方,並且分類是完美的。數值求解器落在中間的某處,並正確分類,從而停止。 –

+0

即使它正確分類,通常它應該呈現與該特徵的順序無關的相同模型。如果[2 1 2 1; 5 6 5 6]是Y = [A B]的訓練矩陣,因此如果我們使用[1 1 2 2; 6 6 5 5]爲相同的Y,對嗎? – LMarwa

回答

0

在您的示例中,X包含34個預測變量。預測變量不包含名稱,而fitctree只是通過列號x1, x2, ..., x34來引用它們。如果您翻轉表格,則列號會更改,因此會更改其名稱。所以x1 -> x34x2 -> x33等。

對於大多數節點,這並不重要,因爲CART總是通過使兩個子節點之間的雜質增益最大化的預測器來劃分節點。但有時會有多個預測結果導致相同的雜質增益。然後它只選擇列號最低的一個。而且,由於通過對預測變量進行重新排序來更改列號,您最終會在該節點處顯示不同的預測變量。

E.g.讓我們來看看在標記分裂:

原始訂單(mdl): noflip 翻轉順序(mdl1): flip

到目前爲止總是相同的預測和值已被選定。名稱因訂單而改變,例如舊數據中的x5 = x30在新模型中。但和x6實際上是不同的預測指標。 x6按原始順序爲x29

的預測之間的散點圖顯示了這是如何發生:

complot

其中藍色和青色的線條標示由mdlmdl1分別在該節點進行分割。正如我們所看到的,兩個拆分都會生成每個標籤具有相同數量元素的子節點!因此,CART可以選擇兩個預測變量中的任何一個,它會導致相同的雜質增益。

在這種情況下,它似乎只是選擇一個較低的列號。在非翻轉表被選擇,而不是x29,因爲3 < 29。但是如果你翻轉桌子,變成x32x29變成x6。由於6 < 32您現在結束了x6,原來的x29

最終這並不重要 - 翻轉表的決策樹不會更好或更糟。它只發生在樹開始過度擬合的較低節點上。所以你真的不必關心它。

附錄:

代碼散點圖代:

load ionosphere % Contains X and Y variables 
Mdl = fitctree(X,Y); 
view(Mdl,'mode','graph'); 
X1=fliplr(X); 
Mdl1 = fitctree(X1,Y); 
view(Mdl1,'mode','graph'); 

idx = (X(:,5)>=0.23154 & X(:,27)>=0.999945 & X(:,1)>=0.5); 
remainder = X(idx,:); 
labels = cell2mat(Y(idx,:)); 

gscatter(remainder(:,3), remainder(:,(35-6)), labels,'rgb','osd'); 

limits = [-1.5 1.5]; 
xlim(limits) 
ylim(limits) 
xlabel('predictor 3') 
ylabel('predictor 29') 
hold on 
plot([0.73 0.73], limits, '-b') 
plot(limits, [0.693 0.693], '-c') 
legend({'b' 'g'}) 
+0

非常感謝您的解釋。但即使「重複預測結果會導致相同的雜質增益」,即使我們重新排列樹,爲什麼決策樹沒有考慮建立樹的相同預測因子? – LMarwa

+0

@LMarwa我擴展瞭解釋。現在清楚了嗎? –