Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
Search
Ucchiii
July 16, 2025
Programming
0
130
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
Ucchiii
July 16, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
15
5.5k
CDK引数設計道場100本ノック
badmintoncryer
2
440
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
750
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
180
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
12
6.9k
VS Code Update for GitHub Copilot
74th
2
670
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
2
190
PipeCDのプラグイン化で目指すところ
warashi
1
300
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
210
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.5k
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
23
9.3k
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Into the Great Unknown - MozCon
thekraken
40
1.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Adopting Sorbet at Scale
ufuk
77
9.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Designing for Performance
lara
610
69k
How to Ace a Technical Interview
jacobian
278
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Transcript
July 16, 2025 商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩 Ryota Uchiyama Recommendation Industry Talks
#7
自己紹介 内山 遼大 株式会社マイベスト 開発部 プロダクトチーム バックエンドエンジニア 大学院では、医療画像を用いた機械学習の研究に取り組みながら、 Web系複数社でのイ ンターンを通じてWeb開発を経験。
2024年に新卒で株式会社マイベストに入社し、現在はモバイルアプリのバックエンドエン ジニアとして、要件定義から設計・開発・ QAまで幅広く担当。 •経歴 @ucchiii43 麻雀🀄/日本酒🍶 / 釣り🎣 /体を動かすこと全般 ⚽ 🎾 🏂 •趣味 2
「マイベスト」というサービスをご存知ですか 👀 3
「◯◯ おすすめ」と検索して 4
このページを開いて 5
スクロールして 6
こんな表みたことありませんか? 7
月間利用者数 3,000 ユーザーの “選択”を サポートするサービス 万人以 上 (2024年11月時点)
9 マイベスト独⾃のスコア「おすすめスコア」で⽐較
商品を⾃社で購⼊‧検証しスコアづけしてランキングを作成
テスト環境も⾃社で整備 自社内に倉庫やラボ、撮影スタジオがあり、商品テスト環境を完備したオフィスになっています。検証機器は高価なものだと 1つあたり購入価格で約 1,000万円する など、商品のデータの精度を高めるべく、積極的に設備投資を行っています。
各商材の「〇〇 おすすめ」検索の 3位以内割合 約 86% 月間利用回数 約 5,000万回以上 3位以内 4位以降
2016/2 2017/2 2018/2 2019/2 2020/2 2021/2 2022/2 「検索」の領域では大きなプレゼンスを獲得 既存の選択におけるプラットフォームである「検索」において、月間利用回数 5,000万回以上のサービスにまで成長。 2023/06実績 12
01 マイベスト ✖ パーソナライズ
2017 2018 2019 2020 2021 2022 2023 20XX 提供できる選択体験のよさ PMFに向けた取り組み
フェーズを 3つにわけて、 PMFに向けて取り組む。 これまでは、選択肢のデータベース作りに最も注力してきました。 現在は、ユーザーデータの収集を目的とした施策に注力しており、最終的には選択肢のデータと ユーザーデータを掛け合わせ、パーソナライズされた選択体験を実現したいと考えています。 Phase 1 選択肢のデータベース作り Phase 3 パーソナライズされた選 択体験 …… Phase 2 ユーザーデータの収集 2024 2025 14
パーソナライズ を実現するためにマイ ベストが行っていたこと 15
モバイルアプリをリリース 🎉 2023年3月にiOSモバイルアプリをリリース。 マイベストの膨大な商品データベースを活かしつつ、Webでは提供できなかったパーソナライズ体験をたちあげていく。 会員登録をおこなったユーザーのみが利用可能。
Home画面に様々なレコメンドを掲出 • 特におすすめの記事をピックアップして掲出 • Home画面の中でも特に見られている人気 セクション • 季節に合わせた記事をピックアップして掲出 • トレンドに沿った今すぐ使える商品が見つかる
17
これはあくまで「私たちからのおすすめ」であり、ユー ザーに関わらず一律であるためパーソナライズとはい えない 18
• マイベストを使う → 自分以外の意見も参考にしたい • Amazonの「購入履歴からのおすすめ」や Netflixの「閲覧履歴からのお すすめ」など、何かを選択するサービスにはパーソナライズされたレコメ ンドが当たり前のようにあるのに、その「選択」をサポートする立場のマ イベストにはなかった
19 マイベストは「選択」をサポートするサービス
ならつくろう 18
02 Projectの内容とアプローチ
あなたの閲覧履歴からのおすすめ (アプリ会員専用) 22
Item2Vec 23 引用: https://arxiv.org/abs/1603.04259
24 PoCプロジェクトにおける考慮点 • 短期間で検証できる ◦ 実装が簡潔かつ容易 ◦ 定量的・定性的に検証しやすい • モデルが軽量
◦ 学習に必要な計算リソースの削減とそれに伴うコスト削減 ◦ 学習時間の短縮により「学習 → 検証 → 改善」のスピードアップ
25 PoCプロジェクトにおける考慮点 • 十分枯れた技術であること https://note.com/globis_engineers/n/ne68505eb222e https://engineering.mercari.com/blog/entry/20221004-attempt-t o-improve-item-recommendation-accuracy-using-item2vec/
26 Item2Vecのメリット /デメリット • メリット ✅ モデルが軽量である ✅ 定性評価がしやすい ✅
3つのカラム(user_id, item_id, datetime)のみで学習できる • デメリット ❌ 性別や年齢などの属性情報を使えない ❌ 順序や時系列情報を考慮できない(直近の履歴を重要視できない) ❌ データ量が少ないと正しいベクトルを生成できない
ユーザーデータはめちゃくちゃあるので なんとかなる 27
03 マイベスト ✖ Item2Vec
29 • epochs:50 • 学習データ数:約 1350万件 ◦ 1st-party Cookie で区別したユーザーごとの閲覧履歴
• 使用ライブラリ: gensim • 学習形式: Skip-gram マイベストにおける利用法(学習)
30 マイベストにおける利用法(学習) • 閲覧したコンテンツの記事 ID を入力とする • ユーザーごとの直近 2ヶ月間の閲覧履歴を日時でソートして 1つのデータとする
[“1231”, “41”, “5345”, “5241”, “12343”] [“141”, “6345”] [“5345”, “243”, “6342”, “5241”] [“243”, “1562”, “5241”]
31 マイベストにおける利用法(学習) • 取得したデータを配列にしてモデルに入力し、埋め込みベクトルを生成する [[“1231”, “41”, “5345”, “5241”, “12343”], [“141”,
“6345”], [“5345”, “243”, “6342”, “5241”], [“243”, “1562”, “5241”]] V 1231 V 5241 V 5345 V 41 V 1562 V 243 V 6342 V 12343 V 141 V 6345 モデル
32 マイベストにおける利用法(推論) 1. アプリでの会員の閲覧履歴(記事 ID)(MAX5件)を入力とする 2. 入力された各記事 IDに対応する埋め込みベクトルを取得する 3. 取得した埋め込みベクトルを平均化して、一つの合成ベクトルを生成する
4. 合成ベクトルと類似度の高い埋め込みベクトルを算出し、対応する記事 IDを出力とする a. 出力の数は指定できる(現在は 20件)
33 マイベストにおける利用法(推論) V 1231 V 5241 V 5345 V 41
V 1562 V 243 V 6342 V 12343 V 141 V 6345 [“5345”, “1562”, “6342”] この男性におすすめの記事を 3つ教えて
34 マイベストにおける利用法(推論) input: [“5345”, “1562”, “6342”] V XXX V 1231
V 5241 V 5345 V 41 V 1562 V 243 V 6342 V 12343 V 141 V 6345 ベクトル化 [V 5345 , V 1562 , V 6342 ] ベクトル合成 V XX X
35 マイベストにおける利用法(推論) V XXX と類似度の高いベクトルを算出 V 1231 V 5241 V
5345 V 41 V 1562 V 243 V 6342 V 12343 V 141 V 6345 V XX X [V 5241 , V 243 , V 1231 ] 対応記事ID output: [“5241” , “243” , “1231”]
モデルに関する詳細を知りたい方は原論文をご覧ください https://arxiv.org/abs/1603.04259 36
04 システム構築と結果
38 システムアーキテクチャ図(簡略版)
39 実際の出力を確認 ヘッドホン ワイヤレスヘッドホン 有線ヘッドホン マイクつきヘッドホン 有線無線両用ヘッドホン オーディオテクニカのヘッドホン ソニーのヘッドホン オーバーイヤーヘッドホン
1万円前後のヘッドホン 軽いヘッドホン ゼンハイザーのヘッドホン コスパ最強のワイヤレスヘッドホン BOSEヘッドホン 密閉型ヘッドホン 高級ヘッドホン Aさん (仮称) 直近の閲覧履歴 システムによるレコメンド内容
40 実際の出力を確認 ボディーシート 日焼け止めスプレー・日焼け止めミスト 日焼け止めクリーム 日焼け止めジェル ホームルーター(置くだけ Wi-fi) クリームチーク ミネラルファンデーション
シェーディング 女性向け制汗剤 水クレンジング シミを隠すコンシーラー カフェインレスコーヒー ペティナイフ クロスバイク メンズ雨傘 Lさん (仮称) の直近の閲覧履 歴 システムによるレコメンド内容 、男性
社内で定性評価を実施 41 • ユーザーごとの直近の 5記事を入力 • モデルによりレコメンドされた 10記事を出力 • 34名の社員が
3段階で評価(閲覧履歴に沿っている・イマイチ・ダメ) 約72%が「閲覧履歴に基づいている」と回答
定性評価でいただいたコメント(抜粋) 42 • 履歴に格安SIMがあった場合、格安SIM関連の記事ばかりがおすすめされる • 睡眠の質向上のために枕の記事を見ていたので、ただの枕の記事よりは肩こりがひどい人用 の枕の記事などをおすすめしてもらった方がパーソナライズ感が出る • 女性なので男性向けの記事を勧められても ...
A/Bテストしてみました 43 • AppのHome画面でA/Bテストを実施しました • 対戦相手は、「今週のピックアップ」 ◦ Home画面の中でも特に利用されているセクション ◦ マイベストがおすすめするコンテンツを手動で抽出し掲載
• 該当箇所からコンテンツを開き、 ECへの遷移リンクを踏ん だ割合を調査
A/Bテストしてみました 44 • 「今週のピックアップ」に対して有意差はなし • Home画面においても売り上げを見込める
無事Home画面で全展開されました! 🎉 45
Home画面が大規模 A/Bテスト中なので ラッキーな人しか見れません 😢 46
04 おわりに
記事IDのみを用いたレコメンドでも、 手動(今週のピックアップ)と遜色ない精度、および 売り上げ効果を実現できた 48
Item2Vecを使って見えてきた課題 49 • 新たな発見が少ない ◦ 洗濯機を買いたい人に洗濯機の記事ばかりをおすすめするのはイマイチ ◦ ドライヤー → ヘアオイルのような関連商品への誘導があるとさらなる購買につな
がる • 文脈に沿ったレコメンドが欲しい ◦ [ ベッド → 洗濯機 ] というログがあったら、引っ越しかも?と考えて家電や 日用品(調理器具など)をおすすめして欲しい ◦ そのような文脈の学習データがないと関連付けづらいが、現状あまりない
今回のプロジェクトに携わってみた感想 50 • Item2Vecの実装は比較的簡単だった ◦ PyTorchで一からモデルを作っていた学生時代と比べるととても簡単に実装できた ◦ 大量のデータを CPUだけで時間をかけずに学習できるものすごい •
サービスにおけるシステム開発において考慮すべきことを知れた ◦ 「コスト」や「実装の容易さ」・「検証のしやすさ」など、サービス上での システム開発の考慮点を知れた ◦ また、これらを考慮した上での技術選定の大変さやおもしろさを学べた
今後の展望 51 • マイベストがもつユーザーの情報を反映したい ◦ 性別 ◦ 年齢 • two-towerモデルをはじめとする深層学習モデルを使ってみたい