3
我正在執行.net
中的C4.5 algorithm,但是我不清楚它是如何處理「連續(數字)數據」的。有人能給我更詳細的解釋嗎?C4.5算法如何處理連續數據?
我正在執行.net
中的C4.5 algorithm,但是我不清楚它是如何處理「連續(數字)數據」的。有人能給我更詳細的解釋嗎?C4.5算法如何處理連續數據?
對於連續數據,C4.5使用閾值,其中小於閾值的所有內容都位於左側節點中,並且大於閾值的所有內容都位於右側節點中。問題是如何根據您提供的數據創建閾值。訣竅是按升序對連續變量進行排序。然後遍歷數據成員之間的數據挑選閾值。例如,如果屬性x的數據爲:
0.5, 1.2, 3.4, 5.4, 6.0
您首先在0.5和1.2之間選擇一個閾值。在這種情況下,我們可以使用平均值:0.85。現在計算您的雜質:
H(x < 0.85) = H(s) - l/N * H(x<0.85) - r/N * H(x>0.85).
,其中L是左節點的樣本數,r是在正確的節點的樣本數,N爲樣本的節點被分割的總數。在我們上面的例子中,x> 0.85作爲分割,那麼l = 1,r = 4,N = 5。記住計算出來的雜質差異,現在計算它在2和3之間的分割(即x> 2.3)。對每個分割重複這個(即n-1分割)。然後選擇最小化H的分割。這意味着你的分裂應該更純粹而不是分裂。如果無法提高結果節點的純度,請不要分割它。您還可以擁有最小節點大小,這樣您就不會在左側或右側節點中只包含一個樣本。