Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実験するときのデータ管理

Avatar for 515hikaru 515hikaru
November 19, 2018

 実験するときのデータ管理

2018/11/6 Data Driven Development Meetup LTの資料です。

Avatar for 515hikaru

515hikaru

November 19, 2018
Tweet

More Decks by 515hikaru

Other Decks in Programming

Transcript

  1. 背景 あるデー タとあるアルゴリズムの組み合わせでどんな予測結果が出 るのかを検証するためのアプリを作りたい システム化以前の効果検証 実際に予測や推薦とかをして結果を見てみる 検証期間は1 ヶ月~ 数ヶ月 特定のデー

    タに様々 な試行錯誤を施す 前処理のスクリプトのメンテナンスコストの増大 自分が書いたコー ドが自分もワカラナイなんてことも起こり得 る デー タとアルゴリズムの組み合わせを検証 どの組み合わせは既に終えたのかなどが混乱しがち
  2. 課題 デー タの管理 デー タが3 種類: 生デー タ、 前処理済みデー タ、

    予測時に利用す るデー タ 前処理の内容は日々 変わる どのデー タがどんな前処理を施したデー タかわからなくなる スクリプトの管理 デー タとスクリプトの依存関係が不明瞭
  3. 1. 前処理用リポジトリの管理 成果物を定義する 成果物はアプリケー ションが使うデー タを作成すること 前処理用のスクリプトとアプリケー ションで分担ができていれ ばよい アプリケー

    ションは何を想定して何を想定しないのかを明確に 欠損は前処理のうちに埋めておく 標準化の実施はアプリケー ション側で制御する etc...
  4. 2. 前処理用リポジトリの管理 フォルダ構成( 抜粋) ├ ─ ─ M a k

    e f i l e ├ ─ ─ d a t a │ ├ ─ ─ i n t e r m e d i a t e # 中間生成物 │ ├ ─ ─ o u t p u t # 成果物 │ └ ─ ─ r a w # 生デー タ └ ─ ─ s r c / * . p y ここで s r c と r a w の中身だけ Git 管理下に置く。 Makefile 成果物や中間生成物はバー ジョン管理をしない 完成版をいつでももう一度 m a k e と叩けば再生成できるようにする デー タを管理するのではなくデー タを作成するプロセスを管理 する
  5. アプリケー ション側 普通にアプリケー ションを実装する Web かCLI か ( 地味に重要) 前処理用のリポジトリとバー

    ジョン番号を合わせる どのバー ジョンでどのデー タを想定していたのかが明確
  6. この方法のメリット 各実験デー タとアプリケー ション管理がGit とMakefile だけでできる 可搬性が非常に高い デー タを操作するフェイズとアプリで微調整するフェイズが明確化 アプリケー

    ションで制御できる程度の実験はアプリケー ション でできる( 工数小、 手戻りコスト少) デー タの変更を行う大規模な変更を行う回数の最小化 デメリット Makefile 意外と誰も読めない 複数人でできるか未検証
  7. 自己紹介 名前: 515 ひかる 25 歳、 男性、 愛知県出身、 学部時代は数学をしていた だいたいTwitter(@515hikaru)

    にいる ここ半年くらいサー バー サイドのWeb エンジニアっぽいことをして いた