田中TOMのめざせKaggleMaster #16 家具画像分類問題にチャレンジ

動画

次の参加コンペ

iMaterialist Challenge (Furniture) at FGVC5

  • 128種類の家具や生活グッズの分類
  • Train: 194,828枚
  • Validation: 6,400枚
  • Test: 12,800枚

まずは、json形式のURLから画像をローカルにダウンロードする所から始まる。(画像のデータが置いてあるホストサイトはバラバラで、いつ無くなるか分からないと公式にも書いてある)

kaggle api
これを使えばファイルのダウンロードを簡単にできます

画像ファイルをダウンロードするスクリプト

画像例
画像例1

画像例2

今週のKernel関連

  • https://twitter.com/kaggle/status/976164020410552320

ニュース

田中TOMのめざせKaggleMaster #15 半分松江、半分東京

動画

今後やること

  • kaggleのコンペを覗いたら画像解析のコンペが殆どだった
  • ゼロから始めるディープラーニングの畳み込みNNの章をやってなかった
  • 畳み込みNNの勉強をしてから取り組んでいきたい

Kernels Awards

EagerFMNIST | Kaggle
– データは Fashion MNIST
– TensorFlow の Eager Execution を利用している
Tensorflow 1.5のEager Executionを触ってみた - Qiita

Julia now

【お知らせ】たのは島根の松江に引っ越しました。
– せっかくなので普段仕事でも使ってるRubyと趣味で使っているJuliaで何かしたい。
データサイエンスにおけるRubyの現在の位置づけと可能性 | しまねソフト研究開発センター
– 記事著者の村田 賢太さんはRubyでPythonが呼べるpycall.rbも作ってる人
– 記事ではJuliaについても触れていてRubyでJuliaが呼べるruby-juliaも作ってるけどメンテはされていない
– Matsue.rb とか勉強会でここらへんの技術を触っていく予定

今週のニュース

田中TOMのめざせKaggleMaster #14 TOMは めのまえが まっくらに なった!

動画

Kaggle

いろいろやってみたけど順位は上がらなかった

これまでのやり方

・特徴量選択(10)
・XGBoost

スコア:0.13660

試行1

・特徴量選択をする(10)
・主成分分析を行う(5)
・XGBoost

生の特徴量使ったほうが良かった

試行2

・特徴量選択をする(10)
・XGBoostとSVMで学習する
・スタッキング

SVMが足を引っ張る

試行3

・特徴量選択をする(10)
・主成分分析(5)からのXGBoost
・主成分分析(5)からのSVM
・スタッキング

SVMが足を引っ張る

今週のKernels award

毎週優秀なKernelが選ばれるのでそれを取りあげてモダンな解析方法を学んでいく
KB-->MB-->GB-->TB-->?B (BigQuery)

Julia

今週のニュース

田中TOMのめざせKaggleMaster #12 回帰木と分類木

動画

回帰木と分類木

今更だけど、分類木と回帰木の説明
決定木、分類木、回帰木の意味と具体例

今回は回帰の問題なので回帰木を用いる。

最適深度と木の数を決定する

GridSearch()関数が最適な深度、木の数等を決定してくれる

なぜ正規分布?

RF系における特徴量重要度測定

OOBを使うらしい
【機械学習】OOB (Out-Of-Bag) とその比率

今週のニュース

田中TOMのめざせKaggleMaster #9 2017年に扱った機械学習の技術を振り返ろう #LetsRewind

動画 URL

田中TOMのめざせKaggleMaster #9 2017年に扱った機械学習の技術を振り返ろう #LetsRewind - YouTube

  • 今年の頭から機械学習スタート
    • ゼロから作るディープラーニング
      • 全10回
    • Keras
      • 全4回
      • keras使いやすい
    • RandomForest
      • 全4回
      • 分類問題で頼りになる
    • Kaggleマスター
      • 継続中
      • マスターになれるのか!!?

Julia now

Kaggle の Kernel が動いている Julia Docker を最新版にしていく - Qiita

今週のニュース

田中TOMのめざせKaggleMaster #8 初コンペの結果発表

田中TOMのめざせKaggleMaster #8 初コンペの結果発表 - YouTube

Kaggle kkbox 挑戦

kaggle アドベントカレンダー 2017 データサイエンティストを目指すための Kaggle チュートリアル

  • まずは愚直に数字を出してみる
  • そこから数値が良くなるにはを考える

データ処理でやったこと

  • Date系はとりあえず年だけにしてみた
  • 日付情報が入ると数値に直した時に飛び飛びの値になってしまう気がする
  • trainデータのmsno(id)にTransactions Logs Members が全て対応しているわけではない
  • test データに対応する場合は 「transactions logs members」と「transactions members」 と 「transactions」の3種類で学習を行いそれぞれ、予測をしていった
  • データ処理を行ったものはcsvで再び保存しておいて次回から使えるようにしておく

今後の課題

  • ローカルで重めのファイルを動かしながらだとPCが作業できなくなるのでAWS上でメインにしていきたい
  • AWS上で作業するならデータをs3に入れてデータマウントするみたいな仕組みが必要そう。
  • XGBoost と MXNet 使いこなせるようになりたい
  • グラフ化するのが上手くできないところもあり、どこで区切ったりすれば良い結果になるのか判別できない
  • 自分でカラムを作っていく必要がありそう
  • 提出回数制限に無駄に引っかからないために、trainデータを更にtrainとtestに分割してやって手元でテストするのが良さそう

xgboost

1ヶ月ぐらい前から、julia 0.6 に対応し出した。
最近 Xgboost や MXNet をメンテナンスしている dmlc というグループが julia のメンテも積極的にしてくれてるようになってる。特に MXNet は活発に開発が進んでくる Gluon が julia で使えるようになる日も近いかもしれない。

xgboost の クロスバリデーション

News

Amazon Comprehend – 継続的に学習される自然言語処理

データサイエンティストを目指すための Kaggle チュートリアル

Kaggle Advent Calendar 2017 一日目の記事です。

皆さんデータサイエンスしてますか?

機械学習の本読んだけど、MNISTやIrisデータの解析も飽きてきた(ディスっているわけではない)のであれば、実際の企業や団体が公開しているデータに触れることができるデータサイエンスコンペティションサイトのKaggleに挑戦してみましょう。

今回は、日本語対応しておらず少しハードルの高いKaggleのコンペティションに参加できるように、よく出てくる単語とかを説明していきます。

重要なKaggle用語

Kernels

Kaggleで公開されているデータに対して、統計処理を行った結果や予測結果が公開されている。一流のプロが解析しているKernel等も見ることができ、評価の高いKernelのコードを写経するだけでも価値があると思う。

Competitions

企業が賞金を出したりして、参加者がより良い予測ができるモデルを作って競い合います。上部メニューのCompetitionsで飛ぶと一覧で出てきます。Activeというのが現在開催中のもので、最近(2017年12月)だと、メルカリが値段予測問題でコンペティションを開催しています

Datasets

企業等が公開しているデータ。コンペティションではないので他のユーザーとは競わないですが、他のデータサイエンティストが公開しているKernelも見ることができるので、色々と参考になる。

Kaggleをどう利用したらいいのか?

登録してみたものの、何をすればいいのか迷いますよね。これについては、KaggleのCTOが Quora という Q&Aサイト(実名版のヤフー知恵袋のようなもの)で回答した内容だと機械学習やAIを学ぶには次のようにKaggleを使っていくと良いそうです。(あまり英語得意じゃないので勝手な解釈になってるかもしれませんが間違ってたらコメントで指摘してください)

1. 興味のある問題を選ぶ

好きなものこそ上手なれという言葉もあるように、まず自分の興味ある分野のDatasetsを探してみましょう。画像を解析する問題や、株価を予測する問題が色々あります。Kaggleだとチュートリアル的な問題として、タイタニックの生存者予測家の値段予想があります。

2. 一回愚直に問題を解いてみる

あれこれ、アルゴリズムを考えたりしてドツボにはまるのであれば、一度愚直に、簡単な方法で解いてみましょう。例えば性別の情報が入っているなら、性別だけで一回予測してみて答えを出してみたりすると、精度は悪いですが回答できるようになります。

3. 最初のモデルを改善していく

一度回答は出せたので、今度はその回答の精度を上げてみます。先程の例ですと、性別の他に年齢を加えてみたり、使ったアルゴリズムの変数を調整して、どうすれば良い結果が得られるか色々試してみます。

4. 自分の解法を公開する

ある程度、良い結果がでたら、Kernelを公開してみましょう。フィードバックを得られて学びになったり、高評価を得てKaggleのプロフィールの見栄えがよくなるかもしれません(就職・転職の際に使えそうですね)。日本語でフィードバックが欲しいならQiitaなどで公開しても良さそうですね。

5. 1~4を繰り返す

他の問題でも同じように解いてKernelを公開したり、他人のKernelを読んで勉強して色々な問題に対応できるようにしていきましょう。

6. Competitionに参加してみる

実力を付けたらCompetitionに挑戦してみましょう。(別に参加は無料なのでいきなりCompetitionに参加しても大丈夫です)

チーム機能もあったりするので、一緒にデータサイエンスを学んでいる人と協力して挑戦するのも良さそうです。

7. プロを目指して機械学習を実践していく

ある程度、Competitionに慣れてきたら、実際に自分の仕事で機械学習を実践してみたり、転職などで使える環境に挑戦してみましょう。ここまでくると最新の論文を読んだり、良いコードの書き方を意識しだしたりするようです。(ちなみに私はまだこのレベルまで達してないです。)

あとは、自分が将来進む道(アカデミックな分野かAIエンジニアかデータサイエンティストなのか)も決めて専門性を高めていく必要があるみたいです。(なんか、ゲームの2次職みたいですね)

8. 他の人に教えてみる

ここまできたら、実際に他の人にも教えてみましょう。

勉強会で発表したり、ブログや本を書いたり、アウトプットする方法は色々あると思います。他人に説明することで、自分のなかであやふやな部分とかも気づけたりするので大事ですね。

Kaggleで目指すもの

KaggleではCompetitionで上位に入賞したり、高評価のKernelを作ったりすると、メダルがもらえて、そのメダルの種類と枚数によってランクが上がって行きます。最終的にはグランドマスターという称号が用意されているので、それを目指してみるのもいいですね。

宣伝

普段は田中TOMという名前でKaggleのコンペに挑戦するYoutube動画あげています。一緒にKaggleでプロフェッショナルの証であるMasterランクを手に入れましょう。

田中TOM - YouTube

田中TOMのめざせKaggleMaster #7

動画リンク

田中TOMのめざせKaggleMaster #7 コンペティションに挑戦だ!!

Next Competition

WSDM - KKBox’s Churn Prediction Challenge | Kaggle

KKBoxという定額音楽配信サービスの離脱を予想する。

概要(もとの文は英語なので間違ってるかも)
KKBoxのサービスは30日毎にアカウントの更新を行う、今回の問題では2017年4月にてサービスが継続されるか解約(churn)を予想する。

「解約」の基準は、現在のメンバーシップの有効期限が切れてから30日以内に申し込むかどうか。
自動継続オプションも存在する。

提供されているファイルの内容

情報ごとにファイルが別れている。
ログのファイルサイズが圧縮されて6GB超え

  • train.csv: 2017年3月の継続・解約情報。目的変数
  • transactions.csv: 2017年3月31日までの契約更新情報。支払い方法など
  • members_v3.csv: ユーザー情報(年齢、性別、住んでいる街など)
  • user_logs:2017年3月のユーザサービス利用状況。日毎に曲の何%まで聞いたかの曲数ログ

kernel

例の如く良さげなkernelをあさってみた
Should I stay or should I go? – KKBox EDA

Julia Now

kkbox触りだけ
kkbox.ipynb

News

田中TOMのめざせKaggleMaster #6

動画ULR

田中TOMのめざせKaggleMaster#6 たなかTOMは あたらしく SVMを おぼえた!

線形SVM

理論

データクラスを分離する境界を決定する学習器。
最も境界に近いデータとの距離を最大にするような境界を探す。
境界 = 識別超平面
境界に最も近いデータ = サポートベクター

ちなみに
SVC ≒ SVM っぽい

scikit-learnのlinearSVC

実行結果

C = 0.2 / train = 0.810325476992 / score = 0.77990
C = 1.0 / train = 0.809203142536 / score = 0.78468
C = 3.0 / train = 0.810325476992 / score = 0.77990

 

Julia Now

AWS の Deep Learning AMI を使って EC2 インスタンス上で 最新のJuliaを動かせるように

  • AWSのEC2インスタンス上に最新のJuliaとMXNet.jlを導入するのはすごい大変でした。
  • 今回作ったものはAMIとして公開してあります。
  • やっとMXNet.jlでGPU環境が整った
  • MXNetで学習をしてみたけど、過学習発生中。。。
  • あと数日中に MXNet 0.12 対応版の MXNet.jl もリリースされるっぽい https://github.com/dmlc/MXNet.jl/pull/304

News

田中TOMのめざせKaggleMaster #5 進捗ダメです

動画URL

田中TOMのめざせKaggleMaster #5 進捗ダメです

AWS で MXNet を試してみた

AWS の Deep learning 用 AMI で MXNet を動かす
– サンプルコードだがMXNetでGPUも使いやすいし、公式がサポートしている分動作は安定している
– Julia環境を入れようとすると結構面倒

アドベントカレンダー

今年もアドベントカレンダーの季節に

参加予定アドベントカレンダー

Kaggle進捗


次週もTitanicやります。。。

Julia now

Juliaの勉強会へ参加してきた

Juliaの勉強会へ参加してきた
– Juliaのデータサイエンス本を購入していて、ちょうどその勉強会だった
– 書籍のJuliaのバージョンがv0.4で結構コードがエラーになってしまう
– 最近出版された機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書) | 須山 敦志, 杉山 将 はサンプルのコードがJulia(v0.6)で書かれているみたいなので、次はこれを読んでいく予定

News