Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
優勝した人から学ぶ
kaggleのテクニック
尾崎安範
自己紹介
• 尾崎安範
• サラリーマン研究員見習い
• ロボットを含むIoTの部署に所属
• 学生時代は画像認識屋さんだった
• 今はマルチモーダルインタラクション屋さん
• 画像を含むセンサデータ一般や通信ログの認識や解析
• 認識結果に基づくロボットの抽象的行動の選択
• センサやロボットをハードウェアから社内FabLabで内製
• 最近の興味
• データサイエンスで「人間性」を実現できないのか気になっている
本スライドのモチベーション
• そんなデータサイエンスを利活用するためにも、
kaggleをやりたいと思っているものの、
いまいちやる気が出ないためkaggleでは微妙な成果しかない
Kaggleの優勝例を分析してkaggleへのやる気を出すぞい!
そもそもKaggleってなに?
• データサイエンスに特化した競技会サイト
• Kaggleにはたくさんの課題が掲示されている
• 多くの課題は識別問題か回帰問題、組み合わせ問題を解くことに分類
できる
では、 Kaggleに掲示されている課題はどんなものがあるのだろうか
https://www.kaggle.com/より引用
Kaggleの課題を見てみよう
• Otto Group Product Classification Challenge
• 商品の特徴(93種類)から商品を正しくカテゴリ分けする課題
• 具体的には超簡単2ステップ!
1. 学習データ(20万個)から商品カテゴリを推定するモデルを作成
2. テストデータの結果をkaggleのサイト経由で提出
この課題で優勝したモデルが次のページである
https://www.kaggle.com/c/otto-group-product-classification-challengeより図を引用
商品の特徴
推定される
商品カテゴリ
商品カテゴリ
を推定する
モデル
商品カテゴリを推定する
モデル
※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
どうしてこうなった
そこで本スライドの目的
• そこで本スライドの目的は本モデルの疑問を解決しながら
以下のテクニックを理解することとする
• Kaggleをやる人の解き方の発想
• Stackingをはじめとしたアンサンブル学習
• Kaggleをやる人が道具として使うアルゴリズム
• t-SNEとxgboost
• なお、NNの話は長くなるからここには書かない
本モデルの疑問
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)
本モデルの疑問
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)
なぜこんな階層構造になっているのか
• kaggleでは階層構造にすると汎化性能が良くなると経験的にわ
かっているため
• このような階層構造はアンサンブル学習の発想、特にStackingを応用
して作られている
アンサンブル学習
アンサンブル学習
• 汎化性能が低い多数の学習器(弱学習器)を組み合わせて、
汎化性能が高い1つの学習器(強学習器)にまとめる手法
• NNや決定木などのアルゴリズムの弱点を補い合える強みがある
※本スライドでは弱識別器(weak classifier)、ベース学習器(base learner)
などをまとめて弱学習器(weak learner)と呼んでいます
学習器1
アンサンブル学習のイメージ図
入力 出力
学習器2
学習器3
学習器4
学習器5
学習器6
Stacking
アンサンブル学習の例:Stacking
• 汎化性能が低めの異なる種類の弱学習器を積み上げて、
さらに汎化性能が高い一つの学習器を作成する学習手法
• 学習器には決定木やニューラルネット、k-近傍法が選ばれる
• 最終的な出力は平均したり多数決したりして決める
学習器1
Stackingのイメージ図
入力
学習器2
学習器4
第1層 第2層 第3層
学習器5
学習器3
平均 出力
本モデルの疑問
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)
なぜ各構成要素をこのように決めたのか
• Kaggleの多くの課題で汎化性能が高いと経験的にわかっている
ため
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/より引用
【参考】t-SNEのちょっと具体的な話
• t-SNEではユークリッド距離で近いサンプル点同士は確率的に似ているだろうとし、
遠いものは確率的に似ていないだろうとする
• その基準で作った類似度は確率分布っぽく取り扱えるだろう(?)から
変換前と変換後の類似度の違いをKL情報量で表現
• 変換前と変換後の類似度の違いをなるべく減らすため、KL情報量を基準に反復計算
• ちなみにt-SNEはSNEの改善バージョンらしい
※KL情報量:2つの分布間の違いを表現した量
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のイメージ図
【参考】 xgboostのちょっと具体的な話
• 実はxgboostはGradient Boosting Treesの高速化版である
• Gradient Boosting Treesを説明するにはGradient Boostingを説明する
必要がある
• 説明が長くなるのでおまけに回しました
• でも、中身がわかんなくても課題で使えるから不思議!
疑問も解決したのでこのモデルを解説
商品カテゴリを推定する
モデル
※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などで
識別
重みつき平均で
認識結果を
組み合わせる
本スライドのまとめ
• そこで本スライドの目的は本モデルの疑問を解決しながら
以下のテクニックを理解したはず
• Kaggleをやる人の解き方の発想
• Stackingをはじめとしたアンサンブル学習
• Kaggleをやる人が道具として使うアルゴリズム
• t-SNEとxgboost
• そして、kaggleでは過去の優勝例などの経験則が大部分で
使われているのである
おまけ
• Kaggleのテクニックを体系化した感じの話(中級編)
Kaggleのテクニックを
体系化するとこんな感じ
• Embedding
• 次元削減
• 特徴抽出
• t-SNE
• Word Embedding
• PCA
• アンサンブル学習
• 学習器の組み合わせ方
• Stacking
• Bugging
• Random Forest
• Boosting
• AdaBoost
• Gradient Boosting
• Gradient Boosting Tree
• Xgboost
• 識別器の識別結果をまとめる方法
• 投票
• 平均
• 統計モデル
Bugging
アンサンブル学習の例;Bugging
• 汎化性が低い同じ種類の弱識別器を並列に並べた手法の一つ
• 大きなデータセットから復元抽出することでできたデータセットで識
別器をたくさん作り、その識別器から出力された結果を別の識別器で
まとめる手法
• 代表アルゴリズム例
• Random Forest
学習器1
入力
学習器2
復元抽出した
データセット1
復元抽出した
データセット2
復元抽出した
データセット3
学習器3
平均 出力
Buggingのイメージ図
Boosting
アンサンブル学習の例;Boosting
• 汎化性が低い同じ種類の弱学習器を直列に並べた手法の一つ
• 代表アルゴリズム例
• xgboost
• Adaboost
Boostingのイメージ図
学習器1入力 学習器2 出力学習器3
Xgboostの一般化:Gradient Boosting
• 決定/回帰モデルFの最適化手法を最急降下法としたとき、
最急降下法で使う勾配gradを弱学習器hで推定することで
最急降下法の性能を高めた学習器
http://statweb.stanford.edu/~jhf/ftp/trebst.pdfより引用
Xgboostの一般化:Gradient Boosting
Trees
• Gradient Boostingの弱学習器を決定木にし、
さらに決定木の推定結果ごとで計算し、
重みつき合算することで
よしなに推定してくれる学習器
• 単純にRegression TreesをGradient Boostingしたわけではない
http://statweb.stanford.edu/~jhf/ftp/trebst.pdfより引用
回帰問題の場合
識別問題の場合
t-SNEの一般化: Embedding
• 数学的にざっくりいうと高次元な値を低次元空間に移す手法。
• Embeddingは目的に応じて次元削減などに特化されていく
• Deep Neural networkでEmbedding用の写像を作り出すのが主に多い。
• 一番有名なEmbeddingはPCAである。ただ、「 Embedding 」
というときは大体Word2Vec、kaggleだとt-SNEが有名
• RNN(Recurrent)によるEmbeddingは不定長の離散値を固定長の連続値
として扱えるようになるため、固定長の入力を前提とする学習器の前
処理として使われることが多い
• e.g. word embedding
研究で使うアルゴリズムとKaggleでのテ
クニックの違い
• 基本的に研究を通じた開発された手法をアンサンブル学習で組
み合わせて問題を解くことが多い
• ベイジアンな手法はほぼ使われず、基本的に頻度主義者がおお
い
• なんでだろうね
• 機械学習の研究では洗練されたシンプルな手法が好まれるが、
Kaggleでは精度が出れば複雑でも問題ない
勝てばよかろうなのだァァァァッ!!
参考資料
• 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

More Related Content

Kaggleのテクニック