Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
プロジェクトTakumi 〜レコメンデーション設定への挑戦者たち〜
Report
Hiroaki Honda
Follow
May. 19, 2018
•
0 likes
0 likes
×
Be the first to like this
Show More
•
1,056 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Archer
Tokuhiro Matsuno
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
Leap Motion を用いた数学教材開発の例
Yukinori KITADAI
Leap motion 実践活用 ダイジェスト版
Kaoru NAKAMURA
IoTC -> Power Automate & Apps
Teruchika Yamada
AIプロジェクト実践解説 〜 農業・医療・建設プラットフォームを支えるために必要なスキル 〜
Deep Learning Lab(ディープラーニング・ラボ)
ARmarker
Shinju Shibuya
SeleniumとPhantomJSで自動化サーバーレス(RPALT vol.1 LT)
Mitsuhiro Yamashita
1
of
37
Top clipped slide
プロジェクトTakumi 〜レコメンデーション設定への挑戦者たち〜
May. 19, 2018
•
0 likes
0 likes
×
Be the first to like this
Show More
•
1,056 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Software
Pycon mini Osakaの発表資料です。 2018.05.19
Hiroaki Honda
Follow
Advertisement
Advertisement
Advertisement
Recommended
ABEJAの映像解析を支える仕組みとRancher - Japan Container Days v18.12
紘之 大田黒
17.6K views
•
47 slides
火事の時に電話とSlackでお知らせするネタIoT (笑)
紘之 大田黒
492 views
•
34 slides
プログラムで映像をつくるとは?? ~超入門編~
Ryo Kanda
15.4K views
•
59 slides
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
紘之 大田黒
3K views
•
56 slides
Unity(再)入門
Takayoshi Tanaka
744 views
•
20 slides
Leap motion.js
Haraguchi Go
2.3K views
•
28 slides
More Related Content
Slideshows for you
(12)
Archer
Tokuhiro Matsuno
•
3.7K views
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
•
4.2K views
Leap Motion を用いた数学教材開発の例
Yukinori KITADAI
•
3K views
Leap motion 実践活用 ダイジェスト版
Kaoru NAKAMURA
•
9.4K views
IoTC -> Power Automate & Apps
Teruchika Yamada
•
558 views
AIプロジェクト実践解説 〜 農業・医療・建設プラットフォームを支えるために必要なスキル 〜
Deep Learning Lab(ディープラーニング・ラボ)
•
2.6K views
ARmarker
Shinju Shibuya
•
158 views
SeleniumとPhantomJSで自動化サーバーレス(RPALT vol.1 LT)
Mitsuhiro Yamashita
•
1.7K views
AI×IoT活用サービスの拡大に必要なコト (JAWS-UG IoT専門支部)
紘之 大田黒
•
414 views
Sl勉強会 ソフトレイヤー活用ガイド紹介
Maho Takara
•
698 views
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
•
10.3K views
CircleCIのArtifactを活用してレポートを作成する
Takeo Saga
•
317 views
Similar to プロジェクトTakumi 〜レコメンデーション設定への挑戦者たち〜
(20)
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
•
2.2K views
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Yoshihito Kuranuki
•
3.7K views
【Connected.T2】システム構築・運用負荷を軽減!SORACOM Beam が実現する、ヒトとモノにやさしいIoT
SORACOM,INC
•
4.7K views
WebRTCで動かす“テレイグジスタンス”ロボット
NTT Communications Technology Development
•
5.1K views
OpManager導入事例 日テレITプロデュース様
ManageEngine, Zoho Corporation
•
975 views
【Connected.T3】SORACOMで実現するプライベートIoTバックエンド
SORACOM,INC
•
3.4K views
SORACOM Discovery2019 H1新規事業立上げを支援するソラコムチームの活動とユーザー事例
SORACOM,INC
•
698 views
SORACOM Discovery2019 D2 現場をセンサーと可視化ツールで見える化 〜業務を変えるリアルタイム可視化の効果〜
SORACOM,INC
•
801 views
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DeNA
•
5.3K views
SORACOM Conference Discovery 2017 | E1. SORACOM APIによるデバイス設定・管理の自動化
SORACOM,INC
•
1.6K views
devsummit_nifcloud_vmware
富士通クラウドテクノロジーズ株式会社
•
2.6K views
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
•
14.5K views
Angularreflex20141210
Shinichiro Takezaki
•
751 views
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
•
48K views
Aigent-Recommender-Introduction.pdf
JunKakuta1
•
13 views
Aigent-Recommender-Introduction.pdf
JunKakuta1
•
542 views
Aigent-Recommender-Introduction.pdf
JunKakuta1
•
6 views
Aigent-Recommender-Introduction.pdf
JunKakuta1
•
9 views
GCPで広告動画を自動生成した話し
Shotaro Murai
•
634 views
kintoneとAmazon Connectで日直の自動化など
Mitsuhiro Yamashita
•
389 views
Advertisement
Recently uploaded
(20)
留信网认证可查【俄亥俄大学文凭证书毕业证购买】
1lkjhg
•
2 views
WEB-jsug info14_final.pdf
Draft One
•
0 views
①【密德萨斯大学毕业证文凭学位证书|工艺完美复刻】
0987hgh789
•
2 views
①【劳里埃大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
留信网认证可查【萨福克大学文凭证书毕业证购买】
hh123hh1
•
3 views
①【萨斯喀彻温大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
留信网认证可查【堪萨斯大学文凭证书毕业证购买】
1lkjhg
•
2 views
①【威得恩大学毕业证文凭学位证书|工艺完美复刻】
0987hgh789
•
2 views
留信网认证可查【艾格伍学院文凭证书毕业证购买】
32lkhng
•
2 views
Jitera Inc.Company presentation_v5.pdf
SoshiSuzuki2
•
170 views
☀️【萨德伯里大学毕业证成绩单留学生首选】
15sad
•
2 views
☀️【斯旺西大学毕业证成绩单留学生首选】
25mjhd12
•
2 views
JSUG Info Vol.13
Draft One
•
0 views
①【伦敦政治经济学院毕业证文凭学位证书|工艺完美复刻】
0987hgh789
•
2 views
留信网认证可查【俄克拉荷马大学文凭证书毕业证购买】
1lkjhg
•
2 views
☀️《USD毕业证仿真》
jjkjkijk
•
2 views
留信网认证可查【奥克兰大学文凭证书毕业证购买】
ihh14ds
•
2 views
留信网认证可查【怀俄明大学文凭证书毕业证购买】
1lkjhg
•
2 views
国外学历【奥克兰商学院研究生文凭毕业证留学生首选】
jsad789
•
2 views
測量支援ソフト「みとおしえ」「みとおしえクラウド」の紹介
ssuserbceee8
•
48 views
プロジェクトTakumi 〜レコメンデーション設定への挑戦者たち〜
プロジェクトTakumi ∼レコメンデーション設定への挑戦者たち∼ Silver Egg Technology
株式会社 本田裕昭
自己紹介 本田 裕昭 (ほんだ
ひろあき) • シルバエッグ・テクノロジー所属エンジニア • レコメンドエンジンの顧客サイトへの導入・チューニング・運用を主に担当 • Pycon mini Osaka カメラ係
SILVER EGG TECHNOLOGY AI技術を用いたパーソナライゼーションを実現する企業 レコメンデーションエンジンを中心とした製品群を提供 https://www.silveregg.co.jp/
アイジェント・レコメンダーについて SaaS型レコメンドエンジンで国内売上高1位 https://www.silveregg.co.jp/archives/news/1216
アイジェント・レコメンダーについて リアルタイム ● サイトにおけるユーザ行動をリアルタイムに分析、アイテム同士の関連性を計算 (ベイジアン協調フィルタリング) ● 今日追加された商品でも相関に基づいておすすめできる パスディペンデンシー ●
行動履歴に基づいて嗜好に合わせたアイテムをレコメンド レコメンドレシピ ● ページ(レコメンド枠)毎に設定されたレシピに基づいて最適なレコメンドを 提供
レコメンドレシピのイメージ TOP ページ 検索結果 ページ 商品詳細 ページ カート ページ 決済完了 ページ 各ページの特性に合わせてレコメンドをデザイン 「その商品を見た人が 興味を持ちそうな商品」や 「より高価格帯の商品」 をおすすめ 「検索結果に対して 関連性が高い商品」 をおすすめ 「購入された商品の後で 買われる頻度が高い商品」 をおすすめ 「カート内の商品と一緒に 買われる頻度が高い商品」 をおすすめ
レコメンドレシピ設定 - 設定項目1 レコメンドタイプ 相関
- アイテム同士の関連性 ○ BB(閲覧閲覧相関): このアイテムを見た人は、こんなアイテムも見ています ○ OO(同時購買相関): このアイテムを買った人は、こんなアイテムも一緒に買っています ○ BO(閲覧購買相関): このアイテムを見た人は、こんなアイテムを買っています ○ PO(過去購買相関): このアイテムを買った人は、過去にこんなアイテムを買っています ○ CB(カテゴリ閲覧相関): このカテゴリを見た人は、こんなアイテムを見ています ○ KB(キーワード閲覧相関): このキーワードで検索した人は、こんなアイテムを見ています ランキング ○ 閲覧ランキング ○ 購入ランキング Footprint(あしあと)
レコメンドレシピ設定 - 設定項目2 レコメンドのキー 閲覧中アイテム カートに入れられたアイテム 行動履歴 ○
閲覧履歴 ○ 購入履歴 ○ カート履歴 フィルタリング カテゴリフィルタ 価格フィルタ 行動によるフィルタ ○ 閲覧中 ○ 閲覧済み ○ 購入済み
レコメンドレシピ設定 - 設定項目3 ロジック ●
Pythonコードによりエンジンに指示を 出すためのもの ディスプレイ ● 商品情報表示のためのJavaScriptコード その他 ● マーチャント(顧客)コード ● クラスタ トラッキング ● 閲覧 ● カート投入 Backfill ※相関で要求数を満たせない場合の 補填方法
レコメンドレシピ設定 ● 実体はCouch DB上のドキュメント(JSON) ●
1顧客サイトにつき1ドキュメント ● 1つのレコメンド枠に対して1SPEC ● SPEC: レコメンド設定一式をまとめたもの ● 1サイトにつき10∼100個以上のSPECを設定 ● 手で修正できる規模ではないのでPythonスクリプトにより生成(従来方式)
アイジェント・レコメンダー構成 Load Balancer AP Server
AP Server CouchDB レコメンドレシピ設定 デプロイ レコメンド要求 エンドユーザ または顧客サイトサーバ シルバーエッグ エンジニア Couch DBから レシピ設定をロードし、 枠に応じたレコメンドを返す
従来のワークフロー(導入時) 1. 仕様書作成(コンサル) 2. 仕様書レビュー(コンサル+エンジニア) 3.
コンフィグ作成(エンジニア主担当) ○ レコメンドレシピ設定のためのPythonスクリプト 4. コンフィグレビュー(エンジニアサブ担当) 5. ステージング反映 6. 顧客側テスト 7. 本番反映 8. 顧客側リリース(利用開始) ※コンサル:営業とエンジニアの中間的な立ち位置で、顧客と直接やりとりして仕様を決める役割の人
従来方式の問題 1つ1つ手作りのPythonコード ● エンジニアでないといじれない ● 人手中心 ○
ミスを防ぐためのレビュー、ダブルチェックでさらに手間が ○ 導入、チューニングのリードタイムがどうしてもかかる ● マニアックな設定になると1人の人しか理解できない ○ ○○(とある顧客)のコンフィグは○○さんしか触れない
あれ??全然AI企業っぽくない・・・
ビジネス要求 ● 運用開始までの期間をもっと短くしたい ○ トラッキングを早期に開始する方が有利 ●
導入後のPDCAサイクルをもっと早く回したい ○ もっと頻繁にA/Bテストを ○ 顧客サイトの成長に合わせて最適なレコメンドを提供したい → 従来のやり方ではすぐ限界になる
Takumi(匠) レコメンドレシピ生成・管理システム ● 1つ1つスクリプトを書くのではなく、Web画面上で設定できるように ● エンジニアでなくとも設定できるようにする
レシピ入力 システムイメージ Takumi Web Git リポジトリ コンサル エンジニア Couch DB
AP Server レコメンダー ステージング環境 Couch DB AP Server レコメンダー 本番環境 レシピをチェックアウト 必要に応じて修正&保存 デプロイ Takumi CLI デプロイ 保存 デプロイ
詳細画面で指定する項目 • レコメンドタイプ • 要求数(いつく返すか) •
カテゴリフィルタ • 価格フィルタ(○○円∼○○円) • レコメンドのキー • 何をキーにするか • 個数 • Backfill(相関で要求数を満たせない場合の補 填) • ランキング(閲覧 or 購入) • 組み込みコードの指定 など
Takumiの技術要素 ● Webアプリ ○ Pyramid
+ Chameleon + colander + deform + bootstrap ● YAML ○ 機械でハンドリングできる,かつ人間も読み書き可能 ● libgit2, pygit2 ● Jinja2
Web Framework ● Pyramid ○
採用に特に深い理由なし、強いて言えば社内的に実績があったから ● colander ○ schema定義+validation ● deform ○ colanderでschemaを書くとフォームを自動生成してくれる ● chameleon ○ xml型template engine ○ deformが標準で用意しているwidgetがchameleonなので
libgit2, pygit2 ● libgit2 ○
gitリポジトリを操作するためのAPI(Cによる実装) ○ Bindingsが豊富 ■ https://github.com/libgit2/libgit2#language-bindings ○ Thread Safe & Reentlancy ● pygit2 ○ libgit2のPython binding ○ http://www.pygit2.org/ 変更があれば社内リポジトリにpush 社内リポジトリから1分おきにfetch いちいち作業ファイルを作らずにリポジトリのデータを読み書きできる
pygit2の例1 リポジトリからのファイル取り出し
pygit2の例2 ファイルのコミット
pygit2の例2 ファイルのコミット(実行結果)
組み込みコード 問題 • プログラムコード(Python, JavaScript)をYAML内に書くのはつらい 解決策 •
Jinja2テンプレートで記述してリポジトリに置く • YAMLから名前で参照
組み込みコードの例 {% custom_logic 'mylogic',
'閲覧中・閲覧履歴から計n件除外', ('n',) %} .... xplen = {= n =} spec[Spec.EXCL_PRODS] = prods + browses_list[:xplen] {% end_custom_logic %} mylogic.py.jinja2 merchant: silveregg spec01: ... custom_logic: {name: mylogic, params:{n: 10}} ... config.yml 名前 説明 引数の定義 引数の値に置換される部分
組み込みコードの指定例 候補から使用したいコードを選択 コードに渡すパラメータを指定
導入後の変化 ● 非エンジニアでもレシピの作成ができるようになった! ● エンジニアが1からスクリプトを書く必要はなくなった
→ 工数の縮小 ● Pythonの書き間違いによるミスが激減(なくなったわけではない) ● リードタイムの縮小 ○ 簡単な変更であれば依頼から最短1時間程度で本番反映
Before • 仕様書作成 • 仕様書レビュー •
生成スクリプトの作成 • コードレビュー • ステージング反映 • 顧客側テスト • 本番反映 導入後の変化 - 導入時ワークフロー After • 仕様書作成 • 仕様書レビュー • Takumi入力 • ステージング反映(画面から) • 顧客側テスト • 本番反映 Near Future • Takumi入力 • ステージング反映(画面から) • 顧客側テスト • 本番反映 仕様書も廃止していく予定
難しかった点、問題 ● レシピの設定項目が膨大→カバーするのが大変 ○ 未だに100%は網羅できていない ○
使用率の高い項目から対応 ● Takumiで導入した後、未対応の機能を使うことに・・・ ○ そのサイトだけのパッチを当てて当座をしのぐ ○ 旧方式に戻す ● 入力ミスが結構多い ○ 入力後のチェックに稼働を取られる ■ チェック機能の強化(予定) ■ 設定内容を一覧化 → 自分で確認しやすく
まとめ • アイジェントレコメンダーの運用ではレコメンドレシピの設定が必須 • 従来:1つ1つPythonスクリプトで生成 •
今後:Takumi • レシピ作成・管理の省力化 • 非エンジニアでもレシピの作成・修正ができるようになった • 旧方式から順次移行中
まとめ AIというとスマートなイメージだけど 蓋を開けてみると実際の現場は泥臭い作業の連続だったり・・・ ● AIに食わせるデータのメンテナンス ● AIのパラメータチューニング ●
AIのインシデント管理 ● AIの・・・ こういった作業こそ自動化していくべき
共感していただける方はぜひ、仲間になりましょう! シルバーエッグテクノロジー エンジニア募集中! https://www.silveregg.co.jp/recruit/recruit01.html
ご清聴ありがとうございました。
Advertisement