目錄
一、認識決策樹
1. 介紹
2. 決策樹生成過程
二、sklearn中的決策樹
1. tree.DecisionTreeClassifier(分類樹)
(1)模型基本參數
(2)模型屬性
(3)接口
2. tree.DecisionTreeRegressor(回歸樹)
3. tree.export_graphviz(將生成的決策樹導出為DOT格式,畫圖專用)
4. 其他(補充)
三、決策樹的優缺點
1. 優點
2. 缺點
一、認識決策樹
1. 介紹
????????決策樹(Decision Tree)是一種非參數的有監督學習方法,它能夠從一系列 有特征和標簽的數據中總結出決策規則,并用樹狀圖的結構來呈現這些規則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數據,在解決各種問題時都有良好表現,尤其是以樹模型為核心的各種集成算法,在各個行業和領域都有廣泛的應用。
2. 決策樹生成過程
????????上面這組數據集為 一系列已知物種以及所屬類別的數據。我們現在的目標是,將動物們分為哺乳類和非哺乳類。根據已經收集到的數據,決策樹算法 可以算出了下面的 這棵決策樹:
????????假如我們現在發現了一種 新物種 A,它是冷血動物,體表帶鱗片,并且不是胎生,我們就可以通過這棵決策樹來判斷它的 所屬類別。
涉及關鍵概念:節點
? ?① 根節點:沒有進邊,有出邊。包含最初的,針對特征的提問。
? ?② 中間節點:既有進邊也有出邊,進邊只有一條,出邊可以有很多條。都是針對特征的提問。
? ?③ 葉子節點:有進邊,沒有出邊,每個葉子節點都是一個類別標簽。
? ?④ 子節點和父節點:在兩個相連的節點中,更接近根節點的是父節點,另一個是子節點。
二、sklearn中的決策樹
????????涉及模塊:sklearn.tree
1. tree.DecisionTreeClassifier(分類樹)
(1)模型基本參數
(2)模型屬性
(3)接口
2. tree.DecisionTreeRegressor(回歸樹)
重要參數:criterion
????????回歸樹 衡量分枝質量的 指標,支持的標準有三種:
????① 輸入“mse”使用均方誤差mean squared error(MSE),父節點和葉子節點之間的 均方誤差的差額 將被用來作為 特征選擇的標準,這種方法通過使用 葉子節點的均值來 最小化 L2損失。
? ? ?② 輸入“friedman_mse”,使用費爾德曼均方誤差,這種指標使用弗里德曼針對潛在分枝中的問題改進后的均方誤差。
? ? ?③ 輸入“mae”使用絕對平均誤差MAE (mean absolute error),這種指標使用葉節點的中值來 最小化 L1損失。
3. tree.export_graphviz(將生成的決策樹導出為DOT格式,畫圖專用)
4. 其他(補充)
????????① 信息熵的計算比基尼系數緩慢一些,因為基尼系數的計算不涉及對數。另外,因為信息熵對不純度更加敏感,所以信息熵作為指標時,決策樹的生長會更加“精細”,因此對于高維數據或者噪音很多的數據,信息熵很容易過擬合,基尼系數在這種情況下效果往往比較好。
????????② random_state用來設置分枝中的隨機模式的參數,默認None,在高維度時隨機性會表現更明顯,低維度的數據(比如鳶尾花數據集),隨機性幾乎不會顯現。輸入任意整數,會一直長出同一棵樹,讓模型穩定下來。
????????③ splitter也是用來控制決策樹中的隨機選項的,有兩種輸入值,輸入“best”,決策樹在分枝時雖然隨機,但是還是會優先選擇更重要的特征進行分枝(重要性可以通過屬性feature_importances_查看),輸入“random”,決策樹在分枝時會更加隨機,樹會因為含有更多的不必要信息而更深更大,并因這些不必要信息而降低對訓練集的擬合。
????????④ 在不加限制的情況下,一棵決策樹會生長到衡量不純度的指標最優,或者沒有更多的特征可用為止,這樣的決策樹往往會過擬合。為了讓決策樹有更好的泛化性,需要要對決策樹進行剪枝。剪枝策略對決策樹的影響巨大,正確的剪枝策略是優化決策樹算法的核心。
三、決策樹的優缺點
1. 優點
????① 易于 理解和解釋,因為樹木可以畫出來被看見。
????② 需要 很少的 數據準備。其他很多算法 通常都需要 數據規范化,需要 創建虛擬變量并刪除空值 等。但 sklearn中的決策樹模塊 不支持對缺失值的處理。
????③ 使用 樹的成本(比如說,在預測數據的時候)是用于 訓練樹的數據點的 數量的 對數,相比于 其他算法,這是一個 很低的成本。
????④ 能夠同時 處理數字 和 分類 數據,既可以做 回歸又可以 做分類。其他技術通常專門用于分析僅具有 一種變量類型的 數據集。
????⑤ 能夠處理 多輸出問題,即含有 多個標簽的問題(注意與一個標簽中含有多種標簽分類的問題區別開)
????⑥ 是一個 白盒模型,結果很容易 能夠被解釋。如果 在模型中可以觀察 到給定的情況,則可以通過布爾邏輯 輕松解釋 條件。相反,在 黑盒模型中(例如,在人工神經網絡中),結果可能更難以解釋。
????⑦ 可以 使用統計測試驗證 模型,這讓 我們可以 考慮模型的 可靠性。即使 其假設 在某種程度上 違反了生成數據的 真實模型,也能夠表現良好。
2. 缺點
????① 決策樹學習者 可能創建 過于復雜的樹,這些 樹不能很好地 推廣數據。這稱為過度擬合。修剪,設置葉節點所需的最小樣本數或設置樹的最大深度等機制是 避免此問題所必需的。
????② 決策樹 可能不穩定,數據中 微小的變化 可能導致 生成完全 不同的樹,這個問題需要通過 集成算法來解 決。
????③ 決策樹的 學習是 基于貪婪算法,它靠 優化局部最優(每個節點的最優)來 試圖達到整體的最優,但這種 做法 不能保證返回 全局最優決策樹。這個問題 也可以 由集成算法 來解決,在隨機森林中,特征和樣本會 在分枝過程中 被隨機采樣。
????④ 有些概念 很難學習,因為決策樹 不容易表達它們,例如 XOR,奇偶校驗 或多路復用器問題。
????⑤ 如果標簽中的 某些類占 主導地位,決策樹學習者 會創建偏向 主導類的樹。因此,建議在 擬合決策樹 之前 平衡數據集。