機械学習

機械学習スタッキング例

投稿日:

汎化性能を上げるため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

ハイパーパラメータの調整(分類器)

分類問題用にk-NN、SVM、ランダムフォレストの3つの手法及び各手法のハイパーパラメータを最適化するランダムサーチ、グリッドサーチのサンプルスクリプトです。 Contents1 データセット作成1. …

no image

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

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

no image

python/sklearn/単回帰(LinearRegression)

2次元のデータに対して単回帰分析を行う。 Contents0.1 データ取得0.2 メソッド0.3 可視化0.4 学習データとテストデータに分割0.5 単回帰分析0.6 結果のプロット1 決定係数の算 …

no image

毒キノコの判定 〜SVM〜

Contents1 SVMとは2 標準化3 カーネルとは4 コストペナルティCとは5 ハイパーパラメータの調整6 学習およびテスト SVMとは クラス間のマージンを最大化するように境界線を引く手法。ク …

no image

学習データとテストデータの分割

学習データとテストデータの分割法の備忘録として載せておきます。 Contents1 非時系列データ2 時系列データ 非時系列データ 非時系列データの場合は、ランダムに分割すれば良い。sklearnモジ …