※これはセミナー聴講時の個人的なノートをそのまま公開したものです。誤字誤植や勘違いがある可能性があるのでご了承ください。
期待していた以上に内容が実践的で良かったです。ここでこう悩んでこう解決するのかが分かったので。
プレゼン資料が配られたので、細かなノートは取っていません。気になったポイントだけ箇条書きでまとめました。
探索的データ分析(exploratory data analysis):
- 「どんなデータがあるのか? そのデータはそのまま使えるか、それとも前処理が必要か?」などを検討・実施していく
プレゼンでデモした内容(GitHub上):
- training-data-analyst/babyweight.ipynb at master · GoogleCloudPlatform/training-data-analyst · GitHub
- Cloud ML Engineで動かすにはPythonのファイルにする必要がある:
- 運用に使えるWebアプリのサンプル:
[操作 Tips]Jupyter Notebook上でのシェルコマンド実行:
- 行頭に
!
を入れるパターン - セルの先頭行に
%%bash
(マジックコマンド)を入れるパターン%
: 一行を対象%%
: セル全体を対象
- 行頭に
カテゴリー変数と数値変数の違い:
- カテゴリー変数は、離散的なラベル値。(分類に使える値ということ?)
- 数値変数は、数値間の差に統計的な意味がある値。(回帰に使えるということ?)
- どちらの変数でも学習できる場合、それぞれのパターンで学習して、精度が良いものを採用すればよい(あえて一方に絞る必要はない)
人工的なデータ生成:
- 例えば性別などのデータがあって、運用時に計測不可な場合もあるが、最初の学習段階で「不明」という値を人工的に作成すること
- 既存データをコピーして「不明」にするのでデータは2倍になる
データ分割で年月ハッシュ値を使う理由:
- 常に固定的なデータ分割できるので、モデルの性能評価を(年度ごとなどで)比較したいなどのときに便利
tf.[contrib.]learn
を利用したディープラーニング:- 素のTensorFlowはフススクラッチで面倒
- 最上位レベルのKerasは痒いところ(具体的には分散学習)に手が届かない
- よってtf.learnを使う:
- 【私見】あれ、
tf.learn
は非推奨じゃなかったかなと思って調べたらやっぱり非推奨だった - High level API for learning (DEPRECATED). This module and all its submodules are deprecated. See contrib/learn/README.md for migration instructions.
- contrib/learn/README.md at r1.13 · tensorflow/tensorflow · GitHub
- 代わりに
tf.estimator
を使えと書いてある。tf.learnと同様の機能を提供しているっぽい - なんで言及なかったんだろう。気になった
- 【私見】あれ、
tf.decode_csv
を使ったCSVファイル読み取り:- tf.io.decode_csv | TensorFlow
tf.io.decode_csv
が正式で、tf.decode_csv
は別名- 効率的にファイルを読み取れる。自分で実装しなくてよいから便利
train_and_evaluate
メソッド:Wideモデル:
- カテゴリー変数を用いた線形モデルのこと
- カテゴリー変数は内部的に one-hote表現 に変換される
- つまり各カラムで 1 ・ 0 のフラグが付く形式になり、これは
if
文と同じ挙動 - 要するに、実質的には ルールベースの処理 となる
Feature Cross:
- 日本語訳は分からないとのこと
- カテゴリー変数同士の相関(
AND
条件と同じ挙動)を変数として足すことで、線形モデルの精度が上げられる - タクシーの頭の出っ張りが「黄色」で場所が「ニューヨーク」であれば、その相関(
AND
条件)となる「黄色×ニューヨーク」という変数を足すということ
Deepモデル:
- ニューラルネットワークモデルのこと。特に数値変数の場合に良い性能を発揮する
- Embeddingレイヤーによりカテゴリー変数を数値に変換することもできる
- 例えば50種類の色がある場合、RGBで表現すればたった3つの数値変数で表現できる。RGBはEmbeddingの一種
Feature Cross + Embeddingレイヤー:
- Feature Crossを行うと変数の数が膨大になる
- Embeddingレイヤーを使うと変数の数を減らせる
- よって両方を組み合わせて、変数を増やしつつ減らすという手法
Wide & Deep モデル:
- WideモデルとDeepモデルを結合させて使うこと。いわゆるアンサンブル学習の一種
Google Cloud ML のバージョン管理機能:
- MLモデルのバージョン履歴が残っており、簡単な操作で切り替えられる
- 新バージョンを全体公開する前に、一部だけに公開して問題なければ全体への公開に切り替える、といったABテストのようなことが簡単にできる