田中TOMのめざせKaggleMaster #13 LightGBMを触ってみる

動画

相関ヒートマップの見方

ほとんど同じ内容の特徴量をあぶり出す

  • house pricesの特徴量にはほぼ同じ情報を持つものが多く含まれる
  • 重複した特徴量は不要なので使用しない
  • ヒートマップの色が濃くなっているところが重複した特徴量

GBDT(Gradient Boosting Decision Tree)

アンサンブル学習のブースティングとバギングの違いについて \| データ分析とインテリジェンス

  • アンサンブル学習は、大きく2通りに別れる
    • バギング(bagging)
    • 復元抽出によってたくさんモデルを作成し、それらを平均化する手法
    • 例)ランダムフォレスト
    • ブースティング(boosting)
    • モデルを逐次更新していく手法
    • 例)GBDT

Julia Now

今週のニュース

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

ニュース

Deep Learning 補足動画 行列内積の誤差逆伝播の式を導出

以前 田中TOM で取り上げたゼロから作るDeep Learningに関する動画でAffineレイヤーの内積の誤差逆伝播を求める部分が省略されていたので、行列で微分する部分の説明を動画で録画してみました。

 

Deep Learning 補足動画

この動画は
Deep Learning 第7回:誤差逆伝播を用いてニューラルネットワークを実装
で出てきた、行列での微分部分の補足動画です。

この

について解説してく。

今回想定するモデル

今回はバイアス部分は除いて、単純に入力2個と次の層への出力3個で考える。

ここで

となる。

①について


まで計算しておいて


を代入すると

よって示せた。

②について

同じように

少し複雑になるが

なので、ほとんどは0になってしまう。

よって示せた。

単純な数値計算例(値は結構適当)

もし、損失関数を計算して


として値が渡ってきたとしたら、

田中TOMの めざせ Kaggle Master #3 相関係数

動画URL

田中TOMのめざせKaggleMaster #3 相関係数

相関係数

どの特徴量がターゲットに対して強い相関があるかを見ることは、
データ分析の最初の取っ掛かりとして良さそう

以下の解説記事が相関係数についてわかりやすくまとまっていた。
5分で分かる!相関係数の求め方

pandasで相関係数を求めてみた

pandas.DataFrame.corr

参考にした記事
Kaggleのtitanic問題で上位10%に入るまでのデータ解析と所感

やってみたやつ
gist

Julia Now

Tiatnic のデータ解析系記事
http://ajkl.github.io/2015/08/10/Titanic-with-Julia/

今週のニュース