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

GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4

GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4

Gradient boosting decision trees (GBDT) を使ってクリック率を予測する場合に使えそうな高速化方法についてお話しました。

KOMIYA Atsushi

November 22, 2017
Tweet

More Decks by KOMIYA Atsushi

Other Decks in Programming

Transcript

  1. GBDT ʹΑΔ޿ࠂΫϦοΫ཰༧ଌ • Practical Lessons from Predicting Clicks on Ads

    at Facebook • https://research.fb.com/publications/practical- lessons-from-predicting-clicks-on-ads-at-facebook/ • Using boosted trees for click-through rate prediction for sponsored search (Yandex) • http://wan.poly.edu/KDD2012/forms/workshop/ ADKDD12/doc/a3.pdf
  2. ޿ࠂΫϦοΫ཰༧ଌͷ࣮ࡍ Ϣʔβ" ộ ޿ࠂ ޿ࠂ ޿ࠂ ޿ࠂO ʴ Ϣʔβͷಛ௃ྔ ޿ࠂ͝ͱͷಛ௃ྔ

    ༧ଌϞσϧ     ộ ޿ࠂ͝ͱʹ ༧ଌ ผʑʹଘࡏ͢ΔϢʔβͷಛ௃ྔͱ ޿ࠂͷಛ௃ྔΛΦϯϥΠϯͰ݁߹ KPJO ͯ͠ಛ௃ϕΫτϧΛ࡞Δ
  3. ޿ࠂΫϦοΫ཰༧ଌͷ࣮ࡍ Ϣʔβ" ộ ޿ࠂ ޿ࠂ ޿ࠂ ޿ࠂO ʴ Ϣʔβͷಛ௃ྔ ޿ࠂ͝ͱͷಛ௃ྔ

    ༧ଌϞσϧ     ộ ޿ࠂ͝ͱʹ ༧ଌ ݁߹ͨ͠ಛ௃ϕΫτϧΛ ༧ଌϞσϧʹ༩͑ͯ݁ՌΛಘΔ
  4. ϕʔεϥΠϯɿφΠʔϒͳ໦ߏ଄ Y<>   Y<>   Y<> ɾಛ௃ϕΫτϧ্ͷΠϯσΫε ɾ෼ׂ৚݅ͷ஋

    ɾ಺෦ϊʔυPS༿ϊʔυʁ ɾࠨͷࢠϊʔυ΁ͷࢀর ɾӈͷࢠϊʔυ΁ͷࢀর
  5. ໦ߏ଄Λϑϥοτͳ഑ྻͰදݱ Y<>   Y<>   Y<>  

                ಛ௃ϕΫτϧͷΠϯσΫε ෼ׂ৚݅ͷ஋༿ϊʔυͷ஋
  6. ໦ߏ଄Λϑϥοτͳ഑ྻͰදݱ • ࢠϊʔυΛͨͲΔํ๏ • ਌ϊʔυͷ഑ྻ্ͷΠϯσΫεΛ i ͱͨ͠ͱ͖ɺࠨͷࢠ ϊʔυ͸ 2 *

    (i + 1) - 1ɺӈͷࢠϊʔυ͸ 2 * (i + 1) Ͱࢀ রͰ͖Δ • φΠʔϒͳ໦ߏ଄ΑΓ͸ΩϟογϡϝϞϦతʹ༏͍ͩ͠Ζ ͏… • ͳ͓πϦʔ͸ৗʹ׬શೋ෼໦Ͱ͋Δͱ͸ݶΒͳ͍ • Ұ෦ͷαϒπϦʔ͕ࣃൈ͚ʹͳΓ͏Δ͜ͱΛ
 ߟྀ͢Δඞཁ͕͋Δ
  7. ωετͨ͠ if - else Ͱίʔυදݱ double predict_tree1(double[] x) { if

    (x[3] < 5) { if (x[8] < 2) return 9; else return 5; } else { if (x[7] < 3) return 4; else return 7; } }
  8. ωετͨ͠ if - else Ͱίʔυදݱ • ωΠςΟϒίʔυʹม׵Ͱ͖Δ / ͞ΕΔݴޠͳΒߴ଎ͳॲཧ͕ ظ଴Ͱ͖Δ

    • Java ͷ৔߹ͷ͓࿩ • ASM ͳͲΛ࢖ͬͯ GBDT ͷ༧ଌϞσϧΛόΠτίʔυʹ
 ม׵ & ಈతΫϥεϩʔυ → JIT ίϯύΠϧ͕ظ଴Ͱ͖Δ • ҰํͰɺπϦʔͷਂ࣍͞ୈͰ͸ϝιουͷόΠτίʔυαΠ ζ͕େ͖͗ͯ͢ΠϯϥΠϯల։Λ્֐ͯ͠͠·͏͜ͱ΋…
  9. ಛ௃ϕΫτϧʹٻΊΒΕΔಛੑ • GBDT Ͱ͸ɺಛ௃ϕΫτϧͷ֤ཁૉͷࢀর͸ϥϯμϜ ΞΫηεʹͳΔ • ϩδεςΟοΫճؼ΍ factorization machines ͱ͸

    େ͖͘ҟͳΔ • ΩϟογϡϝϞϦతʹͳ͔ͳ͔͓ਏ͍ײ͡ • ಛ௃ྔΛอ࣋͢Δۭؒޮ཰ͱࢀর࣌ͷॲཧ଎౓ͱͷτ ϨʔυΦϑʹͳΔ
  10. ༧ଌͷॲཧखॱʹӨڹ͢Δ޻෉ • ޿ࠂΫϦοΫ཰ͷ༧ଌ͸ 1 Ϣʔβ 1 ޿ࠂ͚ͩͰࡁΉ Α͏ͳ΋ͷͰ͸ͳ͍ • ͢΂ͯͷ޿ࠂʹ͍ͭͯΫϦοΫ཰Λ༧ଌ͍ͨ͠

    • ͦΕͧΕͷ޿ࠂ͝ͱʹஞ࣍తʹ༧ଌͯ͠΋͍͍͕ɺ Ұׅͯ͠༧ଌ͢Δ͜ͱΛલఏͱͯ͠ޮ཰Խ͢Δํ๏ ΋ଘࡏ͢Δ • ͨͩ͠ɺ͔ͳΓखͷࠐΜ࣮ͩ૷ʹͳΓ͕ͪ
  11. ँࣙɾࢀߟจݙ • ࠓճ͝঺հͨ͠΋ͷͷଟ͘͸ɺಙӬ͞Μ (@tkng) ΑΓΞυόΠε͍͍ͨͩͨ΋ͷʹͳΓ·͢ • Evaluating boosted decision trees

    for billions of users • https://code.facebook.com/posts/ 975025089299409/evaluating-boosted- decision-trees-for-billions-of-users/