概括
在這篇文章中,我們比較了在 Python 和 JMP 中運行決策樹,並示範如何透過應用數學標準來確定每個分支應根據哪個參數進行分割,從而在 JMP 中建立自訂決策樹。 Python 中不提供這種層級的自訂,這使得 JMP 對於建立穩健的模型至關重要,在模型中不要隨意分割參數。此外,這種自訂可以讓您利用您的主題專業知識來證明每個分支的拆分參數選擇的合理性,特別是當多個候選者表現出類似的有效拆分資料的能力時。
此範例使用 Wine 資料集,這是 Scikit-learn 庫中常見的分類範例。它包含對義大利同一地區種植但源自三種不同品種(葡萄類型)的葡萄酒的化學分析結果:標記為 0,1 和 2。包括類黃酮(苯酚的一種)含量、葡萄酒的顏色強度、灰分含量、色調、酒精含量等。
目標?建立決策樹分類模型,以盡可能使用最少和最便宜的表徵測試來識別葡萄酒的來源。
使用Python
首先,讓我們看看用 Python 建立決策樹模型時會得到什麼。 (此腳本附在本文中。)可以使用 matplot lib 繪製產生的模型,如下所示。第一個模型根據顏色強度、脯胺酸、灰分含量、類黃酮和酒精含量進行分類。

除非將隨機種子設為某個值,否則每次新運行時樹看起來都會有所不同,如下所示。雖然這是預期的,但它並不實際,因為您可能希望選擇運行速度快和/或便宜的最佳表徵測試集。在此範例中,無法控制發生分割的特徵或分割的值。
|
隨機狀態 = 2
|
隨機狀態 = 14
|
隨機狀態 = 24
|
|
|
|
|
所需測試:顏色強度、脯胺酸、酒精含量、類黃酮
|
需測試:顏色強度、脯胺酸、灰分、灰分鹼度、蘋果酸、酒精含量、類黃酮
|
需測試:顏色強度、脯胺酸、od280/od315、類黃酮、灰分鹼度
|
使用 JMP
讓我們看看 JMP 在選擇特徵測試時是否可以做得更好。
在 JMP 中執行決策樹平台時,前往分析 > 預測建模 > 分區。將驗證部分設為 0.3 並選取資訊缺失和序數限制順序。

該報告看起來像這樣。按一下“開始”。

點選 Go 會產生此決策樹:

就像在 Python 中一樣,重新進行分析會為決策樹建立另一個結構。
那麼,如何才能創建一個基於對所使用的表徵方法的某些偏好的隨機性較低的模型呢?我們將覆蓋分割並自己選擇參數。
首先,我們將點擊“修剪”按鈕。透過點擊“修剪”,您可以後退一步,一次刪除一個分支。接下來,按一下候選清單並按G^2 或 Logworth 分裂準則對特徵進行排序,以便您分析哪些參數位於清單頂部。
下面您可以看到不同的候選物質,其中類黃酮位於清單頂部,其次是 od280/od315、總酚和脯氨酸。

G^2 值告訴我們模型將選擇類黃酮作為分裂標準。如果按一下“拆分”,將使用類黃酮值 1.41 進行分支拆分。
接下來,展開類黃酮 < 1.41 下的候選清單。顏色強度現在位於清單的頂部。然而,也許測量色調比測量顏色強度更容易。如果是這樣,請按一下紅色三角形,然後按一下「Split Specific」。然後,您可以選擇分割參數(在本例中為色調),然後按一下「確定」。

下面的新樹表明,如果類黃酮水平低於 1.41 並且色調低於 0.906,則該葡萄酒由品種 #2 釀製的機率為 0.98。另一方面,當色調高於 0.906 時,它很可能來自 1 型葡萄。當類黃酮水平大於 1.41 時,該品種有近 50-50 的機會為 0 或 1。

在類黃酮 >=1.41 下,查看候選化合物及其 G^2 水平。酒精和脯胺酸具有相似的 G^2 值。由於測試酒精含量更容易,因此將酒精分為兩部分。它表明,如果酒精含量大於13.5,則該酒有91%的可能性來自0型葡萄。

最終建立的決策樹模型如下。我們現在需要更少的表徵測試來識別葡萄的類型,並且所選的測試更容易執行,而無需採用黑盒方法來選擇這些參數。然後可以輕鬆保存決策規則並與其他人共用。
