狠狠撸

狠狠撸Share a Scribd company logo
機械学習における
PDCA を回せる環境構築の話
坂本 昂輝
1
自己紹介
● 氏名:坂本 昂輝
● 経歴:阪大の基礎工/情報院
卒。2018年にGIGに入社し、
メディアサイト制作のバック
エンドを担当。2019年から
は自社サービスWorkshipの
レコメンドエンジンやスコア
リングシステムの開発、およ
びデータ分析業務に従事して
いる。
● 趣味:ゲーム(FPS)、筋ト
レ(週3)
2
目次
● プレゼンの目的と対象者
○ 目的
■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有
■ 社内の方々へ、仕事内容の共有
○ 対象者
■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方
■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方
● Workship
○ 概要
○ スコアリング
● 機械学習基盤
○ 最初の全体構成と PDCA
■ Google Cloud Functions
○ 改善後の全体構成と PDCA
■ アノテーションシステム
■ Docker 本番運用
■ スコアリング API
● データ分析基盤
○ KPI 確認用シート
○ オンライン分析 Jupyter Notebook
○ データ分析の PDCA 3
目次
● プレゼンの目的と対象者
○ 目的
■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有
■ 社内の方々へ、仕事内容の共有
○ 対象者
■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方
■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方
● Workship
○ 概要
○ スコアリング
● 機械学習基盤
○ 最初の全体構成と PDCA
■ Google Cloud Functions
○ 改善後の全体構成と PDCA
■ アノテーションシステム
■ Docker 本番運用
■ スコアリング API
● データ分析基盤
○ KPI 確認用シート
○ オンライン分析 Jupyter Notebook
○ データ分析の PDCA 4
目次
● プレゼンの目的と対象者
○ 目的
■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有
■ 社内の方々へ、仕事内容の共有
○ 対象者
■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方
■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方
● Workship
○ 概要
○ スコアリング
● 機械学習基盤
○ 最初の全体構成と PDCA
■ Google Cloud Functions
○ 改善後の全体構成と PDCA
■ アノテーションシステム
■ Docker 本番運用
■ スコアリング API
● データ分析基盤
○ KPI 確認用シート
○ オンライン分析 Jupyter Notebook
○ データ分析の PDCA 5
● プロジェクトとフリーランス
のマッチングサービス
○ 法人側は、プロジェクトに適切な
フリーランスに「気になる」
○ フリーランス側は、興味を持った
求人に「気になる」
○ お互いに気になるをした時をマッ
チングと呼称
● 判断材料
○ 法人側:フリーランスのプロフィ
ール、スコアなど
○ フリーランス側:求人内容、会社
情報など
● 機械学習の活用場所
○ フリーランスのスコアリング
○ 求人やフリーランスのレコメンド
Workship の概要
6
スコアリング
● プロフィールやユーザ行動情報等をもとに、フリーランスを点数化
● これまでのアプローチ
○ プロフィールの各情報に対して点数を付与し、その合計をスコアとする
■ 離散的で差がつかない
○ プロフィールの各情報に対して関数を適用し、その合計をスコアとする
■ スコアの分布の広がりを調整しにくい
■ 評価できない
■ 質ではなく、量でしか判断できない
● 現在のアプローチ
○ 機械学習でスコアを予測する
■ 単純な関数ではない
■ 例1:文章量で考えた場合、多すぎても少なすぎてもダメ
■ 例2:職業に依って重要なスキルは変化する
● 問題点
○ 最初はデータがない
■ 採用のプロにヒアリングしながら、プロフィールの評価データを作成する必要
7
目次
● プレゼンの目的と対象者
○ 目的
■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有
■ 社内の方々へ、仕事内容の共有
○ 対象者
■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方
■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方
● Workship
○ 概要
○ スコアリング
● 機械学習基盤
○ 最初の全体構成と PDCA
■ Google Cloud Functions
○ 改善後の全体構成と PDCA
■ アノテーションシステム
■ Docker 本番運用
■ スコアリング API
● データ分析基盤
○ KPI 確認用シート
○ オンライン分析 Jupyter Notebook
○ データ分析の PDCA 8
最初の全体構成
9
Bigquery
Workship
Google Cloud Functions
Google Cloud Storage
fluentd
管理者がサイクルに入っており、
管理者がモデル改善をしない限り
モデルが更新されない
管理者
データ送出
データ送出管理
訓練データ
作成&モデ
ル改善
フリーラン
スデータを
csvでダウ
ンロード
デプロイ
APIコール
評価結果を返却
Google Cloud Functions
● GCP のサーバレスコンピューティングサービス
● メリット
○ 対象言語で関数を記述すると、イベントを起点に実行してくれる
○ 対象言語
■ Go 1.1
■ Node.js 6, 8, 10
■ Python 3.7
● 問題
○ 容量が少ない (512MB)
■ 文章を精査するためのビルド済み解析器を複数置くことができない
■ 高度な辞書を置くことができない
● 解決策
○ Google NLP (Natural Language Processing) との連携
■ 高い (月5万)
10
最初の PDCA
● 目標:指標○○を××以下にする
● 前作業:Bigquery からユーザデータを csv 形式でダウンロードし、スプレ
ッドシートで開いてアノテーション
○ 非常に見にくいので、Workship 上でプロフィールを開いて確認
■ プロフィールが更新されると誤っ
た点数をつけてしまうリスク
○ アノテーションの際、どのような点に
着目して点数をつけたかをメモ
■ 特徴ベクトル構築の参考にする
11
aa
Plan
前作業のメモを
参考に、特徴量
の追加計画
Do
特徴量の追加、
パラメータチュ
ーニング
Check
指標○○を手作業
で確認
Action
改善されていたら
コード&モデルデ
プロイ
改善後の全体構成
1212
Bigquery
Workship
fluentd
管理者
管理者
アノテーション
自動でサイクルを回しながら、
管理者は外から変更を加える
データ送出
データ送出管理
デプロイ
APIコール
評価結果を返却
訓練データ
をコードか
らダウンロ
ード
特徴量選択
学習バッチ
アノテーションシステム
● データを効率よく作成するシステム
● 実現したこと
○ ブラウザからフリーランスのプロフィールを
確認
○ 現在のモデルによる予測スコアが表示され、
それを参考にした評価
○ 評価の判断基準に関するコメント
○ 評価の方法を共有すれば、誰でもアノテーシ
ョンすることが可能
13
Docker 本番運用
● 1台の物理サーバ上にコンテナを展開
● Docker で実現している機能
○ Jupyter Notebook オンラインデータ分析
■ Jupyter Notebook を用いたデータ分析の結果を誰でも閲覧可能
○ スコアリング API
■ 全フリーランスのスコアを返却
○ アノテーション用スコアリング API
■ 1フリーランスのスコアを返却
○ 学習バッチ
■ 1日1回、モデルを自動更新
● 注意点
○ 分析、スコアリングAPI、学習バッチなど、どれもお客様
に対してクリティカルな影響を与えるものではなく、
また”現状では”技術負債になりかねないため、
オーケストレーションツールは導入していない
14
papermill
● Jupyter Notebook (.ipynb) を CUI から実行可能とするツール
● cron と組み合わせることで Jupyter Notebook のバッチを作成可能
○ .ipynb から .py に変換する手間を省略
○ 1日毎にモデル学習を自動実行
● 導入方法
● 使い方
● 重要な点
○ 実行結果(モデルの評価結果を含む) result.ipynb をオンラインで確認可能
○ -p で引数を渡すことが可能なので、これを応用すればバッチ学習時には実行したくないコー
ドを Notebook 内に置いておくことが可能 15
$ pip install papermill
$ papermill model_training.ipynb result.ipynb -p args False
改善後の PDCA
● 目標:指標○○を××以下にする
● 前作業:アノテーションシステムにアクセスし、アノテーション
○ ブラウザでプロフィールを確認かつ点数を付与することが可能
○ 各訓練データにコメントを付与
16
aa
Plan
前作業のメモを
参考に、特徴量
の追加計画
Do
特徴量の追加、
コードデプロイ
Check
自動アウトプット
された結果にアク
セスして確認
Action
改善されていなか
ったらモデルロー
ルバック
PDCA の比較
17
aa
Plan
前作業のメモを
参考に、特徴量
の追加計画
Do
特徴量の追加、
コードデプロイ
Check
自動アウトプット
された結果にアク
セスして確認
Action
改善されていなか
ったらモデルロー
ルバック
aa
Plan
前作業のメモを
参考に、特徴量
の追加計画
Do
特徴量の追加、
パラメータチュ
ーニング
Check
指標○○を手作業
で確認
Action
改善されていたら
コード&モデルデ
プロイ
改善前 改善後
目次
● プレゼンの目的と対象者
○ 目的
■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有
■ 社内の方々へ、仕事内容の共有
○ 対象者
■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方
■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方
● Workship
○ 概要
○ スコアリング
● 機械学習基盤
○ 最初の全体構成と PDCA
■ Google Cloud Functions
○ 改善後の全体構成と PDCA
■ アノテーションシステム
■ Docker 本番運用
■ スコアリング API
● データ分析基盤
○ KPI 確認用シート
○ オンライン分析 Jupyter Notebook
○ データ分析の PDCA 18
KPI 確認用シート
● KPI を可視化したスプレッドシート
● 構成要素
○ Google Spreadsheet
○ GAS (Google Apps Script)
○ Bigquery
● メリット
○ 簡単で安い
○ 毎日の KPI 確認が気軽
○ KPI の長期的な推移を予測
19
オンライン Jupyter Notebook
● KPI 確認用シートでは補いきれない分析を行なっている Jupyter Notebook
● メリット
○ オンラインで公開しており、
権限があれば閲覧できる
○ 詳しい分析はここで行い、
Markdown 形式でレポート
を残しておけば、わざわざ
データサイエンティストに
ありがちなドキュメントを
作成する必要がない
20
データ分析の PDCA (予定)
● 目標:○○の数値を××まで増加させる
● 前作業:コンバージョンを予測するモデルを構築
○ あらかじめ小さめのサンプルでA/Bテストを行い、機械学習モデルに対して、「施策の対象
となることでコンバージョンする」顧客の特徴を学ばせておく
21
aa
Plan
何らかの施策を
計画
Do
CVRが高めのサ
ンプルに対して
A/Bテスト
Check
施策の効果を測定
Action
結果を踏まえてモ
デルを改善
まとめ
● 機械学習基盤を改修し、モデルを改善するサイクルから管理者を排除
● サービスのグロースに必要な分析環境を構築
22
参考
● 仕事ではじめる機械学習
○ 有賀 康顕、中山 心太、西林 孝 著 O’REILLY
● Jupyter だけで機械学習を実サービス展開できる基盤
○ https://engineer.recruit-lifestyle.co.jp/techblog/2018-10-04-ml-platform/
● 2018年なぜ私達はコンテナ/Dockerを使うのか
○ https://cloudpack.media/41647
23
Good is good.
We provide opportunities to The SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
GIG INC.
社員、業務委託 全職種積極採用中です!
経験者採用(1年以上)
● ディレクター / マーケター / 編集者
● フロントエンド / バックエンド / インフラ
● デザイナー / アートディレクター
● 人事 / 財務
職種未経験者も検討
● ディレクター / マーケター / 編集者
● バックエンド
新卒も検討
● マーケター / 編集者
GIG INCのこと
こちらの箱に連絡先をいれてください
Copyright ? GIG INC. All Rights Reserved.CONFIDENTIAL
運命の仕事相手
Dramatic project matching

More Related Content

LT.22 機械学習におけるPDCAを回せる環境構築の話

  • 2. 自己紹介 ● 氏名:坂本 昂輝 ● 経歴:阪大の基礎工/情報院 卒。2018年にGIGに入社し、 メディアサイト制作のバック エンドを担当。2019年から は自社サービスWorkshipの レコメンドエンジンやスコア リングシステムの開発、およ びデータ分析業務に従事して いる。 ● 趣味:ゲーム(FPS)、筋ト レ(週3) 2
  • 3. 目次 ● プレゼンの目的と対象者 ○ 目的 ■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有 ■ 社内の方々へ、仕事内容の共有 ○ 対象者 ■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方 ■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方 ● Workship ○ 概要 ○ スコアリング ● 機械学習基盤 ○ 最初の全体構成と PDCA ■ Google Cloud Functions ○ 改善後の全体構成と PDCA ■ アノテーションシステム ■ Docker 本番運用 ■ スコアリング API ● データ分析基盤 ○ KPI 確認用シート ○ オンライン分析 Jupyter Notebook ○ データ分析の PDCA 3
  • 4. 目次 ● プレゼンの目的と対象者 ○ 目的 ■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有 ■ 社内の方々へ、仕事内容の共有 ○ 対象者 ■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方 ■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方 ● Workship ○ 概要 ○ スコアリング ● 機械学習基盤 ○ 最初の全体構成と PDCA ■ Google Cloud Functions ○ 改善後の全体構成と PDCA ■ アノテーションシステム ■ Docker 本番運用 ■ スコアリング API ● データ分析基盤 ○ KPI 確認用シート ○ オンライン分析 Jupyter Notebook ○ データ分析の PDCA 4
  • 5. 目次 ● プレゼンの目的と対象者 ○ 目的 ■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有 ■ 社内の方々へ、仕事内容の共有 ○ 対象者 ■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方 ■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方 ● Workship ○ 概要 ○ スコアリング ● 機械学習基盤 ○ 最初の全体構成と PDCA ■ Google Cloud Functions ○ 改善後の全体構成と PDCA ■ アノテーションシステム ■ Docker 本番運用 ■ スコアリング API ● データ分析基盤 ○ KPI 確認用シート ○ オンライン分析 Jupyter Notebook ○ データ分析の PDCA 5
  • 6. ● プロジェクトとフリーランス のマッチングサービス ○ 法人側は、プロジェクトに適切な フリーランスに「気になる」 ○ フリーランス側は、興味を持った 求人に「気になる」 ○ お互いに気になるをした時をマッ チングと呼称 ● 判断材料 ○ 法人側:フリーランスのプロフィ ール、スコアなど ○ フリーランス側:求人内容、会社 情報など ● 機械学習の活用場所 ○ フリーランスのスコアリング ○ 求人やフリーランスのレコメンド Workship の概要 6
  • 7. スコアリング ● プロフィールやユーザ行動情報等をもとに、フリーランスを点数化 ● これまでのアプローチ ○ プロフィールの各情報に対して点数を付与し、その合計をスコアとする ■ 離散的で差がつかない ○ プロフィールの各情報に対して関数を適用し、その合計をスコアとする ■ スコアの分布の広がりを調整しにくい ■ 評価できない ■ 質ではなく、量でしか判断できない ● 現在のアプローチ ○ 機械学習でスコアを予測する ■ 単純な関数ではない ■ 例1:文章量で考えた場合、多すぎても少なすぎてもダメ ■ 例2:職業に依って重要なスキルは変化する ● 問題点 ○ 最初はデータがない ■ 採用のプロにヒアリングしながら、プロフィールの評価データを作成する必要 7
  • 8. 目次 ● プレゼンの目的と対象者 ○ 目的 ■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有 ■ 社内の方々へ、仕事内容の共有 ○ 対象者 ■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方 ■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方 ● Workship ○ 概要 ○ スコアリング ● 機械学習基盤 ○ 最初の全体構成と PDCA ■ Google Cloud Functions ○ 改善後の全体構成と PDCA ■ アノテーションシステム ■ Docker 本番運用 ■ スコアリング API ● データ分析基盤 ○ KPI 確認用シート ○ オンライン分析 Jupyter Notebook ○ データ分析の PDCA 8
  • 9. 最初の全体構成 9 Bigquery Workship Google Cloud Functions Google Cloud Storage fluentd 管理者がサイクルに入っており、 管理者がモデル改善をしない限り モデルが更新されない 管理者 データ送出 データ送出管理 訓練データ 作成&モデ ル改善 フリーラン スデータを csvでダウ ンロード デプロイ APIコール 評価結果を返却
  • 10. Google Cloud Functions ● GCP のサーバレスコンピューティングサービス ● メリット ○ 対象言語で関数を記述すると、イベントを起点に実行してくれる ○ 対象言語 ■ Go 1.1 ■ Node.js 6, 8, 10 ■ Python 3.7 ● 問題 ○ 容量が少ない (512MB) ■ 文章を精査するためのビルド済み解析器を複数置くことができない ■ 高度な辞書を置くことができない ● 解決策 ○ Google NLP (Natural Language Processing) との連携 ■ 高い (月5万) 10
  • 11. 最初の PDCA ● 目標:指標○○を××以下にする ● 前作業:Bigquery からユーザデータを csv 形式でダウンロードし、スプレ ッドシートで開いてアノテーション ○ 非常に見にくいので、Workship 上でプロフィールを開いて確認 ■ プロフィールが更新されると誤っ た点数をつけてしまうリスク ○ アノテーションの際、どのような点に 着目して点数をつけたかをメモ ■ 特徴ベクトル構築の参考にする 11 aa Plan 前作業のメモを 参考に、特徴量 の追加計画 Do 特徴量の追加、 パラメータチュ ーニング Check 指標○○を手作業 で確認 Action 改善されていたら コード&モデルデ プロイ
  • 13. アノテーションシステム ● データを効率よく作成するシステム ● 実現したこと ○ ブラウザからフリーランスのプロフィールを 確認 ○ 現在のモデルによる予測スコアが表示され、 それを参考にした評価 ○ 評価の判断基準に関するコメント ○ 評価の方法を共有すれば、誰でもアノテーシ ョンすることが可能 13
  • 14. Docker 本番運用 ● 1台の物理サーバ上にコンテナを展開 ● Docker で実現している機能 ○ Jupyter Notebook オンラインデータ分析 ■ Jupyter Notebook を用いたデータ分析の結果を誰でも閲覧可能 ○ スコアリング API ■ 全フリーランスのスコアを返却 ○ アノテーション用スコアリング API ■ 1フリーランスのスコアを返却 ○ 学習バッチ ■ 1日1回、モデルを自動更新 ● 注意点 ○ 分析、スコアリングAPI、学習バッチなど、どれもお客様 に対してクリティカルな影響を与えるものではなく、 また”現状では”技術負債になりかねないため、 オーケストレーションツールは導入していない 14
  • 15. papermill ● Jupyter Notebook (.ipynb) を CUI から実行可能とするツール ● cron と組み合わせることで Jupyter Notebook のバッチを作成可能 ○ .ipynb から .py に変換する手間を省略 ○ 1日毎にモデル学習を自動実行 ● 導入方法 ● 使い方 ● 重要な点 ○ 実行結果(モデルの評価結果を含む) result.ipynb をオンラインで確認可能 ○ -p で引数を渡すことが可能なので、これを応用すればバッチ学習時には実行したくないコー ドを Notebook 内に置いておくことが可能 15 $ pip install papermill $ papermill model_training.ipynb result.ipynb -p args False
  • 16. 改善後の PDCA ● 目標:指標○○を××以下にする ● 前作業:アノテーションシステムにアクセスし、アノテーション ○ ブラウザでプロフィールを確認かつ点数を付与することが可能 ○ 各訓練データにコメントを付与 16 aa Plan 前作業のメモを 参考に、特徴量 の追加計画 Do 特徴量の追加、 コードデプロイ Check 自動アウトプット された結果にアク セスして確認 Action 改善されていなか ったらモデルロー ルバック
  • 18. 目次 ● プレゼンの目的と対象者 ○ 目的 ■ 機械学習やデータ分析基盤を構築する上で便利だったことの共有 ■ 社内の方々へ、仕事内容の共有 ○ 対象者 ■ スタートアップで機械学習、もしくはデータサイエンスを活用しようとしている方 ■ 大企業でも、新規プロジェクトでデータがないor少ない状態で進めようとしている方 ● Workship ○ 概要 ○ スコアリング ● 機械学習基盤 ○ 最初の全体構成と PDCA ■ Google Cloud Functions ○ 改善後の全体構成と PDCA ■ アノテーションシステム ■ Docker 本番運用 ■ スコアリング API ● データ分析基盤 ○ KPI 確認用シート ○ オンライン分析 Jupyter Notebook ○ データ分析の PDCA 18
  • 19. KPI 確認用シート ● KPI を可視化したスプレッドシート ● 構成要素 ○ Google Spreadsheet ○ GAS (Google Apps Script) ○ Bigquery ● メリット ○ 簡単で安い ○ 毎日の KPI 確認が気軽 ○ KPI の長期的な推移を予測 19
  • 20. オンライン Jupyter Notebook ● KPI 確認用シートでは補いきれない分析を行なっている Jupyter Notebook ● メリット ○ オンラインで公開しており、 権限があれば閲覧できる ○ 詳しい分析はここで行い、 Markdown 形式でレポート を残しておけば、わざわざ データサイエンティストに ありがちなドキュメントを 作成する必要がない 20
  • 21. データ分析の PDCA (予定) ● 目標:○○の数値を××まで増加させる ● 前作業:コンバージョンを予測するモデルを構築 ○ あらかじめ小さめのサンプルでA/Bテストを行い、機械学習モデルに対して、「施策の対象 となることでコンバージョンする」顧客の特徴を学ばせておく 21 aa Plan 何らかの施策を 計画 Do CVRが高めのサ ンプルに対して A/Bテスト Check 施策の効果を測定 Action 結果を踏まえてモ デルを改善
  • 23. 参考 ● 仕事ではじめる機械学習 ○ 有賀 康顕、中山 心太、西林 孝 著 O’REILLY ● Jupyter だけで機械学習を実サービス展開できる基盤 ○ https://engineer.recruit-lifestyle.co.jp/techblog/2018-10-04-ml-platform/ ● 2018年なぜ私達はコンテナ/Dockerを使うのか ○ https://cloudpack.media/41647 23
  • 24. Good is good. We provide opportunities to The SEKAI by fusing technology and ideas. テクノロジーとクリエイティブでセカイをより良くする
  • 25. GIG INC. 社員、業務委託 全職種積極採用中です! 経験者採用(1年以上) ● ディレクター / マーケター / 編集者 ● フロントエンド / バックエンド / インフラ ● デザイナー / アートディレクター ● 人事 / 財務 職種未経験者も検討 ● ディレクター / マーケター / 編集者 ● バックエンド 新卒も検討 ● マーケター / 編集者 GIG INCのこと こちらの箱に連絡先をいれてください
  • 26. Copyright ? GIG INC. All Rights Reserved.CONFIDENTIAL 運命の仕事相手 Dramatic project matching