Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RTBにおける機械学習システムの実装と運用
Search
Narita, Atsuhiro
March 22, 2017
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RTBにおける機械学習システムの実装と運用
アドテクスタジオ×Scala 勉強会 で発表した内容です
https://adtechstudio.connpass.com/event/50607/
Narita, Atsuhiro
March 22, 2017
Other Decks in Programming
See All in Programming
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.5k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
sbt 2.0: takeoff
eed3si9n
0
160
Jetpack Compose Mechanisms
skydoves
3
820
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
JIS keyboard support in Omarchy
lef237
0
130
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
800
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
680
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.3k
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
350
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Become a Pro
speakerdeck
PRO
31
6.3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Statistics for Hackers
jakevdp
799
230k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
エンジニアに許された特別な時間の終わり
watany
109
250k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Un-Boring Meetings
codingconduct
0
460
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
Transcript
RTBʹ͓͚Δ ػցֶशγεςϜͷ࣮ͱӡ༻ ɹ ΞυςΫελδΦ smalgo ాರത 1
ࣗݾհ ాರത • ΞυςΫελδΦ/smalgo ΤϯδχΞ • ೖࣾ1ऑ • DSPΛ࡞͍ͬͯ·͢ •
ओʹ৴ϩδοΫ։ൃʹؔΘ͍ͬͯ·͢ • ීஈscala ͨ·ʹpython • scalaྺ2͘Β͍ • ৴ΞϧΰϦζϜʹؔ͢ΔڞಉݚڀͳͲ 2
֓ཁ • RTBʹ͍ͭͯ • ػցֶशΛಈ͔ͨ͢Ίͷ • ࣮ͷ͜ͱ • ӡ༻ςετͷ͜ͱ ฐνʔϜ(smalgo)ͰͷࣄྫΛհ͠·͢ɻ
3
RTB: Real Time Bidding 4
5
RTB: Real Time Bidding • ୭͕Ͳ͜ʹͲΜͳࠂΛදࣔ͢Δ͔ܾΊΔͨΊͷऔҾࢢ • ଟͷSSPDSP͕ΓͱΓ • ࠂ͕දࣔ͞ΕΕΔͨͼʹຖճΦʔΫγϣϯΛߦ͏
6
7
• ଟͷSSPΞυωοτϫʔΫͱଓ • ଓઌ͕ओ࠵͢ΔΦʔΫγϣϯʹೖࡳ͢Δ • ͲΜͳਓͲΜͳʹ͏·͘ࠂΛݟͤΒΕΔ͔? 8
༧ଌϞσϧͷ࣮ͷ͜ͱ 9
DSPʹඞཁͳ͜ͱͷྫ 1. ͚ෛͬͨΩϟϯϖʔϯͷཧ 2. λʔήςΟϯάͷఆ 3. ༧ࢉͷཧ 4. ೖࡳֹͷܾఆ •
ͦͷΠϯϓϨογϣϯΛ͍͘ΒͰങ͏͔ݡ͘ߟ͑ͯೖࡳ͢Δ • ऩӹʹ݁͢Δ෦ 10
ೖࡳֹͷܾఆ ೖࡳֹΛܾΊΔͨΊʹɺ1ΠϯϓϨογϣϯͷՁΛͦͷͳ Δ͘ਖ਼֬ʹܭࢉ͢Δඞཁ͕͋Δɻ ɹˢ͜͜ʹػցֶशΛ͏ • యܕతʹ Click Through Rate(CTR) ༧ଌϞσϧͳͲ
• クリック単価 Ͱೖࡳ • ଞʹɺಈըͷࢹௌ։࢝ͷ༧ଌͳͲͳͲ 11
͕ॏཁ ී௨ͷwebαʔϏεͱൺֱͯ͠ʹର͢Δཁ͕݅ݫ͍͠ • εϧʔϓοτ • bidϦΫΤετ͕10ສճ/ඵ͙Β͍དྷΔɻ ͦͷ͏ͪ1ສ͘Β͍ʹೖࡳ͢Δ • ϨΠςϯγ •
webϖʔδͷϩʔυͷؒʹશ͕ͯऴΘͬͯ͠·͏ɻ ͲΜͳʹ͘ͱ50ms͙Β͍ͰϨεϙϯεΛฦ͢ඞཁ͕͋Δɻ 12
༧ଌʹͬͯΔม • ࣌ࠁ • ΩϟϯϖʔϯͷID • ࠂͷදࣔҐஔ,αΠζ,υϝΠϯ • ios͔ android͔
PC͔ • etc.. etc.. 13
GBDT Gradient Boosted Decision Tree • ओʹ͍ͬͯΔ༧ଌϞσϧ • ೋܾఆΛ͍ͭ͘ฒɺग़ྗͷ ʹΑͬͯ༧ଌ͢Δ
• IFΛͨ͘͞ΜḷΔ͚ͩͰࡁΈ ༧ଌ͕ͦΕͳΓʹߴͰ࣮͢͠ ͍ 14
GBDTͷخ͍͠ ΧςΰϦΧϧͳม(໊ٛई)ʹڧ͍ɻ • ͨͱ͑ IPΞυϨε ɾ υϝΠϯ ͷΑ͏ͳจࣈྻ • ػցֶशͷଟ͘ͷϞσϧͰɺ͜͏͍͏มΛແཧΓ࿈ଓ
ͳϕΫτϧʹΤϯίʔυ͢Δඞཁ͕͋Δ (cf. word2vec) • ܾఆೖྗ͕ϕΫτϧͰͳͯ͘Α͍͍͘͢ɻ 15
σʔλੳͷڥ֎෦ʹ͋Δ • ࠂ৴αʔόʔ΄΅scala(ͱjava)Ͱಈ͍͍ͯΔɻ • ҰํͰɺσʔλੳͷଟ͘pythonͷڥͰߦΘΕΔ • jupyter notebook, pandas, etc..
• ༧ଌϞσϧͷ࡞͜ΕΒͷπʔϧΛ͍ͬͯΔɻ • ੈքscalajavaͰด͍ͯ͡ͳ͍ 16
ֶशثͱ༧ଌثΛผʑʹ༻ҙ͢Δ • ৴ϩά͔Β֤छ༧ଌϞσϧΛఆظతʹֶश͢Δ • ༧ଌϞσϧΛJSONʹΤϯίʔυ͠ೖࡳαʔόʔʹड͚͢ • ೖࡳαʔόʔଆʹऔΓࠐΈɺ༧ଌϞσϧΛscalaͰ࠶ߏங 17
GBDTΛjsonʹΤϯίʔυ ܾఆΛදݱ͢Δ sealed trait BinaryDecisionTree { def findLeaf(features: Array[Feature]): LeafNode
} case class LeafNode(value: Double) extends BinaryDecisionTree { def findLeaf(features: Array[Feature]): LeafNode = this } case class BranchNode( condition: Feature, yes: BinaryDecisionTree, no: BinaryDecisionTree ) extends BinaryDecisionTree { ... } 18
GBDTΛjsonʹΤϯίʔυ ܾఆͷྻͱͯ͠argonautΛͬͯJSONԽ [{ //ࢬϊʔυذͷ݅ͱ2ݸͷࢠϊʔυΛදݱ "condition": {"name":"size","value":"320x50"}, "yes": 1.0, //༿ϊʔυ͚ͩΛॻ͘ "no"
{ // ࢬϊʔυΛ࠶ؼతʹΤϯίʔυ͢Δ "condition": {...}, "yes": ..., "no": ... } },...] 19
શମͷྲྀΕ 20
༧ଌϞσϧͷӡ༻ɾςετͷ͜ͱ 21
ޭࡑ ༧ଌͱֶशΛผʑͷ࣮ʹͨ͠ͷͰ… • [pros] ֶशଆͷ࣮ʹґଘ͠ͳ͍ • JSON͑͞ు͚ͲΜͳֶशΛಈ͔ͯ͠ྑ͍ɻ • [cons] I/OΛ࣮͢ΔखؒͱόάͷϦεΫ͕૿͑Δ
• ֶशଆͱ༧ଌଆͰ࣮͕ҧͬͯ͠·͏͕ɺಉ͡ϞσϧΛಈ͔͢ඞཁ • ͖ͪΜͱ֬ೝ͕͍Δʢ͜͜ͷޙ΄Ͳʣ 22
ػցֶशͷӡ༻ɾςετʹ͍ͭͯ ༧ଌϞσϧ͕ਖ਼͘͠ޮՌΑ͘ಈ͘͜ͱΛ୲อ͠ͳ͍ͱ͍͚ͳ͍ • ༧ଌϞσϧͷޮՌͷྑ͠ѱ͕͠ޙ͔Β͔Δඞཁ͕͋Δ • Ұֶशͨ͠༧ଌϞσϧɺ͕࣌ؒͨͭ΄Ͳਫ਼͕མͪଓ͚ Δ →ఆظతʹֶशͯͦ͠ͷνΣοΫ͕ඞཁ • ෆ۩߹͕͋ͬͯҰݟͦΕΒ͍͕͠ग़ྗ͞Εͯ͠·͏
23
A/BςετͷΈ ༧ଌϞσϧͷྑ͠ѱ͠Λ A/B ςετ͢ΔΈʢଟ)ඞਢ • ෳͷ༧ଌϞσϧΛϩʔυ • ೖࡳ࣌ʹϥϯμϜͰ༧ଌϞσϧΛબ • ͲΕΛબ͔ͨ͠ɺIDΛϩάʹམͱ͢
• ͋ͱͰूܭͰ͖ΔΑ͏ʹ͢Δ 24
ෆ۩߹͕ग़ͦ͏ͳॴ 1. ֶश࣌: ਫ਼͕Լ͍ͯ͠ͳ͍͔ 2. ֶशϞσϧͷऔΓࠐΈ࣌ • ֶशଆͱ༧ଌଆͰϞσϧϑΝΠϧͷղऍ͕ҧ͏͔͠Εͳ͍ 3. ༧ଌ࣌:
༧ଌثʹೖྗΛਖ਼͘͠Ͱ͖Δ͔ 25
ෆ۩߹͕ग़ͦ͏ͳॴ 1. ֶश࣌: ਫ਼͕Լ͍ͯ͠ͳ͍͔ ← ֶश࣌ʹνΣοΫ 2. ֶशϞσϧͷऔΓࠐΈ࣌ ← औΓࠐΈ࣌ʹ߹ੑνΣοΫ
• ֶशଆͱ༧ଌଆͰϞσϧϑΝΠϧͷղऍ͕ҧ͏͔͠Εͳ͍ 3. ༧ଌ࣌: ༧ଌثʹೖྗΛਖ਼͘͠Ͱ͖Δ͔ (← ୯ମςετ) 26
1. ֶश࣌: ༧ଌਫ਼νΣοΫ • ֶशํ๏Λ༻ҙͯ͠ɺ͕࣌ؒܦͭʹͭΕڥ͕มΘΓੑೳ͕ Լ͢Δ͔͠Εͳ͍ɻ • ֶशσʔλͷҰ෦Λͬͯ༧ଌਫ਼ΛνΣοΫ͢Δ ຖͷֶशόονͰ༧ଌਫ਼Λ֬ೝͰ͖ΔΑ͏ʹͳ͍ͬͯΔ 27
2. ϞσϧऔΓࠐΈ࣌: ߹ੑνΣοΫ • ֶशثͱ༧ଌث͕ผ࣮ʹͳͬͯ͠·ͬͨɻ ༧ଌ͕શ͘ಉ͜͡ͱΛ֬ೝ͢Δ • Ϟσϧֶश࣌ʹςετέʔεΛࣗಈੜ͢Δ • ֶशσʔλͷҰ෦Λͬͯɺ
ೖྗϕΫτϧͷͱɺظ͞ΕΔ༧ଌΛฒͨcsvΛग़ྗ • ༧ଌϞσϧ̍ݸʹରͯ͠csv1ݸ 28
validation.csv ŘŸŖŢƄ hour, cpn_id, ad_size, domain, os, ..., expected 3,
123, 320x50, example.com, ios-7, ..., 0.0121 21, 100, 300x250, abc.com, android-4.4,..., 0.0093 12, 91, 300x250, example.com, android-4.3,..., 0.0013 ...(1000ߦ͘Β͍) • JSONΛೖࡳαʔόʔʹऔΓࠐΉࡍʹຖճνΣοΫ ࣦഊͨ͠ΒΞϥʔ τ • ೖࡳଆͰͷ༧ଌثͷ։ൃʹʹཱͬͨ • όϦσʔγϣϯ௨Δ·ͰscalaίʔυΛमਖ਼͢ΕΑ͍ 29
ͨͱֶ͑शϥΠϒϥϦͷΞοϓσʔτ࣌ • ಥવϞσϧऔΓࠐΈͷόϦσʔγϣϯ͕ࣦഊ͢ΔΑ͏ʹ • before: ༧ଌ • after: ༧ଌ •
ֶशͰ͏ύοέʔδ͕Կؾͳ͘ϚΠφʔΞοϓσʔτ͞Ε͍ͯͨ όϦσʔγϣϯʹΑͬͯେࢂࣄ͕͛ͨɻ 30
·ͱΊ • ػցֶशʹΑΔ༧ଌϞσϧΛͲ͏ಈ͔͍ͯ͠Δ͔ smalgoͰͷࣄྫ • ֶशͱ༧ଌΛ࣮ͨ͠ • ਫ਼߹ੑͷςετ 31