在本單元中,您將探索最簡單且最常見的分割演算法,該演算法會在下列設定中建立 形式的條件:
- 二元分類任務
- 範例中沒有缺少的值
- 不對範例使用預先計算的索引
假設一組 個示例,其中包含數值特徵和二元標籤「橘色」和「藍色」。我們正式地將資料集 描述如下:
其中:
- 是 (實數集) 中的數值特徵值。
- 是 {orange, blue} 中的二元分類標籤值。
我們的目標是找出閾值 (閾值),以便根據 條件將 示例分為 和 兩組,進而改善標籤的分離效果,例如 中出現更多「橘色」示例, 中出現更多「藍色」示例。
Shannon 熵是一種混亂程度的衡量標準。二元標籤:
- 當範例中的標籤平衡 (50% 藍色和 50% 橘色) 時,Shannon 熵會達到最高值。
- 當示例中的標籤為純色 (100% 藍色或 100% 橘色) 時,Shannon 熵值會降至最低 (值為零)。
圖 8. 三種不同的熵值等級。
正式來說,我們想找出可降低 和 中標籤分布熵的加權總和的條件。對應的分數是資訊增益,也就是 熵和 {,} 熵之間的差異。這項差異稱為資訊增益。
下圖顯示不良的分割方式,其中熵值仍高,資訊增益則偏低:
圖 9. 不當的分割方式不會降低標籤的熵。
相較之下,下圖顯示更佳的分割方式,其中熵會變低 (資訊增益會變高):
圖 10. 良好的分割方式可降低標籤的熵。
正式:
其中:
- 是將 分割為 和 的資訊增益。
- 是示例集 的熵。
- 是集合 中的元素數量。
- 是閾值。
- 是正值標籤值,例如上例中的「blue」。選取其他標籤做為「正向標籤」不會變更熵或資訊增益的值。
- 是 示例中正面標籤值的比例。
- 是資料集 (如本單元前述所定義)。
在以下範例中,我們會考慮含有單一數值特徵 的二元分類資料集。下圖顯示不同閾值 值 (x 軸):
- 特徵 的直方圖。
- 根據閾值,在 、 和 集合中「藍色」示例的比例。
- 、 和 中的熵。
- 資訊增益,也就是 和 {,} 之間的熵差異,經過示例數量加權。
圖 11. 四個門檻圖表。
這些圖表顯示以下內容:
- 「頻率」圖表顯示觀察值分布相對均勻,濃度介於 18 到 60 之間。值分布範圍廣泛表示有許多潛在的分割方式,這對模型訓練有益。
資料集中「藍色」標籤的比例約為 25%。「藍色標籤比率」圖表顯示,如果閾值值介於 20 和 50 之間:
- 集合包含過多的「藍色」標籤範例 (上限為 35% 的閾值 35)。
- 集合包含「blue」標籤範例的補充不足 (閾值 35 僅為 8%)。
「藍色標籤比率」和「熵」圖表都顯示,在這個閾值範圍內,標籤可以相對清楚地分開。
這項觀察結果在「資訊增益」圖表中得到證實。我們發現,在資訊增益值約為 0.074 的情況下,t~=28 可獲得最大資訊增益。因此,分割器傳回的條件會是 。
資訊增益值一律為正值或空值。當閾值值趨近最大 / 最小值時,這個值會收斂至零。在這些情況下, 或 會變成空白,而另一個變數則包含整個資料集,並顯示與 相同的熵。當 = = 時,資訊增益也可能為零。在閾值 60 時, 和 的「藍色」標籤比率與 相同,而資訊增益為零。
在實數集合 () 中, 的候選值是無限的。不過,如果有有限的例子, 分為 和 的情況也只有有限個。因此,只有有限數量的 值才有意義。
傳統做法是依遞增順序排序 xi 值,並以 xs(i) 排序,如下所示:
接著,針對 連續排序值之間的每個值,測試 。舉例來說,假設您有特定功能的 1,000 個浮點值。假設排序後,前兩個值分別為 8.5 和 8.7。在這種情況下,要測試的第一個閾值值為 8.6。
我們會將 t 的候選值設為以下值:
這個演算法的時間複雜度為 ,其中 是節點中的示例數量 (因為特徵值會排序)。套用至決策樹時,分割器演算法會套用至每個節點和每個特徵。請注意,每個節點都會收到約 1/2 的父項範例。因此,根據主定理,使用此分割器訓練決策樹的時間複雜度為:
其中:
- 是特徵數量。
- 是訓練範例數。
在這個演算法中,特徵的值並不重要,只有順序才重要。因此,這個演算法會獨立於特徵值的規模或分布情況運作。因此,在訓練決策樹時,我們不需要將數值特徵正規化或調整規模。