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
CTRオンライン予測システムのアーキテクチャ
Search
Yoshitomo Hayashi
September 27, 2017
Technology
2
4.4k
CTRオンライン予測システムのアーキテクチャ
「Ameba広告システムの裏側見せます - オレシカナイトvol3」発表資料です。
https://cyberagent.connpass.com/event/64176/
Yoshitomo Hayashi
September 27, 2017
Tweet
Share
More Decks by Yoshitomo Hayashi
See All by Yoshitomo Hayashi
Ameba DSPのOpen-Auctionにおける入札戦略
yyhayashi303
2
2.9k
進化する配信ロジックとDSP戦略
yyhayashi303
1
170
モブプロ導入で見えてきた効果@オレシカナイト
yyhayashi303
1
1.1k
CircuitBreakerの適用
yyhayashi303
0
1.7k
Other Decks in Technology
See All in Technology
ピープルウエア x スタートアップ
operando
3
3.8k
LINE公式アカウントの技術スタックと開発の裏側
lycorptech_jp
PRO
0
230
戦えるAIエージェントの作り方
iwiwi
24
12k
技術の総合格闘技!?AIインフラの現在と未来。
ebiken
PRO
0
190
激動の2025年、Modern Data Stackの最新技術動向
sagara
0
1.1k
メタプログラミングRuby問題集の活用
willnet
1
410
龍昌餃子で理解するWebサーバーの並行処理モデル - 東葛.dev #9
kozy4324
1
140
從裝潢設計圖到 Home Assistant:打造智慧家庭的實戰與踩坑筆記
kewang
0
140
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
120
Playwrightで始めるUI自動テスト入門
devops_vtj
0
240
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
30
20k
어떤 개발자가 되고 싶은가?
arawn
1
480
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
We Have a Design System, Now What?
morganepeng
54
7.9k
Documentation Writing (for coders)
carmenintech
76
5.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
For a Future-Friendly Web
brad_frost
180
10k
GitHub's CSS Performance
jonrohan
1032
470k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Transcript
CTRΦϯϥΠϯ༧ଌ γεςϜͷΞʔΩςΫνϟ ΦϨγΧφΠτvol.3 גࣜձࣾαΠόʔΤʔδΣϯτ ྛ ۍ๎
ࣗݾհ ྛɹۍ๎ʢ͠Α͠ͱʣ αʔόʔαΠυΤϯδχΞ 2011 αΠόʔΤʔδΣϯτೖࣾ ೖࣾޙ͍͔ͭ͘ͷwebαʔϏε୲ 2015͔ΒMDHͰ৴ϩδοΫͷվળ
ࣗݾհ झຯ ίʔώʔ ՈͰυϦοϓͨ͠Γ ίʔϧυϒϦϡʔ࡞ͬͨΓ Netflix Ξχϝ ΥʔΩϯάɾσου
CTRΦϯϥΠϯ༧ଌ γεςϜͷΞʔΩςΫνϟ
CTRͱʁ
CTRͱ? CTRʢΫϦοΫʣ CTR = Click / Impression
ͳͥ༧ଌ͕ඞཁͳͷ͔ʁ
ࠂͷऩӹ ΫϦοΫ՝ۚ ࠂ1ΫϦοΫ͋ͨΓʓʓԁʢCPCʣ
ࠂͷऩӹ ΫϦοΫ՝ۚ ࠂ1ΫϦοΫ͋ͨΓʓʓԁʢCPCʣ ΑΓΫϦοΫ͞ΕΔ CPC͕ߴ͍ࠂΛ৴͍ͨ͠
ࠂΛϥϯΩϯά CTR × CPCʹΑΔϥϯΩϯά CTRόϯσΟοτΞϧΰϦζϜͰࢉग़ ࣮ͷimp, clickΛ༻ ࣮ͷूܭ [ࠂ ×
Ϣʔβʔଐੑ × ࠂ] ຖʹimp, clickΛܭଌ
͜Ε·ͰͷϥϯΩϯάͷ՝ ࣮͕গͳ͍߹ʹ͏·͘࠷దԽ͞Εͳ͍ Ϣʔβʔຖʹ࠷దͳࠂΛ৴ग़དྷ͍ͯͳ͍
ػցֶशʹΑΔCTR༧ଌ ଟ͘ͷૉੑΛՃՄೳ ࣮͕গͳͯ͋͘Δఔ༧ଌՄೳ ύʔιφϥΠζ͞ΕͨϥϯΩϯά
։ൃମ੍ ॳظ γεςϜΤϯδχΞ2ਓ σʔλαΠΤϯςΟετ1ਓʢळ༿ݪϥϘʣ ݱࡏ γεςϜΤϯδχΞ2ʙ3ਓ σʔλαΠΤϯςΟετ2ਓʢळ༿ݪϥϘ1ਓʣ
ΞʔΩςΫνϟ
ΞʔΩςΫνϟ ֶशσʔλ JoinࡁΈͷ ϩά ϩά ϩά ػցֶश ϝτϦΫε Ϟσϧ ϑΝΠϧ
Ϟσϧ ϑΝΠϧ Stream Aggregator Data Joiner Learner Predictor ModelStore
Data-Joiner
Data-Joinerͷׂ ࠂ͕click͞Ε͔ͨͲ͏͔Λఆ͢Δ imp౸ୡޙɺҰఆظؒclickͷ౸ୡΛͭ impͱclickͷσʔλͷࠩҟΛແ͘͢ refererͷʹࠩҟ͕͋ͬͨ
Apache IgniteΛ༻࣮ͨ͠ Event Notifications imp click Stream Data Joiner Aggregator
Apache IgniteΛ༻࣮ͨ͠ Event Notifications put-event impͷ߹ TTLΛ5ʹઃఆ͠อଘ imp click Stream
Data Joiner Aggregator
Apache IgniteΛ༻࣮ͨ͠ Event Notifications put-event impͷ߹ TTLΛ5ʹઃఆ͠อଘ put-event clickͷ߹ରԠ͢Δ impΛݕࡧ͠click͞Εͨ
impͱͯ͠Aggregatorʹૹ৴ imp click Stream Data Joiner Aggregator
Apache IgniteΛ༻࣮ͨ͠ Event Notifications put-event impͷ߹ TTLΛ5ʹઃఆ͠อଘ put-event clickͷ߹ରԠ͢Δ impΛݕࡧ͠click͞Εͨ
impͱͯ͠Aggregatorʹૹ৴ expired-event 5ܦͬͯclick͕དྷͳ͍ ߹click͞Εͳ͔ͬͨimpͱ ͯ͠Aggregatorʹૹ৴ imp click Stream Data Joiner Aggregator
Aggregator
Aggregatorͷׂ ֶशʹඞཁͳσʔλΛऩू ϩά͔Βऔಘग़དྷΔͷ ϩά͔ΒऔಘͰ͖ͳ͍ͷ ऩूͨ͠σʔλΛLearnerʹૹΔ σʔλαϯϓϦϯά͠100݅ͣͭ
ϩά͔ΒऔಘՄೳͳσʔλ Ϣʔβʔͷใ UA, IPΞυϨε, referer, ϦλήϢʔβʔ͔ etc. ࠂͷใ ۀछID, ࠂओID,
ΫϦΤΠςΟϒID etc. ໘ͷใ ࠂID, ϝσΟΞID etc.
ϩά͔ΒऔಘෆՄೳͳσʔλ Ϣʔβʔͷใ σϞάϥʢੑผɾྸʣ ಠࣗʹ࡞ͨ͠ૉੑ ߦಈཤྺΛϕʔεʹͨ͠ϢʔβʔΫϥελ ࠂςΩετΫϥελ
Learner
Learnerͷׂ Aggregator͔Βड͚औͬͨσʔλΛ༻͠ϞσϧΛߏங͢Δ ϞσϧΛߏங͢ΔίΞ෦C++ʢσʔλαΠΤϯςΟ ετ୲ʣ 15ִؒͰϞσϧΛߋ৽ ϞσϧϑΝΠϧͰϞσϧετΞʢS3ʣʹอଘ ػցֶशϝτϦΫεʢauroc, logloss etc.ʣΛDBʹอଘ
Learner͕ੜ͢Δ ϞσϧϑΝΠϧ ֶश༻ϚελϑΝΠϧʢ12ִ࣌ؒؒͰߋ৽ʣ Learner͜ͷϑΝΠϧΛ༻ֶͯ͠श͢Δ ༧ଌ༻ϚελϑΝΠϧʢ12ִ࣌ؒؒͰߋ৽ʣ Predictor͕CTRΛ༧ଌ͢Δࡍʹ༻͢Δ ༧ଌ༻ύονϑΝΠϧ ༧ଌ༻ϚελϑΝΠϧ͔ΒͷࠩϑΝΠϧ ͜ͷϑΝΠϧ͕LearnerʹΑͬͯ15ִؒͰߋ৽͞ΕΔ
Predictor
Predictor ༧ଌʹඞཁͳσʔλΛड͚औΓ༧ଌCTRΛฦ͢API 15ִؒͰϞσϧετΞ͔Β࠷৽ͷϞσϧϑΝΠ ϧΛऔಘ͠ߋ৽͢Δ
༧ଌ͕։࢝ग़དྷΔ·Ͱ ىಈ࣌ʹϚελϑΝΠϧΛಡΈࠐΉ ϚελϑΝΠϧಡΈࠐΈޙ͔Β༧ଌՄೳ ϚελϑΝΠϧͷ࠷ऴߋ৽͔࣌Βͷࠩύον ϑΝΠϧΛద༻͍ͯ͘͠ʢ࠷େͰ47ϑΝΠϧʣ 1ύονϑΝΠϧ5ʙ6ඵͰద༻ՄೳͳͷͰɺ5 ҎͰྃ
CTR༧ଌγεςϜಋೖޙ
CPMൺֱ ϥϯμϜ ࣮CTR ༧ଌCTR ࣮CTRରൺ7ˋվળ ϥϯμϜରൺ50ˋվળ
CTRൺֱ ࣮CTRରൺ6ˋվળ ϥϯμϜରൺ8ˋվળ ϥϯμϜ ࣮CTR ༧ଌCTR
͓·͚
Real-Time Optimizer ʢROʣ
Real- Time OptimizerʢROʣ 20176݄ϦϦʔε ඪCPAʹ߹ΘͤͯCPCΛࣗಈௐ͢Δ
CPCͷࢉग़ํ๏ CPC = ඪCPA × CVR ඪCPA 1CVಘΔͷʹࢧͬͯྑ͍අ༻ ࠂओ͕ܾఆ CVRʢίϯόʔδϣϯʣ
CV / Click
͜Ε·ͰͷCVRࢉग़ํ๏ աڈ࣮ΛݩʹώϡʔϦεςΟοΫͳCVRࢉग़ ࠂ × ΞΧϯτຖʹCVRΛࢉग़ ϦλήϢʔβʔͷ߹ิਖ਼Ϩʔτ
ݱঢ়ͷ՝ CV͕ग़ʹ͍͘Ҋ݅ͷ߹ʹCVRͷਫ਼͕ѱ͍ ৽نΞΧϯτͷ߹࣮͕ແ͍ ۀछશମͷ࣮Λࢀর ৽نࠂͷ߹ʹ࣮͕ͳ͍ ࠂάϧʔϓͷ࣮Λࢀর
CTR༧ଌγεςϜͷࢿ࢈Λ ׆༻ͨ͠CVR༧ଌγεςϜ
CVR༧ଌγεςϜ Ϟσϧͷߏங࣍όονʢBatch-Learnerʣ Clickൃੜ͔ΒCVൃੜ·Ͱͷ͕͍࣌ؒͷͰϦΞ ϧλΠϜͰֶश͠ͳ͍ LearnerͷίΞ෦ɺੜ͞ΕΔϞσϧϑΝΠ ϧɺPredictorͦͷ··༻
ΞʔΩςΫνϟ Predictor ModelStore Batch-Learner ϞσϧϑΝΠϧ ϞσϧϑΝΠϧ ػցֶश ϝτϦΫε ֶशσʔλ
CVR༧ଌͷঢ়گ ༧ଌCVR ࣮CVR ࣮CVRରൺ3ˋվળ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠