目前無論是機器學習競賽還是工業界,最流行、應用最廣泛的xgboost其實是優化后的GBDT(LightGBM里面的boosting比較經典穩定的也是GBDT哦!),而GBDT的基分類器最常用的就是CART決策樹!掌握決策樹,對理解之后的GBDT、LightGBM都有大有裨益。
可視化的方式理解決策樹,對深刻理解這個模型很有幫助。大家最熟知的決策樹可視化實現方式是下面這種:
dot_data = export_graphviz(
clf,
out_file=None,
feature_names=df.columns[:-1],
class_names=["good", "bad"],
filled=True,
rounded=True,
special_characters=True,
)
graph2 = pydotplus.graph_from_dot_data(dot_data)
graph2.write_png("./pics/tree.png")
這種方法很好地展示了樹的結構,但並不完美:
1、基尼系數會占用圖中的空間,並且不利於解釋
2、每個節點中各目標類別的樣本數不夠直觀
今天向大家介紹一個更為驚艷的決策樹可視化庫——dtreeviz
,我們直接看幾張效果圖
dtreeviz
有以下特色:
- 利用有顏色的目標類別圖例
- 葉子大小與該葉子中的樣本數成正比
- 將≥和<用作邊緣標簽,看起來更清晰
- 決策節點利用堆疊直方圖展示特征分布,每個目標類別都會用不同的顏色顯示
- 在每個節點中各目標類別的樣本數都用直方圖的形式,這樣可以提供更多信息
dtreeviz
同樣依賴GraphViz,其安裝配置方法可以參考我之前的文章(決策樹的可視化)
GraphViz 搞定后,安裝dtreeviz即可
pip install dtreeviz # install dtreeviz for sklearn
pip install dtreeviz[xgboost] # install XGBoost related dependency
pip install dtreeviz[pyspark] # install pyspark related dependency
pip install dtreeviz[lightgbm] # install LightGBM related dependency
使用也很簡單
bingo