生成AI資格対策(生成AIパスポート+G検定)
決定木とアンサンブル
「なぜその判断なのか」を聞かれる場面がある
融資を断られた人に理由を説明する、医師が診断の根拠を示す。こういう場面では、当てられるだけでは足りません。判断の道筋を人に見せられるモデルが要ります。
決定木は、「年齢が40歳以上か」「利用金額が1万円以上か」といった条件でデータを次々に枝分かれさせ、末端の葉で答えを出すモデルです。人が書くフローチャートとほぼ同じ形なので、なぜその予測になったのかを説明しやすいという長所があります。金融や医療で好まれるのはこのためです。
分岐の条件は自動で選ばれます。基準になるのが不純度という考え方で、あるグループにいろいろなクラスが混ざっているほど不純度が高いとみなします。不純度の測り方にはジニ係数とエントロピーがあり、分岐の前後で不純度がどれだけ下がったかを情報利得と呼びます。決定木は、情報利得が最も大きくなる条件を各段階で選んでいきます。
枝を伸ばしきると、学習データを丸暗記してしまう
決定木には弱点があります。枝を深く伸ばせば学習データを完璧に言い当てられてしまうため、過学習しやすいのです。対策は、木の深さに上限を決める、葉に必要な最小データ数を決める、いったん伸ばしきってから不要な枝を切る剪定を行う、といった方向になります。
それでも1本の木の精度には限界があります。そこで、弱いモデルを寄せ集めて強いモデルを作るアンサンブル学習(集団学習)が使われます。
| 型 | 学習の進み方 | 考え方 |
|---|---|---|
| バギング | 並列 | データを重複ありで選び直して複数のモデルを別々に学習し、多数決や平均でまとめる |
| ブースティング | 逐次 | 前のモデルが誤った点を重点的に学ぶモデルを、次々に足していく |
| スタッキング | 段構え | 複数モデルの出力を入力として、さらに別のモデルに最終判断を学ばせる |
バギングは、同じデータから重複を許してサンプルを取り直すブートストラップ法を使い、少しずつ違うデータで学習した木を並べます。各モデルが独立に学習できるので並列に計算でき、ばらつきを抑えて過学習を減らす効果があります。
ランダムフォレストと勾配ブースティングは、向きが逆
ランダムフォレストはバギングを決定木に適用したうえで、さらに各分岐で使う特徴量もランダムに選ぶという工夫を加えた手法です。データも特徴量もずらすことで木どうしが似すぎるのを防ぎ、多数決の効果を高めます。木は互いに独立なので並列に学習でき、過学習にも比較的強く、扱いやすい定番として広く使われます。
勾配ブースティングは考え方が逆です。まず浅い木を1本作り、その予測の誤差を次の木が埋めるように学習し、また残った誤差を次の木が埋める、という積み上げを繰り返します。前の木の結果を使うので逐次にしか学習できません。うまく調整すれば精度は高くなりますが、木を足しすぎると過学習に転びやすく、学習率や木の本数の調整が要ります。実装としては XGBoost、LightGBM、CatBoost といった名前が知られ、表形式のデータのコンペで長く上位を占めてきました。
試験ではこう問われる
- バギングは並列、ブースティングは逐次。この対比が最頻出です。「複数のモデルを同時に学習できるのはどちらか」という形で問われます
- 「ランダムフォレストはブースティングの一種である」は誤りです。ランダムフォレストはバギング系です
- 「前のモデルの誤りを重視して次を学習する」はブースティングの言い換えで、ランダムフォレストと迷わせてきます
- 「特徴量もランダムに選ぶ」はランダムフォレスト特有の工夫として問われます。バギング一般の説明と区別します
- 不純度、ジニ係数、情報利得は決定木の分岐基準です。勾配降下法や正則化の用語と混ぜた選択肢が並びます
- XGBoost や LightGBM が選択肢に出たら、その正体は勾配ブースティングの実装です
復習ミニクイズ
複数の決定木を、前の木が予測を誤った部分を重点的に学習するように1本ずつ順番に追加していく手法はどれですか。