Kaggleの紹介 : Introduction of Kaggle

Jul 2, 2019 | Publisher: tflare | Category: Technology & Engineering |   | Views: 4 | Likes: 1

Kaggleの紹介 阿部 泰之 AI&機械学習しよう!(Do2dle)勉強会 アジェンダ 1. Kaggleとは 2. Kaggleの特徴 3. まずはじめにやるのはどれがおすすめか 4. Kaggleで有効な手法の紹介 自己紹介 ・阿部 泰之 / Hiroyuki Abe ・twitter / @taki_tflare ・https://tflare.com ・業務エンジニア  (生命保険 主に保険金支払) ・Kaggle初めたばかり       Kaggleとは Kaggleは企業や研究家が、データを投稿し、統計 家やデータ分析家がその最適化モデルを競い合う サイトです。 (高額賞金付きのコンペが実施されることがあり       現在合計賞金1,200,000ドルのコンペ実施中  *約1億3千万円) Competitions Kernels Discussion Datasets Kaggleの特徴 Competitions Kernels Discussion Datasets Kaggleの特徴 Competitions Competitions コンペです。 Kaggleの特徴は、 ・実業務で使用しているデータがダウンロードできる ・参考になるコードが実行可能な形で置かれている ・議論も行われている ・チームが組める 上記により、参加しなくても参考になるデータ、コー ドが利用できるのが特徴 Competitions 2. データ入手 3. データ前処理 4. 手法選択 5. ハイパーパラメータ選択 6. モデルの学習 7. モデルの評価 1. 実施内容の決定 下記の1~2が用意されており、3~7を実施する Competitions Titanic: Machine Learning from Disaster • Kaggleのチュートリアル • 乗客がタイタニックの沈没を生き延びたかどうかを予 測し、この精度を競う • 訓練用データ(891行 × 12列のcsv) データに一部 欠損あり • テストデータ(418行 × 11列のcsv) データに一部 欠損あり Titanic: Machine Learning from Disaster 詳細は一から始める機械学習(Kaggleで学ぶ機械学習) https://speakerdeck.com/tflare/machine-learning-to- learn-at-kaggle Titanic: Machine Learning from Disaster • PassengerId:データにシーケンシャルでついている番号 • Survived:生存(0 = No, 1 = Yes) 訓練用データにのみ存在 • Pclass:チケットのクラス(1 = 1st, 2 = 2nd, 3 = 3rd) • Name:名前 • Sex:性別 • Age:年齢 Titanic: Machine Learning from Disaster • SibSp:タイタニック号に乗っていた兄弟と配偶者の数 • Parch:タイタニック号に乗っていた両親と子どもの数 • Ticket:チケット番号 • Fare:旅客運賃 • Cabin:船室番号 • Embarked:乗船場(C = Cherbourg, Q = Queenstown, S = Southampton) Kernels Kernels 環境が整ったクラウドでコードを実行可能、 他の人のコードもKernelをForkすることで実行可能 カーネルに対してコメントすることが可能 実行時間は最大60分まで Kernels https://www.kaggle.com/tflare/testing-multiple- models-with-scikit-learn-0-79425 Kernels Kernels Kernels Discussion 議論ができる場です。 出題元からの説明 過去のコンペでは成績優秀者の説明、コードへのリンクなどがあり ます。 Discussion 順位が確認できる場所です。 ・ここの順位はCompetitions毎に決められたルールで設定されます。  そのため、最終的な順位と異なる場合があります。  Titanic: Machine Learning from Disasterの場合は以下です。  「This leaderboard is calculated with approximately 50% of the   test data.  The final results will be based on the other 50%, so the final   standings may be different.」  上記により、最適化しすぎるのではなく、一般化することを狙って いると思われます。 ・提出できる回数は限度があります。(Zillow Prizeは1日5回まで) Leaderboard Leaderboard Competitions Kernels Discussion Datasets Kaggleの特徴 Datasets Datasetsでは、以下3つの機能があります。 ・データセットを探す ・データセットについて探究する (ダウンロードする、コードを書く、コメントを する) ・新しくデータセットを作る 具体的なデータセットを通じてみてみましょう。 Datasetsの3つの機能 https://www.kaggle.com/artimous/complete-fifa-2017-player- dataset-global Complete FIFA 2017 Player dataset (Global) データセットの内容 データセットの内容 データセット毎に、Kernels、Discussionがあっ て、実行可能なコード、ディスカッションが行わ れている。 データセットの機能 どのようにすすめればよいか まずは、Titanic: Machine Learning from Disasterをやり あとは気になったCompetitionsをやるです。 私は以下をやっています。 ・Zillow Prize: Zillow’s Home Value Prediction (Zestimate) ・Text Normalization Challenge - English Language ・Text Normalization Challenge - Russian Language まだやっていませんが、以下はデータ量が少なくて始めやすそうです ・Porto Seguro’s Safe Driver Prediction どのようにすすめればよいか ・Cdiscount’s Image Classification Challenge 上記はTrainデータが58.19 GB、Testデータが14.53 GBあります。 データ量の多い、画像関連のCompetitionsは性能が高いGPUがな い場合、上位に行くことは困難です。 (AWS、GCP等でGPUを搭載しているインスタンスを借りても良い ですが) Kaggleで有効な手法の紹介 1st PLACE - WINNER SOLUTION - Gilberto Titericz & Stanislav Semenov https://www.kaggle.com/c/otto-group-product-classification-challenge/discussion/14335 Otto Group Product Classification Challenge 商品の特徴(93種類)から商品をカテゴリ分けする課題 trainデータ6万 testデータ14万 以下は優勝者のモデルです。 33モデルを組み合わせることで精度を実現しています。 機械学習の研究・実践ではシンプルな手法が良いが、 Kaggleでは勝てればなんでもよい。  → 他の人との差別化のために、複数モデルの組み合 わせを行うことがよくある。 Kaggleで有効な手法の紹介 ノーフリーランチ定理  どのような問題に対しても一番性能が良い万能 アルゴリズムはない。 Kaggleで有効な手法の紹介 複数の識別器を組み合わせて、性能を上げる方法 (アンサンブル学習)の検討が前から行われてい る。 Otto Group Product Classification Challenge でも使われており、今でも使われることが多い 以下2つの説明をします。 ・Xgboost ・Stacked generalization Kaggleで有効な手法の紹介 Gradient Boosting(勾配ブースティング)の高速な実装で す。 Kaggleで最も人気のある機械学習手法です。 利点:早い、外れ値や欠損値に強い、線形分離不可能パター ンに強い 欠点:線形分離可能パターンに弱い Xgboostとは Boosting(ブースティング)は、複数の弱識別器を用意し て、学習を直列的にし、前の弱識別器の学習結果を参考にし ながら一つずつ弱識別器を学習する。…  平井 有三(2012)はじめてのパターン認識 p188 森北出版 Boostingとは Boosting 入力 出力 識別器1 識別器2 識別器3 Gradient Boosting(勾配ブースティング)は、簡単に言うとBoostingの 各ステップのパラメタ最適化の際に,勾配降下法を用いる方法 Gradient Boostingとは Boosting 入力 出力 識別器1 識別器2 識別器3 deep learningは画像、音声、テキスト処理などに 力を発揮する。 樹木モデル(Xgboostも含む)は表形式のデータ 処理に力を発揮する。 上記は両方が重要であり、状況に応じて使い分け る必要がある。 Xgboostの強み A Kaggle Master Explains Gradient Boosting http://blog.kaggle.com/2017/01/23/a-kaggle-master-explains-gradient-boosting/ XGBoostについては以下を参照ください。 Introduction to Boosted Trees(公式ドキュメントと元になった資料) http://xgboost.readthedocs.io/en/latest/model.html https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf Github https://github.com/dmlc/xgboost もっとGradient Boosting Kaggleではアンサンブル学習がよく使われています。 主要なアンサンブル学習は以下の5つです。 ・Voting ・Averaging ・Rank averaging ・Stacked generalization ・Blending 主要なアンサンブル学習 Kaggleではアンサンブル学習がよく使われています。 主要なアンサンブル学習は以下の5つです。 ・Voting ・Averaging ・Rank averaging ・Stacked generalization ・Blending 主要なアンサンブル学習 今回は上記の中からよく使われる Stacked generalizationについて説明します。 アンサンブル学習の中でKaggleで成績上位者の中でよく使われるのが、 Stacked generalizationです Stacked generalizationの基本的な考え方は、識別器を組み合わせて、より 精度の良いモデルをつくると言うもの Stacked generalizationとは LEVEL1 LEVEL3 LEVEL2 Stacked generalizationとは 入力 出力 識別器4 識別器5 識別器1 識別器2 識別器3 平均 LEVEL1 LEVEL3 LEVEL2 Stacked generalizationとは 入力 出力 識別器4 識別器5 識別器1 識別器2 識別器3 平均 異なる種類の識別器を組み合わせて、より性能の高いモデルを作成する。 最終的に平均などで結果を決める。 Stacked generalizationは自由度が高い手法で、 Kaggleなどのコンテストで、他の人との差別化を行うために使われている。 stacked generalization http://puyokw.hatenablog.com/entry/2015/12/12/090000 論文 http://www.cs.utsa.edu/~bylander/cs6243/wolpert92stacked.pdf もっとStacked generalization Kaggleではアンサンブル学習がよく使われています。 主要なアンサンブル学習は以下の5つです。 ・Voting ・Averaging ・Rank averaging ・Stacked generalization ・Blending 主要なアンサンブル学習 Voting Original signal: 1110110011 Encoded: 10,3 101011001111101100111110110011 Decoding: 1010110011 1110110011 1110110011 Majority vote: 1110110011 他のアンサンブル手法を一例紹介させていただきました。 興味がある方はKAGGLE ENSEMBLING GUIDEの参照をお願いします。 https://mlwave.com/kaggle-ensembling-guide/  他のアンサンブル手法 参考になるサイト 以下が参考になります。 ・No Free Hunch(The Official Blog of Kaggle.com) WINNERS’ INTERVIEWS http://blog.kaggle.com/category/winners-interviews/ ・kaggle_memo https://github.com/nejumi/kaggle_memo

×

Modal Header

Modal body