Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RTBにおける機械学習システムの実装と運用

 RTBにおける機械学習システムの実装と運用

アドテクスタジオ×Scala 勉強会 で発表した内容です
https://adtechstudio.connpass.com/event/50607/

Avatar for Narita, Atsuhiro

Narita, Atsuhiro

March 22, 2017
Tweet

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ੒ాರത • ΞυςΫελδΦ/smalgo ΤϯδχΞ • ೖࣾ1೥൒ऑ • DSPΛ࡞͍ͬͯ·͢ •

    ओʹ഑৴ϩδοΫ։ൃʹؔΘ͍ͬͯ·͢ • ීஈ͸scala ͨ·ʹpython • scalaྺ͸2೥͘Β͍ • ഑৴ΞϧΰϦζϜʹؔ͢ΔڞಉݚڀͳͲ΋ 2
  2. 5

  3. 7

  4. DSPʹඞཁͳ͜ͱͷྫ 1. ੥͚ෛͬͨΩϟϯϖʔϯͷ؅ཧ 2. λʔήςΟϯάͷ൑ఆ 3. ༧ࢉͷ؅ཧ 4. ೖࡳֹͷܾఆ •

    ͦͷΠϯϓϨογϣϯΛ͍͘ΒͰങ͏͔ݡ͘ߟ͑ͯೖࡳ͢Δ • ऩӹʹ௚݁͢Δ෦෼ 10
  5. GBDTͷخ͍͠఺ ΧςΰϦΧϧͳม਺(໊ٛई౓)ʹڧ͍ɻ • ͨͱ͑͹ IPΞυϨε ɾ υϝΠϯ ͷΑ͏ͳจࣈྻ • ػցֶशͷଟ͘ͷϞσϧͰ͸ɺ͜͏͍͏ม਺Λແཧ΍Γ࿈ଓ

    ͳϕΫτϧ஋ʹΤϯίʔυ͢Δඞཁ͕͋Δ (cf. word2vec) • ܾఆ໦͸ೖྗ͕ϕΫτϧ஋Ͱͳͯ͘΋Α͘࢖͍΍͍͢ɻ 15
  6. 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
  7. ෆ۩߹͕ग़ͦ͏ͳ৔ॴ 1. ֶश࣌: ਫ਼౓͕௿Լ͍ͯ͠ͳ͍͔ ← ֶश࣌ʹνΣοΫ 2. ֶशϞσϧͷऔΓࠐΈ࣌ ← औΓࠐΈ࣌ʹ੔߹ੑνΣοΫ

    • ֶशଆͱ༧ଌଆͰϞσϧϑΝΠϧͷղऍ͕ҧ͏͔΋͠Εͳ͍ 3. ༧ଌ࣌: ༧ଌثʹೖྗΛਖ਼͘͠Ͱ͖Δ͔ (← ୯ମςετ) 26
  8. 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
  9. ͨͱ͑͹ֶशϥΠϒϥϦͷΞοϓσʔτ࣌ • ಥવϞσϧऔΓࠐΈͷόϦσʔγϣϯ͕ࣦഊ͢ΔΑ͏ʹ • before: ༧ଌ஋ • after: ༧ଌ஋ •

    ֶशͰ࢖͏ύοέʔδ͕Կؾͳ͘ϚΠφʔΞοϓσʔτ͞Ε͍ͯͨ όϦσʔγϣϯʹΑͬͯେࢂࣄ͕๷͛ͨɻ 30