田中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 – 継続的に学習される自然言語処理

田中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

田中TOMの めざせ Kaggle Master #4

データ解析の道のり

kernelを眺める

執念を感じるtitanicのkernel
できる全てを詰め込んでいるのでは?
EDA To Prediction(DieTanic)

  1. Dataを眺める
  2. 特徴量をタイプ別に分類する
  3. 特徴量ごとにグラフや表を使って分析する
  4. 観察結果をまとめる
  5. 欠損データを埋める

視覚化ツール

seaborn
データ視覚化ツール
matplotlibのラッパーで、見た目と使いやすさが上がったもの

結果

上記のkernelの通りにデータの整形を行って予測を実行。
trainの方でpredictをした時の結果は89%なので過学習している?

機械学習アルゴリズムをランダムフォレスト系ではなく
別の手法にしたほうが良いだろうか?
Choosing the right estimator

xgb_model=xgb.XGBClassifier(n_estimators=30, max_depth=4)

で0.79904出た。上位16%くらい

Julia now

タイタニック

年齢について少し調べてみた。
年齢はNaN値が存在しているが、等級と性別である程度年齢の平均は推測できるのではと思った。

Gadfly+boxplot.ipynb

けど、順位はあがらず。最初にやった結果が偶然精度が良かった可能性が考えられる。

Julia で並列処理

Juliaで並列計算を試す

次はMxnet試したい

  • 前回のニュースで紹介してた Gluon(マイクロソフトとAmazonが組んだ機械学習ライブラリ) のラッパーされているライブラリ
  • 現状公式でJuliaサポートがされているライブラリ
  • Amazonが公式でサポートしており、今後データ処理が重くなりスケールアップしたい場合に、コードはそのままでAWSのGPUを使ったインスタンス上でコードが実行できそう。
  • MXNet とは – AWS

ニュース