Appleが公開している機械学習ライブラリTuri CreateでKaggle Titanicをやってみる

Appleが公開している機械学習ライブラリTuri CreateでKaggle Titanicをやってみる

Twitterで呟いたり、Qiitaに投稿したりでブログがおろそかになっていました。。。
ということで、久々のブログ更新です。

今抱えている案件の一つにレコメンドシステム関連があって、業務に使えるいいネタはないかといろいろ調べ物をしていたところ、Mediumでcollaborative filtering(協調フィルタリング)に関するすご〜く良い記事を見つけました。

この記事では、協調フィルタリングの理論だけではなく、購買履歴データの前処理、レコメンド実装、モデル評価といったレコメンドシステム開発に必要なプロセスを丁寧に説明してくれています。(さすが、MITの人はすごいなぁ)

また、機械学習ライブラリTuri Createを使ってレコメンドの実装例を説明しています。
恥ずかしながらTuri Createの存在すら知りませんでしたが、どうやらAppleが2018年7月頃に公開していたライブラリのようです。

なにやら便利そうな機械学習ライブラリらしいので、ちょいと試してみようと思います。
ということで、ありきたりですがKaggleのTitanicのデータセットをもとに機械学習タスク(分類)を試してみました!

Turi Createとは

Appleが2018年7月に公開した機械学習ライブラリです。


機械学習アルゴリズムに精通していないくても容易にレコメンドや物体検知、画像分類などのタスクをアプリケーションに組み込むことができるらしい。
Turi Createの特徴は以下とのことです。

  • アルゴリズムではなくタスクに焦点を当てている
  • データ探索のための可視化機能をもつ
  • テキスト、画像、音声、動画、センサーデータにも対応
  • 単一のマシンでも大規模なデータセットを扱える
  • iOS、macOS、watchOS、tvOSで使うためにCoreMLにモデルをExportできる

詳しくは以下の公式Githubのreadmeをご参照ください。

titanicで試してみる

環境

  • turicreate: 5.7.1
  • pandas: 0.24.2

Turi Createは以下でインストールできます。

データ読み込みと前処理

ライブラリをインポートし、学習・テストデータセットを読み込みます。
ついでに欠損値も確認します。

OUTPUT:

今回は欠損が多いAgeとCabin、そのままの状態ではカテゴリ変数として扱いにくいNameとTicketは除外し、FareとEnbarkedの欠損値は中央値で補完することにします。

※Turi Createを使う場合は、欠損値を除外するか何らかの値で補完しておく必要があります。

Turi Createでデータ可視化

Turi Createの可視化機能を使ってみます。
Turi Createでテーブルデータを使うには、SFrameというpandas.DataFrameに非常に似たデータ構造に変換する必要があります。


SFrame.plot()するだけで特徴量ごとにいい感じに可視化してくれます。
この他にもヒートマップや散布図などもあるようです。

学習

今回はTuri CreateのGradient Boosting Treesを使って学習モデルを作ります。

勝手に学習データのうちの5%を使ってバリデーションセットを作ってくれるようです。
イテレーションごとに各指標を出力してくれるのも良いですね。

次に、学習済みモデルの要約をみてみます。

イテレーション終了後のモデルの各指標を確認できるようです。めっちゃ過学習してますが、、、

次に、モデルの評価もしてみます。

これはなかなか便利そうです。thresholdごとのTPR, FPRを出力してくれるのでROC曲線も簡単に作成できそうです。

推論

学習済みモデルにテストデータを入力し推論させ、結果をCSVで出力します。

これに関しては、scikit-learnと同じ感じですかね。

まとめ

Turi Createを使うとscikit-learnと同様に容易に学習、推論できることが分かりました。
scikit-learnより優れている点としては、学習済みモデルの評価を良い感じに出力してくれるところとか、画像・動画・音声といった様々なタスクに適用できるところでしょうか。
まだまだ他にもできることがあると思うので、気が向いたら試してみようと思います。