與支持向量機(jī)一樣,決策樹也是多功能的機(jī)器學(xué)習(xí)算法,既可以執(zhí)行分類任務(wù),也可以執(zhí)行回歸任務(wù),甚至可以執(zhí)行多輸出任務(wù)。 它們是非常強(qiáng)大的算法,能夠完美契合復(fù)雜的數(shù)據(jù)集。 例如,在第 2 章中,我們?cè)诩永D醽喿》繑?shù)據(jù)集上訓(xùn)練了一個(gè) DecisionTreeRegressor 模型,并對(duì)其進(jìn)行了完美擬合(實(shí)際上是對(duì)其進(jìn)行過度擬合)。 決策樹也是隨機(jī)森林的基本組成部分(參見第 7 章),它是當(dāng)今最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一。 在本章中,我們將首先討論如何使用決策樹進(jìn)行訓(xùn)練,可視化和預(yù)測(cè)。 然后快速過一遍 Scikit-Learn 中使用的 CART 訓(xùn)練算法,并且討論如何調(diào)整樹并將其用于回歸任務(wù)。 最后,我們會(huì)討論決策樹的一些局限性。
訓(xùn)練和可視化決策樹
為了理解決策樹,我們只需構(gòu)建一個(gè)決策樹并查看它如何進(jìn)行預(yù)測(cè)。 以下代碼在鳶尾屬植物數(shù)據(jù)集上訓(xùn)練決策樹分類器(請(qǐng)參閱第4章):
from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier iris = load_iris() X = iris.data[:, 2:] # petal length and width y = iris.target tree_clf = DecisionTreeClassifier(max_depth=2) tree_clf.fit(X, y)
首先,我們可以通過使用 export_graphviz() 方法輸出一個(gè)名為 iris_tree.dot 的圖形定義文件來可視化已訓(xùn)練出來的決策樹:
from sklearn.tree import export_graphviz export_graphviz( tree_clf, out_file=image_path("iris_tree.dot"), feature_names=iris.feature_names[2:], class_names=iris.target_names, rounded=True, filled=True )
然后,w我們可以使用 graphviz 軟件包中的 dot 命令行工具將此 .dot 文件轉(zhuǎn)換為各種格式,例如 PDF 或 PNG 。下面的命令行將 .dot 文件轉(zhuǎn)換為 .png 圖像文件:
$ dot -Tpng iris_tree.dot -o iris_tree.png
我們的第一個(gè)決策樹如圖6-1所示。
預(yù)測(cè)
讓我們看看圖 6-1 中所呈現(xiàn)的樹如何進(jìn)行預(yù)測(cè)。假設(shè)我們找到了一種鳶尾花,并且想對(duì)它進(jìn)行分類。我們從根節(jié)點(diǎn)開始(深度0,頂部):該節(jié)點(diǎn)詢問花朵的花瓣長度是否小于2.45厘米。如果是,則向下移動(dòng)到根的左側(cè)子節(jié)點(diǎn)(深度1,左側(cè))。在這種情況下,它是一個(gè)葉子節(jié)點(diǎn)(即它沒有任何子節(jié)點(diǎn)),所以它不會(huì)提出任何問題:我們可以簡單地查看該節(jié)點(diǎn)的預(yù)測(cè)類,決策樹預(yù)測(cè)我們的花是一個(gè)Iris-Setosa(class = setosa)。 現(xiàn)在假設(shè)你找到另一朵花,但這次花瓣長度大于2.45厘米。我們必須向下移動(dòng)到根節(jié)點(diǎn)的右側(cè)(深度1,右側(cè)),這不是葉子節(jié)點(diǎn),因此它會(huì)提出另一個(gè)問題:花瓣寬度是否小于1.75厘米?如果是這樣,那么我們的花很可能是一個(gè) Iris-Versicolor(深度 2,左)。如果不是,它可能是一個(gè) Iris-Virginica(深度 2,右)。就是這么簡單。
決策樹的許多特質(zhì)之一是它們只需很少的數(shù)據(jù)準(zhǔn)備。 特別是,它們不需要特征縮放或居中。
每個(gè)節(jié)點(diǎn)的樣本屬性計(jì)算它應(yīng)用于的訓(xùn)練實(shí)例的數(shù)量。 例如,100 個(gè)訓(xùn)練樣本的花瓣長度大于 2.45 厘米(深度1,右側(cè)),其中 54 個(gè)花瓣寬度小于 1.75 厘米(深度2,左側(cè))。 節(jié)點(diǎn)的值屬性告訴您此節(jié)點(diǎn)適用的每個(gè)類的訓(xùn)練實(shí)例數(shù)量:例如,右下角節(jié)點(diǎn)適用于 0 Iris-Setosa,1 Iris-Versicolor和 45 Iris-Virginica。 最后,節(jié)點(diǎn)的 gini 屬性測(cè)量它的雜質(zhì):如果它適用的所有訓(xùn)練實(shí)例屬于同一個(gè)類,則節(jié)點(diǎn)是“純的”(gini = 0)。 例如,由于深度 1 左節(jié)點(diǎn)僅適用于 Iris-Setosa 訓(xùn)練實(shí)例,因此它是純的,其基尼分?jǐn)?shù)為 0。等式 6-1 顯示訓(xùn)練算法如何計(jì)算出第 i 個(gè)節(jié)點(diǎn)的 gini 分?jǐn)?shù)Gi。 例如,深度 2 左節(jié)點(diǎn)的基尼分?jǐn)?shù)等于
接下來討論另一種純度測(cè)量方法。
? 其中 p_{i,k} 是第 i 個(gè)節(jié)點(diǎn)中訓(xùn)練實(shí)例之間的 k 類實(shí)例的比率。
Scikit-Learn使用只生成二叉樹的CART算法:非葉節(jié)點(diǎn)總是有兩個(gè)孩子(即問題只有yes / no的答案)。 但是,其他算法(如ID3)生成的決策樹,可以具有兩個(gè)以上孩子的節(jié)點(diǎn)。
圖 6-2 顯示了決策樹的決策邊界。 粗的垂直線代表根節(jié)點(diǎn)(深度 0 )的決定邊界:花瓣長度 = 2.45厘米。 由于左側(cè)區(qū)域是純粹的(只有Iris-Setosa),所以不能再進(jìn)一步分割。 然而,右側(cè)區(qū)域不純,所以深度 1 右節(jié)點(diǎn)在花瓣寬度 = 1.75厘米(用虛線表示)分裂。 由于 max_depth 設(shè)置為 2,因此決策樹在此處停止。 但是,如果將max_depth設(shè)置為3,那么兩個(gè)深度 2 節(jié)點(diǎn)將分別添加另一個(gè)決策邊界(用虛線表示)。
模型解讀:白盒與黑盒
正如你所看到的,決策樹非常直觀,他們的決策很容易解釋。 這種模型通常被稱為白盒模型。 相反,正如我們將看到的,隨機(jī)森林或神經(jīng)網(wǎng)絡(luò)通常被認(rèn)為是黑匣子模型。 他們做出了很好的預(yù)測(cè),并且我們可以輕松檢查他們執(zhí)行的計(jì)算以進(jìn)行這些預(yù)測(cè); 然而,通常很難用簡單的術(shù)語來解釋為什么會(huì)做出預(yù)測(cè)。 例如,如果一個(gè)神經(jīng)網(wǎng)絡(luò)表示一個(gè)特定的人出現(xiàn)在圖片上,很難知道究竟是什么促成了這個(gè)預(yù)測(cè):模型是否認(rèn)出了這個(gè)人的眼睛? 她的嘴? 她的鼻子? 她的鞋子? 或者甚至坐在沙發(fā)上? 相反,決策樹提供了好且簡單的分類規(guī)則,甚至可以根據(jù)需要手動(dòng)調(diào)參(例如,用于花卉分類)。
估計(jì)屬于各類的概率
決策樹還可以估計(jì)實(shí)例屬于特定類 k 的概率:首先遍歷樹來找到此實(shí)例的葉子節(jié)點(diǎn),然后返回該節(jié)點(diǎn)中類 k 的訓(xùn)練實(shí)例的比率。 例如,假設(shè)你已經(jīng)找到一朵花長 5厘米,寬 1.5 厘米的花朵。 相應(yīng)的葉子節(jié)點(diǎn)是深度為 2 的左節(jié)點(diǎn),因此決策樹應(yīng)該輸出以下概率:Iris-Setosa(0/54)為 0%,Iris-Versicolor為 (49/54),即 90.7%, Iris-Virginica (5/54),即 9.3 %。 當(dāng)然,如果你讓它預(yù)測(cè)類別,它應(yīng)該輸出Iris-Versicolor(類別 1),因?yàn)樗哂凶罡叩母怕省?讓我們來檢查一下:
>>> tree_clf.predict_proba([[5, 1.5]]) array([[ 0. , 0.90740741, 0.09259259]]) >>> tree_clf.predict([[5, 1.5]]) array([1])
完美! 請(qǐng)注意,估計(jì)的概率在圖 6-2 的右下方矩形的其他任何地方都是相同的,比如說花瓣長 6 厘米,寬 1.5 厘米(盡管在這種情況下很明顯它更有可能是 Iris -Virginica)。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100772 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646 -
決策樹
+關(guān)注
關(guān)注
3文章
96瀏覽量
13552
原文標(biāo)題:【翻譯】Sklearn 與 TensorFlow 機(jī)器學(xué)習(xí)實(shí)用指南 —— 第6章 決策樹
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論