機械学習

機械学習スタッキング例

投稿日:

汎化性能を上げるためkaggleでよく利用されている、スタッキングの実行例をメモしておきます。

スタッキングとは、単一の学習器をそのまま使うのではなく、複数の学習きを組み合わせることで、過学習を防ぎ予測精度を上げる手法です。

考え方の基本はこちらを参照ください。

本題からそれるので前処理等は省いています。

コンペ概要

TFIという世界で2000店舗以上のレストランを出店してる企業が開催しました。

飲食店は立地が7割と言われているほど、店舗立地が重要です。そのため、今回のテーマは、過去の立地や実績データから出店後の売上予測のモデル構築です。

評価指標はRMSEとなります。

処理の概要

処理流れは簡単で以下の2ステップとなります。

  1. スタッキングに使うモデル群を学習させる
    • この例では、Lass回帰、SVM、ランダムフォレスト、勾配ブースティングとなります。
  2. モデル群に予測させ、各結果の平均値を予測結果とする

グリッドサーチ関数化

まずは、グリッドサーチを行う関数を定義します。具体的な内容は、モデルとデータ、グリッドサーチするパラメータを入力すると、最適なモデルを出力するだ関数です。

パラメータ入力

上で作った関数grid_searchに入れるための、モデルとパラメータのリストを作ります。

グリッドサーチの実行

グリッドサーチの実行。MSEが負の値で返ってくるのは仕様らしいです。

参考サイト

スタッキング

単純に学習させた4つのモデルの結果の平均を結果とします。

学習の結果

  • ラッソ回帰:1884821.59732
  • SVM:1916590.71769
  • ランダムフォレスト:1669093.30531
  • 勾配ブースティング:1816689.32956
  • スタッキング:1740224.78103

となり、ランダムフォレストが最も良いという結果になりました。。。

ランダムフォレスト自体が決定木のスタッキングで汎化性能が良いというのと、他の学習器がうまく学習できていない点が原因かなと思います。

-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

kaggle:House Price チュートリアル(EDA探索的データ解析)

Contents1 概要説明1.1 データ探索の流れ2 ライブラリインポート3 データの読み込み4 データ項目からの考察5 SalePriceの分析5.1 ヒストグラムで分布の可視化5.2 数値変数と …

no image

タイタニック生存者予測~ランダムフォレスト~

有名なタイタニックのデータを使って、RandamForestを使って生存者を予測します。 Contents0.1 前処理について0.2 モデル選定について 0.2.1 ロジスティック回帰0.2.2 S …

no image

KFold + XGBoost + EDAチュートリアル | PortoSeguro コンペ

Contents1 概要説明2 コンペの説明3 目次4 コンペの説明5 イントロ6 データ準備6.1 データロード6.2 欠損値の確認6.3 中央値で欠損値補完7 特徴量とターゲットの分割8 データの …

no image

教師なし学習〜主成分分析〜

Contents1 教師なし学習1.1 不要な特徴量を消す1.2 Feature Scalingの実行1.3 疑問1.4 【課題】なぜFeature Scalingが必要なのか記述せよ1.5 PCAの …

no image

ハイパーパラメータの調整(回帰)

回帰問題用に重回帰、ラッソ回帰、リッジ回帰、SVM、ランダムフォレストの5つの手法及び各手法のハイパーパラメータを最適化するランダムサーチ、グリッドサーチのサンプルスクリプトです。 Contents1 …