Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kaggleのテクニック

7,607 views

Published on

Kaggleのあるコンテンストの優勝者が作ったモデルをケーススタディとして、kaggleテクニックを解説します。特にStackingを中心に解説しています。CNNにはあえて触れませんでした。また、t-SNEやxgboostの概略にも触れました。

Published in: Engineering
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Kaggleのテクニック

  1. 1. 優勝した人から学ぶ kaggleのテクニック 尾崎安範
  2. 2. 自己紹介 • 尾崎安範 • サラリーマン研究員見習い • ロボットを含むIoTの部署に所属 • 学生時代は画像認識屋さんだった • 今はマルチモーダルインタラクション屋さん • 画像を含むセンサデータ一般や通信ログの認識や解析 • 認識結果に基づくロボットの抽象的行動の選択 • センサやロボットをハードウェアから社内FabLabで内製 • 最近の興味 • データサイエンスで「人間性」を実現できないのか気になっている
  3. 3. 本スライドのモチベーション • そんなデータサイエンスを利活用するためにも、 kaggleをやりたいと思っているものの、 いまいちやる気が出ないためkaggleでは微妙な成果しかない Kaggleの優勝例を分析してkaggleへのやる気を出すぞい!
  4. 4. そもそもKaggleってなに? • データサイエンスに特化した競技会サイト • Kaggleにはたくさんの課題が掲示されている • 多くの課題は識別問題か回帰問題、組み合わせ問題を解くことに分類 できる では、 Kaggleに掲示されている課題はどんなものがあるのだろうか https://www.kaggle.com/より引用
  5. 5. Kaggleの課題を見てみよう • Otto Group Product Classification Challenge • 商品の特徴(93種類)から商品を正しくカテゴリ分けする課題 • 具体的には超簡単2ステップ! 1. 学習データ(20万個)から商品カテゴリを推定するモデルを作成 2. テストデータの結果をkaggleのサイト経由で提出 この課題で優勝したモデルが次のページである https://www.kaggle.com/c/otto-group-product-classification-challengeより図を引用 商品の特徴 推定される 商品カテゴリ 商品カテゴリ を推定する モデル
  6. 6. 商品カテゴリを推定する モデル ※LEVEL1のMODEL, FEATUREは以下の通り -Model 1: RandomForest(R). Dataset: X ・・・ -Model 16: Xgboost(R). Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of X) -Model 17: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of log(1+X) ) -Model 18: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of Scale(X) ) ・・・ -Feature 8: X (That feature was used only in NN 2nd level training) 優勝したモデル 商品の特徴 推定される 商品カテゴリ https://www.kaggle.com/c/otto-group-product-classification- challenge/forums/t/14335/1st-place-winner-solution-gilberto-titericz-stanislav-semenov
  7. 7. どうしてこうなった
  8. 8. そこで本スライドの目的 • そこで本スライドの目的は本モデルの疑問を解決しながら 以下のテクニックを理解することとする • Kaggleをやる人の解き方の発想 • Stackingをはじめとしたアンサンブル学習 • Kaggleをやる人が道具として使うアルゴリズム • t-SNEとxgboost • なお、NNの話は長くなるからここには書かない
  9. 9. 本モデルの疑問 1. なぜこんな階層構造に なっているのか 1. LEVEL1, LEVEL2ってなんだ 2. なぜ各構成要素を このように決めたのか 1. t-SNEってなんだ 2. Xgboostってなんだ 商品カテゴリを推定する モデル ※LEVEL1のMODEL, FEATUREは以下の通り -Model 1: RandomForest(R). Dataset: X ・・・ -Model 16: Xgboost(R). Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of X) -Model 17: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of log(1+X) ) -Model 18: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of Scale(X) ) ・・・ -Feature 8: X (That feature was used only in NN 2nd level training)
  10. 10. 本モデルの疑問 1. なぜこんな階層構造に なっているのか 1. LEVEL1, LEVEL2ってなんだ 2. なぜ各構成要素を このように決めたのか 1. t-SNEってなんだ 2. Xgboostってなんだ 商品カテゴリを推定する モデル ※LEVEL1のMODEL, FEATUREは以下の通り -Model 1: RandomForest(R). Dataset: X ・・・ -Model 16: Xgboost(R). Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of X) -Model 17: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of log(1+X) ) -Model 18: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of Scale(X) ) ・・・ -Feature 8: X (That feature was used only in NN 2nd level training)
  11. 11. なぜこんな階層構造になっているのか • kaggleでは階層構造にすると汎化性能が良くなると経験的にわ かっているため • このような階層構造はアンサンブル学習の発想、特にStackingを応用 して作られている
  12. 12. アンサンブル学習 アンサンブル学習 • 汎化性能が低い多数の学習器(弱学習器)を組み合わせて、 汎化性能が高い1つの学習器(強学習器)にまとめる手法 • NNや決定木などのアルゴリズムの弱点を補い合える強みがある ※本スライドでは弱識別器(weak classifier)、ベース学習器(base learner) などをまとめて弱学習器(weak learner)と呼んでいます 学習器1 アンサンブル学習のイメージ図 入力 出力 学習器2 学習器3 学習器4 学習器5 学習器6
  13. 13. Stacking アンサンブル学習の例:Stacking • 汎化性能が低めの異なる種類の弱学習器を積み上げて、 さらに汎化性能が高い一つの学習器を作成する学習手法 • 学習器には決定木やニューラルネット、k-近傍法が選ばれる • 最終的な出力は平均したり多数決したりして決める 学習器1 Stackingのイメージ図 入力 学習器2 学習器4 第1層 第2層 第3層 学習器5 学習器3 平均 出力
  14. 14. 本モデルの疑問 1. なぜこんな階層構造に なっているのか 1. LEVEL1, LEVEL2ってなんだ 2. なぜ各構成要素を このように決めたのか 1. t-SNEってなんだ 2. Xgboostってなんだ 商品カテゴリを推定する モデル ※LEVEL1のMODEL, FEATUREは以下の通り -Model 1: RandomForest(R). Dataset: X ・・・ -Model 16: Xgboost(R). Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of X) -Model 17: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of log(1+X) ) -Model 18: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of Scale(X) ) ・・・ -Feature 8: X (That feature was used only in NN 2nd level training)
  15. 15. なぜ各構成要素をこのように決めたのか • Kaggleの多くの課題で汎化性能が高いと経験的にわかっている ため
  16. 16. t-SNEってなんだ • 確率密度分布を参考にして作られた類似度が 次元削減前と次元削減後で なるべく同じように次元削減するアルゴリズム • t-Distributed Stochastic Neighbor Embeddingの略 可視化した結果を比較した例[1](左:Isomap、右:t-SNE) [1] Laurens van der Maaten, Geoffrey Hinton,”Visualizing Data using t-SNE”,JMLR http://blog.albert2005.co.jp/2015/12/02/tsne/より引用
  17. 17. 【参考】t-SNEのちょっと具体的な話 • t-SNEではユークリッド距離で近いサンプル点同士は確率的に似ているだろうとし、 遠いものは確率的に似ていないだろうとする • その基準で作った類似度は確率分布っぽく取り扱えるだろう(?)から 変換前と変換後の類似度の違いをKL情報量で表現 • 変換前と変換後の類似度の違いをなるべく減らすため、KL情報量を基準に反復計算 • ちなみにt-SNEはSNEの改善バージョンらしい ※KL情報量:2つの分布間の違いを表現した量
  18. 18. xgboostってなんだ • 弱学習器の出力から計算した勾配情報をもとに 次の弱学習器で誤差を減らすように学習させる手法 (とライブラリ) • 特徴量の重要度も計算できるため、NNと異なり、原因分析しやすい • xgboostでは学習を並列化しており、 xgboostのもととなった手法より もかなり速く学習できる もっと学びたい人はここを読もう! https://www.kaggle.com/tqchen/otto-group-product-classification- challenge/understanding-xgboost-model-on-otto-data xgboost 漸化式1入力 漸化式2 出力漸化式3 xgboostのイメージ図
  19. 19. 【参考】 xgboostのちょっと具体的な話 • 実はxgboostはGradient Boosting Treesの高速化版である • Gradient Boosting Treesを説明するにはGradient Boostingを説明する 必要がある • 説明が長くなるのでおまけに回しました • でも、中身がわかんなくても課題で使えるから不思議!
  20. 20. 疑問も解決したのでこのモデルを解説 商品カテゴリを推定する モデル ※LEVEL1のMODEL, FEATUREは以下の通り -Model 1: RandomForest(R). Dataset: X ・・・ -Model 16: Xgboost(R). Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of X) -Model 17: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of log(1+X) ) -Model 18: Xgboost(R): Trainned Multiclass Soft-Prob. Dataset: (X, T-sne features, Some Kmeans clusters of Scale(X) ) ・・・ -Feature 8: X (That feature was used only in NN 2nd level training) 商品の特徴 推定される 商品カテゴリ Stackingで 各アルゴリズムの 弱点を補う t-SNEなどで 次元削減 Xgboostなどで 識別 重みつき平均で 認識結果を 組み合わせる
  21. 21. 本スライドのまとめ • そこで本スライドの目的は本モデルの疑問を解決しながら 以下のテクニックを理解したはず • Kaggleをやる人の解き方の発想 • Stackingをはじめとしたアンサンブル学習 • Kaggleをやる人が道具として使うアルゴリズム • t-SNEとxgboost • そして、kaggleでは過去の優勝例などの経験則が大部分で 使われているのである
  22. 22. おまけ • Kaggleのテクニックを体系化した感じの話(中級編)
  23. 23. Kaggleのテクニックを 体系化するとこんな感じ • Embedding • 次元削減 • 特徴抽出 • t-SNE • Word Embedding • PCA • アンサンブル学習 • 学習器の組み合わせ方 • Stacking • Bugging • Random Forest • Boosting • AdaBoost • Gradient Boosting • Gradient Boosting Tree • Xgboost • 識別器の識別結果をまとめる方法 • 投票 • 平均 • 統計モデル
  24. 24. Bugging アンサンブル学習の例;Bugging • 汎化性が低い同じ種類の弱識別器を並列に並べた手法の一つ • 大きなデータセットから復元抽出することでできたデータセットで識 別器をたくさん作り、その識別器から出力された結果を別の識別器で まとめる手法 • 代表アルゴリズム例 • Random Forest 学習器1 入力 学習器2 復元抽出した データセット1 復元抽出した データセット2 復元抽出した データセット3 学習器3 平均 出力 Buggingのイメージ図
  25. 25. Boosting アンサンブル学習の例;Boosting • 汎化性が低い同じ種類の弱学習器を直列に並べた手法の一つ • 代表アルゴリズム例 • xgboost • Adaboost Boostingのイメージ図 学習器1入力 学習器2 出力学習器3
  26. 26. Xgboostの一般化:Gradient Boosting • 決定/回帰モデルFの最適化手法を最急降下法としたとき、 最急降下法で使う勾配gradを弱学習器hで推定することで 最急降下法の性能を高めた学習器 http://statweb.stanford.edu/~jhf/ftp/trebst.pdfより引用
  27. 27. Xgboostの一般化:Gradient Boosting Trees • Gradient Boostingの弱学習器を決定木にし、 さらに決定木の推定結果ごとで計算し、 重みつき合算することで よしなに推定してくれる学習器 • 単純にRegression TreesをGradient Boostingしたわけではない http://statweb.stanford.edu/~jhf/ftp/trebst.pdfより引用 回帰問題の場合 識別問題の場合
  28. 28. t-SNEの一般化: Embedding • 数学的にざっくりいうと高次元な値を低次元空間に移す手法。 • Embeddingは目的に応じて次元削減などに特化されていく • Deep Neural networkでEmbedding用の写像を作り出すのが主に多い。 • 一番有名なEmbeddingはPCAである。ただ、「 Embedding 」 というときは大体Word2Vec、kaggleだとt-SNEが有名 • RNN(Recurrent)によるEmbeddingは不定長の離散値を固定長の連続値 として扱えるようになるため、固定長の入力を前提とする学習器の前 処理として使われることが多い • e.g. word embedding
  29. 29. 研究で使うアルゴリズムとKaggleでのテ クニックの違い • 基本的に研究を通じた開発された手法をアンサンブル学習で組 み合わせて問題を解くことが多い • ベイジアンな手法はほぼ使われず、基本的に頻度主義者がおお い • なんでだろうね • 機械学習の研究では洗練されたシンプルな手法が好まれるが、 Kaggleでは精度が出れば複雑でも問題ない 勝てばよかろうなのだァァァァッ!!
  30. 30. 参考資料 • http://mlwave.com/kaggle-ensembling-guide/ • http://blog.kaggle.com/2016/12/27/a-kagglers-guide-to-model- stacking-in-practice/ • https://en.m.wikipedia.org/wiki/Gradient_boosting • https://www.slideshare.net/mobile/shotarosano5/microsoft- malware-classification-challenge-in-kaggle-study-meetup • http://blog.albert2005.co.jp/2015/12/02/tsne/ • Geoffrey Hinton and Sam Roweis, Stochastic Neighbor Embedding • http://statweb.stanford.edu/~jhf/ftp/trebst.pdf • XGBoost, https://arxiv.org/abs/1603.02754

×