30日Python #24 機械の判断を、のぞき込む(plot_tree)
「読むデータ」は、臨床医・医学研究者のための、Pythonと機械学習の連載。プログラミングの技術を身につけることから始め、自分のデータを「読み解く」力を鍛える。今回の#24では、学習した決定木そのものを図にして、機械がどんな樹を育てたのかを読む。第22回で動かしたモデルの、中身をのぞき込む回だ。所要時間は5分。読むのに3分、手を動かすのに2分。
「なぜそう判断したか」が、見える
第22回で、決定木に学習させた。第23回で、それが患者を予測することも確かめた。だが、ここまで機械の「中身」は、見ていない。
多くの機械学習モデルは、中身が見えない。よく当たるが、なぜそう判断したのかは分からない——いわゆるブラックボックスだ。だが決定木は違う。育てた樹を、そのまま図にして見られる。「どの項目を、どの値で分けたか」を、人間の目で一つずつ追えるのだ。
これは、本連載の名前「読むデータ」が最もよく効く瞬間だ。機械の判断を、ありのままに読む。第21回では考え方を示す概念図を見たが、今日見るのは、前回あなたが実際に学習させたモデルそのものの姿だ。
要点
学習した決定木は plot_tree で図にできる。機械が組み上げた枝分かれが、そのまま見える。
各ノードには「分ける条件」「振り分けられた人数」「悪性・良性の内訳」が書かれている。
機械が最初の手がかりに何を選んだかを読めば、機械の「着眼点」が分かる。
1. 樹を、図にする
学習済みモデル(第22回の model)を、plot_tree で描く。
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 8))
plot_tree(model,
feature_names=X.columns,
class_names=["malignant", "benign"],
filled=True, rounded=True, fontsize=9)
plt.show()実行すると、この枝分かれした樹が表示される。

plot_tree は、機械が育てた決定木を、そのまま図にする命令だ。feature_names で項目名を、class_names で答えの名前(malignant=悪性, benign=良性)を表示させ、filled=True で、悪性寄り、良性寄りに応じてノードを色分けしている。これは整えた概念図ではない。機械が吐き出した、ありのままの姿だ。
2. ノードに書かれていることを、読む
一つひとつのノード(箱)には、いくつかの情報が詰まっている。いちばん上の箱(根)を読んでみよう。
一行目に、分ける条件。機械が最初の手がかりに選んだのは worst concave points(核の切れ込みの最悪値)だ。第21回の概念図でも切れ込みが最初に来たが、本物のモデルも、与えた30項目の中から、これを第一の質問に選んでいる。核膜の不整は、病理で悪性を疑う重要な所見だ。機械はそれを、データだけから自力で見つけ出した。
samples はその箱に振り分けられた人数、value は悪性・良性の内訳、class はそのノードでの多数派の答えだ。下へたどるほど、悪性と良性がきれいに分かれていく。色が濃くなるほど、どちらか一方に偏っている、つまり判断がはっきりしている、という意味だ。
3. 読めることの、価値
この「読める」という性質は、医療でこそ重要になる。
もしモデルが「この患者は悪性」と予測したとき、決定木なら理由を追える。「核の切れ込みが基準を超え、さらに面積も大きかったから」と、判断の道筋を示せる。患者にも、同僚にも、説明できる。
よく当たるが理由を説明できないモデルと、多少精度が劣っても理由を読めるモデル。どちらを目の前の患者に使うべきか、これは、機械学習を医療に持ち込むときの、核心的な問いだ。決定木は「読める」側の代表であり、その価値を、今日あなたは自分の目で確かめた。
(この「読めるかどうか」は、連載の終盤でもう一度、強い形で問い直すことになる。)
今日の実習(2分)
新しいセルで、上から順にやってみよう。
(第22回の学習済み model がある状態を想定)
本文1のコードを実行し、決定木の図を表示する。
いちばん上の箱(根)を読み、機械が最初に選んだ項目が worst concave points であることを確かめる。
一番下の箱(葉)の色に注目する。濃い箱ほど、悪性または良性にはっきり偏っていることを読み取る。
機械が育てた樹を、上から下へ、自分の目でたどってみよう。
今日のまとめ
決定木は plot_tree で図にでき、機械の判断を一つずつ読める。機械が最初の手がかりに選んだのは「核の切れ込み」——病理医が悪性を疑う所見を、データだけから見つけ出していた。よく当たるだけでなく、なぜそう判断したかを読める。この「読めること」の価値こそ、決定木がくれる最大の贈り物だ。
次回、第25回「当たった、外れた、を数える」
いよいよモデルの成績をつける。学習に使っていないテスト用の患者で、どれだけ当てられたか。正解率と、その限界を学ぶ。
