Stacking を使って予測器を結合する

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、複数の推定器をブレンドして予測を行うために Stacking 手法を使用します。この戦略では、一部の推定器を個別に一部の学習データにフィットさせ、最終的な推定器をこれらのベース推定器のスタックされた予測を使用して学習します。我々はエイムズ住宅データセットを使用して住宅の最終的な対数価格を予測します。我々は 3 つの学習器、線形および非線形を使用し、それらの出力をまとめるためにリッジ回帰器を使用します。また、各個別の予測器および回帰器のスタックの性能も比較します。

VM のヒント

VM の起動が完了した後、左上隅をクリックしてノートブックタブに切り替えて Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。

データセットのダウンロード

我々は、最初にディーン・デ・コックによって編集され、Kaggle のチャレンジで使用された後、より知られるようになったエイムズ住宅データセットを使用します。これは、アイオワ州エイムズにある 1460 軒の住宅のセットで、それぞれ 80 の特徴で説明されています。我々はこれを使って住宅の最終的な対数価格を予測します。この例では、GradientBoostingRegressor() を使用して選択された最も興味深い 20 個の特徴のみを使用し、エントリの数を制限します。

データを前処理するためのパイプラインを作成する

エイムズデータセットを使用する前に、まだいくつかの前処理が必要です。まず、データセットのカテゴリカル列と数値列を選択して、パイプラインの最初のステップを構築します。次に、終了する回帰器に依存する前処理パイプラインを設計する必要があります。終了する回帰器が線形モデルの場合、カテゴリを one-hot エンコードする必要があります。終了する回帰器がツリーベースのモデルの場合、順序エンコーダで十分です。また、線形モデルの場合、数値を標準化する必要がありますが、ツリーベースのモデルでは、生の数値データをそのまま扱うことができます。ただし、両方のモデルには欠損値を処理するためのインプータが必要です。

単一のデータセット上の予測器のスタック

今では、エイムズ住宅データセットを使って予測を行うことができます。我々は、各個別の予測器の性能と、回帰器のスタックの性能をチェックします。我々は 3 つの学習器(線形と非線形)を組み合わせ、それらの出力をまとめるためにリッジ回帰器を使用します。スタックされた回帰器は、異なる回帰器の強みを組み合わせます。ただし、スタックされた回帰器を学習することは、計算コストがはるかに高くなることもわかります。

結果を測定してプロットする

我々は、個別の予測器に対するスタックされた回帰器の結果を測定してプロットします。

まとめ

この実験では、複数の推定器をブレンドして予測を行うための Stacking 手法について学びました。我々は、エイムズ住宅データセットを使って住宅の最終的な対数価格を予測しました。また、終了する回帰器に依存する前処理パイプラインの設計方法と、各個別の予測器および回帰器のスタックの性能を測定する方法についても学びました。