2020.01.04今回は『Kaggleで勝つデータ分析の技術』の第7章、アンサンブルについてです。最終章、なんとか冬休み中に辿り着くことが出来ました・・・。Kaggleで勝つデータ分析の技術Kaggleなどのデータ分析コンペでは、実際のデータを扱うため、機械学習の解説書にはあまり載っていないような手法やテクニックが数多く活用されています。これらを理解し自身で使えるようにしておくことはコンペだけでなく、実務でのモデル構築において非常に役に立ちます。特徴量の作り方,バリデーション,パラメータチューニングなどについて,一般的な書籍ではあまり言及されない暗黙知やポイントについて記述しています。コンペでは複数のモデルのアンサンブルすることがほとんど(数百個のモデルを組み合わせることもあるが、まずは効果的な特徴量を見付けて単体で高い精度のモデルを作ることを心がける)回帰でのアンサンブル:単に複数のモデルの予測値の平均(算術平均や加重平均など)をとるのがシンプルなアプローチタスクやモデルによっては、ハイパーパラメータや特徴量が同じモデルで学習時の乱数シードを変えて平均をとるだけでも精度が上がることがあります。ニューラルネットは学習ごとの精度がぶれやすいので効果が出やすいです。分類でのアンサンブル:予測値のクラスの多数決をとったり予測確率の平均などを使って分類する評価指標を最適化する場合はアンサンブルの後に最適化をするアンサンブルを行う前提であれば、複雑でやや過学習気味のモデルを選ぶ方が良いという意見がある(多少複雑なモデルにしておいてバイアス(予測値と真値との乖離)を抑え、アンサンブルで複数の予測値を組み合わせることでバリアンス(予測値の不安定性)を抑える戦略)スタッキングは効率的かつ効果的に2つ以上のモデルを組み合わせて予測するアンサンブルの手法(特徴量作成の手法とも解釈できる)→バリデーションデータに対する予測値を特徴量として利用する原著論文は以下:https://www.sciencedirect.com/science/article/abs/pii/S0893608005800231スタッキングにより作成された値は「あるモデルの予測値」という特徴量(「メタ特徴量」と呼ばれる)だと捉えられる。通常は目的変数を予測するモデルを作るところ、欠損が多い変数の値を予測するモデルや、回帰問題を目的変数の値が0かそうでないかの二値分類問題ととらえ直したモデルを作り、それらの予測値を特徴量にすることもできます。キングが効く場合と効かない場合があるスタッキングは学習データの情報を使いつくそうとする性質があるため、学習データとテストデータが同じ分布で、データ量が多いコンペでは有効です。逆に、時系列データなど学習データとテストデータの分布が異なるコンペでは、スタッキングは学習データに適合しすぎるような印象があり、スタッキングでなくモデルの加重平均によるアンサンブルが用いられることが多いです。accuracyよりもloglossの方が細かく予測値をチューニングすることによるスコアの向上があるため、スタッキングが有効なようです。loglossの場合、GBDTとニューラルネットをスタッキングすると大きなスコアの向上がみられることがあります多層のスタッキングを行うこともあるが、徐々にスタッキングによる精度の上り方は弱くなるスタッキングでは、バリデーションデータに対する予測値を特徴量として使うが、アーリーストッピングで作成したモデルでは、バリデーションデータに対して学習の進行が最適なところで止まっており、この場合は少しだけ目的変数を知っている予測値になる。テストデータに対してはそうではないので、特徴量が同質になっていないという議論がある(そこまで細かいことは気にしないという意見もある)Blending:予測値の加重平均によるアンサンブル。キングではクロスバリデーションの分割ごとに学習させるが、この方法ではhold-outデータを使う。Michailidis氏による解説が理解の助けになりました。Competition以下の動画の5:50~でスタッキングの流れが視覚的にわかりやすく説明されています。H2O.ai実装お恥ずかしながら、スタッキングに関して本文とソースコードを読んでもなかなか腑に落ちず、コードを少しずつ実行しながらコメントを沢山書き込み、時間を掛けてようやく理解できました。(上述の動画を見つけたのはその後。先に調べるべきでした・・・。notebookにその痕跡が残っています・・・もしどなたかの参考になれば幸いです。GitHub.github.comさて、何とか冬休み中にKaggle本を終えることができました。Kaggle本には一般的な機械学習本では学べないようなノウハウやテクニックが沢山載っていて、非常に勉強になりました。Kaggleではないですが、本で仕入れた知識を業務で活かしていきたいと思います。最後までお付き合い頂きまして、ありがとうございました。Kaggleで勝つデータ分析の技術Kaggleなどのデータ分析コンペでは、実際のデータを扱うため、機械学習の解説書にはあまり載っていないような手法やテクニックが数多く活用されています。これらを理解し自身で使えるようにしておくことはコンペだけでなく、実務でのモデル構築において非常に役に立ちます。特徴量の作り方,バリデーション,パラメータチューニングなどについて,一般的な書籍ではあまり言及されない暗黙知やポイントについて記述しています。今回は『Kaggleで勝つデータ分析の技術』の第5章、モデルの評価についてです。この章では、モデルを適切に評価するためのポイントやテクニックを学びます。以下、第5章の備忘録(メモ、引用)と実装になります。備忘録...Python【Python】緑本こと『データ解析のための統計モデリング入門』を実装していく【第3章その2】みどり本第3章の例題続きです。前回は例題のデータを分析して、以下のような特徴が得られたのでした。今回はこういった特徴を考慮しながら統計モデルを作っていきます。体サ...Python【Python】複数のリストに含まれる要素の全通りの組み合わせを取得する、という2つのリストがあり、'a'と'd'、'a'と'e'、'b'と'd'...(以下略)のような、それぞれのリストに含まれる要素の全通りの組み合わせが欲しいときの話です。以下のようなPandasのデータフレームがあったとします。今回は『Kaggleで勝つデータ分析の技術』の第6章、モデルのチューニングについてです。パラメータのチューニングなどでモデルの精度を高めるテクニックを学びます。以下、第6章の備忘録(メモ、引用)と実装になります。今日も元気にみどり本です。第3章を終わらせましょう。(所々、はてなのtex記法で書いた数式が正しく変換されず、そのまま文字列が表示されてしまっている箇所がありますがご容赦ください...。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。メーカーの研究所に入所。研究や開発に従事しており、普段はプログラミングをしたり論文を読んだりしています。ブログは趣味の学びのアウトプットです。本ブログが何かのお役に立ちましたら幸いです。研究所で働くエンジニアのブログ.。