複数モデルでのスタッキング
はじめに
Kaggle の LB スコアをチューニング指標にするのではなく、train データの 20% を Holdout として分離し、そこでのスコアを指標にする。理由は test データの分布が未知かつサイズが小さいため信頼性が低いこと、LB スコアは最終的に変動する可能性が高く安定した評価にならないこと、また固定した Holdout による評価なら過学習を避けつつ再現性のある実験比較が可能になるため。
本章では、アンサンブル手法の一つであるスタッキングを用いて、第2章で作成した特徴量を用いてAccuracyの向上を狙う。
この章では、複数モデルを使うスタッキングとは何かの説明と検証を行う。第4章で、単一モデルのサブセットを変えたスタッキングの説明と両手法の結果の比較を行う。
特に本章では 「評価基準の違いがスタッキングにどう影響するか」 を検証するため、
- AUC(確率分布の順位付けを評価、ランキング精度に直結)
- ACC(二値分類の正解率を評価、実務の正誤判定に直結)
という2つの基準を最適化に用いた。
これは実運用上、モデル利用の目的が「スコア順で並べる」場合と「0/1の判定をする」場合で異なるため、その違いを定量的に確認する価値があると考えたからである。
本実験の設計は、「ベースラインモデルの多様性がスタッキング性能にどう寄与するか」と「探索基準の違いがメタモデルにどう反映されるか」を切り分けて確認する狙いがある。これにより、単に精度を追うだけでなく、スタッキング設計の一般的な指針を得ることを目指した。
学習データ
├─ LightGBM OOF
├─ SVC OOF
├─ KNN OOF
├─ ExtraTrees OOF
└─ Logit OOF
↓
OOF行列
↓
相関チェック
↓
残りのOOF特徴量
↓
メタモデル学習
↓
Holdout評価
第一層 ベースラインモデルの選定
スタッキングの性能を高めるためには、「強さ」と「多様性」のバランスを意識してベースラインモデルを選定した。これらのモデルをOptunaでAccuracy/ROC_AUCのそれぞれを重視した探索を行い、OOF行列を作った。第二章で作成した全特徴量を使った。
LightGBM / HistGradientBoostingClassifier(Boosting系の火力枠)
非線形な関係を強力に捉えることができる。Titanic程度の規模でも有効。
SVC (RBFカーネル, probability=True)(カーネル系の非線形枠)
少数サンプルでも特徴空間を柔軟に扱える。ただし標準化が必須。
k近傍法 (kNN)(距離ベースの多様性枠)
単純ながら他モデルと予測の仕方が異なるため、アンサンブルで効果を発揮しやすい。
ExtraTreesClassifier(ランダム性を強めた木系)
高バイアス寄りだが、他の木系モデルとの差分が多様性として役立つ。
LogisticRegression (L2正則化付き)(線形枠)
単純な線形モデル。
実装上のポイント
多様性がカギ:強いモデルだけを並べるのではなく、予測の相関が低いモデルを混ぜるとスタッキングが効きやすくなる。一モデルでは限界がある予測精度を、異なるモデルの多様性を活かすことで補完できる点がスタッキングの強みである。
標準化が必要なモデル(SVC, kNN, Logistic)は、必ず Pipeline で StandardScaler を前処理に組み込みます。
リークされてしまう前処理はtrainデータ,Hold_outデータそれぞれにパイプラインで行う
ハイパーパラメータはOptunaを用いたベイズ最適化で効率的に探索をする
OOF相関で冗長モデルを削減(相関 ≥ 0.98 を間引く)
ベースモデルが増えると、ほぼ同じ動きをするモデルが混じりやすい。
各モデルの OOF確率を横に並べて相関行列を取り、0.98以上に高い相関を持つものは貪欲に除外。
こうすると、情報重複によるノイズと過学習リスクを下げられる。
結果
相関>=0.98となるペアは存在しなかった
第二層 メタモデルについて
第一層で作成したOOF行列を入力としてメタモデルを作成する。
メタモデルには LogisticRegression を使用した。
選定理由は以下の通りである。
- 軽量:Titanicのような小規模データセットでも十分に学習可能
- 解釈容易:各特徴量(OOF列)の寄与度が係数として解釈できる
- 過学習しにくい:正則化によりパラメータが安定しやすく、他の非線形モデルよりも安定したスタッキング結果が得られる。このデータセットはサンプル数も少なく、欠損値も多いことから、特徴量エンジニアリングの段階でかなりの過学習をしていた。
これらの理由から、まずはロジスティック回帰をベースに、ROC_AUC/Accuracyの両方を指標にハイパーパラメータ探索を行った。
閾値は Accuracy を主指標にして OOF 上で一度だけ最適化し、その値を test にも固定して使う。
ハイパラ選択はROC_AUC/Accuracyそれぞれを重視する。
閾値は Accuracy を主指標にして OOF 上で一度だけ最適化し、その値を test にも固定して使う。
結果
※以下、(Base最適化, Meta最適化) の形式で表記する
| Base最適化 | Meta最適化 | Best C | CV Acc | best threshold | Train Acc@thr | Holdout AUC | Holdout Acc |
|---|---|---|---|---|---|---|---|
| AUC | AUC | 0.45 | 0.8920 | 0.65 | 0.8497 | 0.8530 | 0.7765 |
| AUC | Acc | 0.01 | 0.8442 | 0.55 | 0.8441 | 0.8522 | 0.7486 |
| Acc | Acc | 0.18 | 0.8442 | 0.53 | 0.8455 | 0.8563 | 0.7877 |
| Acc | AUC | 2.13 | 0.8925 | 0.48 | 0.8483 | 0.8422 | 0.8045 |
- CVスコアでは、メタモデルでAUC重視の方がAUC値は高い。
- Besc Cの値にかなりばらつきがある
- 最適閾値はAUC、AUCのとき基準値から大きく離れた。
- Holdoutデータでは全者、AUCに差は見られなかった。
- (AUC, AUC)重視よりも、(Acc, Acc)重視のほうがAUCが高くなった。
- (Acc, Acc)のときが一番Accが高くなった。
考察
CV Accでは、メタモデルでAUC重視の方がAUC値は高い
→ 「CVにおいては、Accuracyを直接最適化するよりも、AUC最適化の方がAccuracyが高くなる場合がある。これは、AUCが確率分布全体の順序を改善するため、閾値0.5を適用したときに自然に正例・負例が分離しやすくなるからである。一方、Accuracy最適化は閾値付近のサンプル処理に依存するため、確率分布の改善につながらず、CV外のデータでは安定性を欠くことがある。」
Best Cの値にかなりばらつきがある
→ 正則化の強さ(C)は、最適化指標に強く依存する。AUC最適化では「複雑なモデルでも確率順位が正しければ良い」ためCが大きくなる傾向があり、ACC最適化では「0/1分類の正確さ」を重視するため中程度のCに収束した。このばらつきは、指標の違いがモデルの複雑さの許容度を変えることを示している。
最適閾値はAUC,AUCのとき基準値から大きく離れた
→ AUC最適化では「確率の並び順」を改善する方向に動くため、確率スコアの分布が偏りやすく、0.5付近ではなく0.65や0.48など大きくずれた閾値が最適となった。一方、ACC最適化では閾値が自然に0.5付近に落ち着き、実運用での扱いやすさが増した。
Holdoutデータでは全ての組み合わせでAUCに大きな差は見られなかった
→ Holdoutデータでは、どの組み合わせでもAUCに大きな差は見られなかった。
これは以下の理由によると考えられる。
-
AUCの性質
AUCは閾値に依存せず分布全体の順位関係を測る指標であるため、学習データ内での細かい挙動の差は吸収されやすい。 -
未知データによる平均化効果
Holdoutは学習時に見ていないデータであり、ノイズや分布の揺らぎによって「基準の違い」による小さな差は打ち消される。 -
探索基準の影響は限定的
汎化性能を決めるのは最終的に特徴量とモデル本体の分離能力であり、AUC重視かACC重視かの違いは副次的な役割しか持たない。
このため、Holdout AUCはどの基準で学習しても類似した値に収束したと解釈できる。
AUC,AUC重視よりも、(Acc, Acc)重視の方がAUCが高くなった
→ AUC最適化は確率分布全体の分離性を高める一方で、閾値0.5での正解率を必ずしも改善しない。
しかし今回の実験では、一見逆説的だが、Acc最適化が二値化境界に直接作用した結果、不要な特徴量への過適合を抑制し、確率分布がむしろ安定化したと考えられる。
その副次的効果として、Holdout Accも僅かに上回っていた。
これは「ACC最適化が結果的にモデルの汎化能力を高めた」ケースである。
(Acc, AUC)のとき最もHoldout Accが高くなった
本実験では、ベースラインをACC最適化した場合に、Holdout Accuracyが最も高くなった。
その一因として「ACC最適化がモデルの多様性を高めた」ことが考えられる。
- AUC最適化:確率分布全体の分離性能に収束 → モデル間の出力傾向が似通いやすい
- Acc最適化:閾値付近の分類に強く依存 → モデルごとに異なる誤分類パターンを生む
結果として、スタッキング時に誤りが相補的となり、メタモデルがそれぞれの長所を活かせる構造になったと解釈できる。
まとめと今後の課題
本章の検証から、スタッキングの探索基準による違いは以下のように整理できる。
- CVでは探索指標の違いが大きく反映される(特にAUC重視で安定した高AUC)
- Holdoutでは指標の違いが平均化され、AUCはほぼ同等に収束
- Accuracy最適化は多様性を生み、HoldoutでのAccを改善する可能性がある
一方で、本実験にはいくつかの限界もある。
- メタモデルをLogisticに固定しており、非線形モデルでは異なる挙動になる可能性がある
- 閾値調整を外部で行ったため、内部最適化を導入すればさらに性能が変わる可能性がある
- Titanicという小規模データに依存しているため、より大規模データでの再検証が必要
今後は、メタモデルの多様化や閾値最適化手法の統合を行い、探索基準の違いがどの程度汎化性能に寄与するかを検討する。
ベースラインモデルの追加検証
ここまでのベースラインは lgbm, svc, knn, extratrees, logistic の5モデルで構成していたが、多様性をさらに広げる目的で以下の2つを追加した。
Naive Bayes (nb)
単純で軽量なモデル。強力な性能は期待できないが、他モデルとは異なる誤り方をする可能性があり、多様性の観点で追加。
勾配ブースティング系の代表的実装の一つ。カテゴリ変数処理や正則化が工夫されており、LightGBMやXGBoostに匹敵する火力枠として追加。
なぜデフォルトのベースラインに入れなかったか
nb
Titanicのようなデータでは特徴量の分布仮定(条件付き独立など)が崩れており、単独精度は低くなることが予想された。そのため初期セットには入れなかった。
CatBoost
LightGBMと同系統の勾配ブースティングであり、「Boosting系が複数並ぶと寄与が似通いやすい」と考え、デフォルトは LightGBM のみに絞った。
追加後の結果と考察
| ①最もHoldout Accが高い(Acc, AUC)において係数寄与度 | ②同じく(Acc, AUC)で追加されたベースラインでの寄与度 |
|---|---|
![]() |
![]() |
| ③Naive Bayes classifierのみ追加 | ④CatBoostのみ追加 |
|---|---|
![]() |
![]() |
lgbm が依然として最大の寄与を持ち、主力であることに変わりはなかった。
nb, CatBoost の係数は僅かであったが、導入により logit の係数が大きく上昇した。これは nb, CatBoostの予測が異なる誤り方をするため、相補的な情報を持っているlogitのスコアが伸びた。
をしてきた
④において、これまで高い正の寄与をしてきたextratreeが負の寄与度になった。
CatBoostを追加すると、これまで高い正の寄与を示していたExtraTreesが負の寄与に転じた。両者は同じ木系モデルだが、CatBoostが誤差修正型、ExtraTreesがランダム分割型と性質が異なるため、一部の予測が重複し冗長化したと考えられる。その結果、メタモデルはExtraTreesを逆方向に作用させることでCatBoostとの差分を活かし、全体のバランスを最適化した。
負の寄与度は「分類を間違えている」という意味ではない。ロジスティック回帰では、係数が正なら予測確率が高いほど生存側に傾き、負なら逆に死亡側に傾く。つまり負の寄与度は「逆の傾向を持つ信号」として利用されているだけである。これは多様性を生み、スタッキングにおいて有効に働く場合がある。
catboost は中位の寄与にとどまり、extratreeが正の寄与をしなくなったことによりlgbmの寄与度が大きく上昇した。
nb, CatBoostを追加した場合において
| Base最適化 | Meta最適化 | Best C | CV Acc | best threshold | Train Acc@thr | Holdout AUC | Holdout Acc |
|---|---|---|---|---|---|---|---|
| AUC | AUC | 0.4906 | 0.8920 | 0.61 | 0.8469 | 0.8445 | 0.7877 |
| AUC | Acc | 0.0126 | 0.8456 | 0.51 | 0.8441 | 0.8469 | 0.7933 |
| Acc | Acc | 0.0269 | 0.8470 | 0.45 | 0.8483 | 0.8494 | 0.8045 |
| Acc | AUC | 16.2401 | 0.8937 | 0.50 | 0.8511 | 0.8460 | 0.8045 |
nb・CatBoostを追加した場合、Holdout Accが一貫して0.02〜0.03向上したのに対し、Holdout AUCは約0.01低下した。
これは 多様性の導入効果と順位情報の乱れ のトレードオフと考えられる。
Accuracy向上の背景
Naive BayesやCatBoostは既存モデルと異なる誤分類パターンを持つため、メタモデルが補完的に活用できる。特にAcc評価では「0/1の境界」が安定しやすく、誤り補正の効果が大きく出やすい。
AUC低下の背景
一方、AUCは「確率分布全体の順位付け」を重視するため、出力スコアが他モデルと噛み合わないNBやCatBoostの導入で分布の一貫性が乱れる。その結果、閾値依存のAccは改善しても、全体の順位精度(AUC)はやや低下したと考えられる。
つまり、多様性を入れると閾値判定精度(Acc)が上がるが、確率の順位付け(AUC)には負担がかかるという典型例といえる。
まとめ
本検証から、Holdoutスコアを最大化するには lgbm・SVC・kNN・ExtraTrees・Logit・Naive Bayes・CatBoost の7モデルをベースラインに組み込み、ベースラインでは Accuracy重視、メタモデルでは AUC重視 でパラメータ探索を行うのが最も有効であると分かった。
今後の記事
次の記事 👉 第三章 前処理と特徴量エンジニアリングはこちら



