Slide 1

Slide 1 text

ϋϯυϝΠυϚʔέοτͰϨίϝϯσʔγϣϯ ࡾ୐༔հ(.01&1"#0JOD ୈࡾճ)JWFNBMM.FFUVQ NJOOFNFFUT)JWFNBMM

Slide 2

Slide 2 text

ϓϦϯγύϧΤϯδχΞ ࡾ୐༔հ!NPOPDISPNFHBOF NJOOFࣄۀ෦ IUUQCMPHNPOPDISPNFHBOFDPN

Slide 3

Slide 3 text

໨࣍ wϋϯυϝΠυϚʔέοτͱ͍͏αʔϏεͱɺͦͷಛ௃ wڠௐϑΟϧλϦϯάͱ͸ w.BUSJY'BDUPSJ[BUJPOʹΑΔϨίϝϯσʔγϣϯ wNJOOFͰͷར༻ࣄྫ

Slide 4

Slide 4 text

ϋϯυϝΠυϚʔέοτͱ͍͏ αʔϏεͱɺͦͷಛ௃

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

wݸਓ͕खܰʹϋϯυϝΠυ࡞඼ͷల ࣔ΍ചങ͕Ͱ͖Δɺࠃ಺࠷େͷϋϯ υϝΠυϚʔέοτ w࡞Ո਺ສਓಥഁ wΞΫηαϦʔ΍όοάɺࡒ෍ɺখ෺ ͳͲ NJOOF

Slide 7

Slide 7 text

NJOOF IUUQTNJOOFDPN

Slide 8

Slide 8 text

Ϟϊͮ͘ΓΛ͞ΕΔΈͳ͞·ͷ࡞඼ʹײಈͯ͠ɺ ͨ͘͞Μͷํʹ͍ͭͰ΋ݟͯ΋Β͑Δ৔ॴΛ࡞Γ͍ͨɺ ͦͯ͠ɺΈͳ͞·ͷϑΝϯΛ࡞Γ૿΍͓͢ख఻͍͕͍ͨ͠ l

Slide 9

Slide 9 text

ϋϯυϝΠυϚʔέοτͷಛ௃

Slide 10

Slide 10 text

ϋϯυϝΠυϚʔέοτͷಛ௃ ଟछଟ༷ͳ࡞Ո͞Μ͕ू͏ ˠ࡞඼਺͕ଟ͍ ࡞඼͸ϋϯυϝΠυ ˠࡏݿ਺͕গͳ͍ɺ͍ΘΏΔҰ఺΋ͷ΍ɺड஫ੜ࢈

Slide 11

Slide 11 text

࡞඼ͱͷग़ձ͍ ࡞඼਺͕ଟ͍ ˠݸผϢʔβʔʹର͢ΔਓྗͰͷਪન͸ࣄ্࣮ෆՄೳ ࡏݿ਺͕গͳ͍ ˠશମϢʔβʔʹର͢Δ࣮੷͔Βબఆͨ͠ਓؾ࡞඼ͷ༗ޮظ͕ؒ୹͍ ˠݸผͷϢʔβʔ޲͚ʹγεςϜ͕͓͢͢Ί࡞ՈΛબఆ͢Δ࢓૊Έ͕ඞཁ

Slide 12

Slide 12 text

͓͢͢Ί࡞Ոͷબఆ wNJOOFʮ͋ͳͨʹ͓͢͢Ίͷ࡞Ոʯ wϢʔβʔͷߦಈΛجʹ࡞ՈΛϨʔςΟϯά Activity Filter and shuffle Users fav, follow etc… Matrix Factorization Recommendation import DB

Slide 13

Slide 13 text

ڠௐϑΟϧλϦϯάͱ͸

Slide 14

Slide 14 text

ڠௐϑΟϧλϦϯά lଟ͘ͷϢʔβͷᅂ޷৘ใΛ஝ੵ͠ɺ͋ΔϢʔβ ͱᅂ޷ͷྨࣅͨ͠ଞͷϢʔβͷ৘ใΛ༻͍ͯࣗ ಈతʹਪ࿦Λߦ͏ํ๏࿦z 8JLJQFEJBIUUQTKBXJLJQFEJBPSHXJLJڠௐϑΟϧλϦϯά

Slide 15

Slide 15 text

ڠௐϑΟϧλϦϯά 8JLJQFEJBIUUQTFOXJLJQFEJBPSHXJLJ$PMMBCPSBUJWF@pMUFSJOH #Z.PTIBOJO0XOXPSL $$#:4" IUUQTDPNNPOTXJLJNFEJBPSHXJOEFYQIQ DVSJE

Slide 16

Slide 16 text

ڠௐϑΟϧλϦϯά  ᅂ޷ͷऩू  ϢʔβʔͱΞΠςϜʹΑΔධՁߦྻΛ࡞੒͢Δ  ࣅ͍ͯΔϢʔβʔΛ୳ͩ͢͠  ྫ͑͹ɺϢʔβʔؒͷධՁ఺਺ΛݩʹྨࣅੑείΞΛࢉग़͢Δ  ϢʔΫϦουڑ཭ɺϐΞιϯ૬ؔɺ+BDDBSE܎਺ͳͲ  ΞΠςϜΛਪન͢Δ  ࣅ͍ͯΔϢʔβʔ͕ධՁ͍ͯͯ͠ɺࣗ෼͕ධՁ͍ͯ͠ͳ͍ΞΠςϜ  ྫ͑͹ɺϢʔβʔྨࣅੑείΞʹج͍ͯධՁ༧ଌΛࢉग़͢Δ

Slide 17

Slide 17 text

ڠௐϑΟϧλϦϯά՝୊ w௨ৗͷϏδωεͰ࢖͏σʔλ͸ɺϢʔβʔɺΞΠςϜͱ΋ʹ๲େ͔ͭɺૄͳσʔ λͰ͋Δ͜ͱ͕ଟ͍ wྨࣅ౓ΛٻΊΔͨΊͷܭࢉྔ͕૿͑Δ w૬ؔؔ܎ͷநग़͕೉͘͠ͳΓਫ਼౓͕ग़ͳ͍

Slide 18

Slide 18 text

.BUSJY'BDUPSJ[BUJPOʹΑΔ Ϩίϝϯσʔγϣϯ

Slide 19

Slide 19 text

.BUSJY'BDUPSJ[BUJPO

Slide 20

Slide 20 text

.BUSJY'BDUPSJ[BUJPO wϢʔβʔ΍ΞΠςϜ͝ͱͷධՁͷภΓ͕͋ͬͯɺେྔ͔ͭૄͳσʔλʹର͢Δ ධՁ༧ଌ wLݸͷજࡏҼࢠΛ࣋ͭϢʔβʔߦྻͱΞΠςϜߦྻΛ༻͍ͯۙࣅʢ࣍ݩ࡟ݮʣ wϢʔβʔ΍ΞΠςϜʹର͢ΔόΠΞεͷߟྀ              Item User R = ≈ m P n n Q × m k k

Slide 21

Slide 21 text

͓͞Β͍ߦྻͷੵ 0 B B @ 1 3 1 4 2 1 1 3 1 C C A ✓ 4 1 2 2 4 2 ◆ = 0 B B @ 10 13 8 12 17 10 10 6 6 10 13 8 1 C C A

Slide 22

Slide 22 text

͓͞Β͍ߦྻͷੵ w ߦͱྻͷ಺ੵ͕ߦྻ੒෼ 0 B B @ 1 3 1 4 2 1 1 3 1 C C A ✓ 4 1 2 2 4 2 ◆ = 0 B B @ 10 13 8 12 17 10 10 6 6 10 13 8 1 C C A (1 ⇤ 4) + (3 ⇤ 2) = 10

Slide 23

Slide 23 text

͓͞Β͍ߦྻͷੵ w ߦͱྻͷ಺ੵ͕ߦྻ੒෼ w NºLͱLºOͷߦྻͷੵ͸NºO w ٯ΋·ͨ੒Γཱͭ 0 B B @ 1 3 1 4 2 1 1 3 1 C C A ✓ 4 1 2 2 4 2 ◆ = 0 B B @ 10 13 8 12 17 10 10 6 6 10 13 8 1 C C A 3 4 3 4 (4×2) ͱ (2×3) Ͱ (4×3)ͷߦྻ

Slide 24

Slide 24 text

.BUSJY'BDUPSJ[BUJPO

Slide 25

Slide 25 text

.BUSJY'BDUPSJ[BUJPO  ϥϯμϜͳ஋ͰॳظԽ͞Εͨ෼ղޙͷߦྻΛͭ༻ҙ͢Δ  ݩͷධՁߦྻͰ஋͕ೖ͍ͬͯΔ੒෼શͯʹରͯ͠ɺ෼ղޙͷߦྻͷੵͷ݁Ռ ͱൺֱ͢Δ  ޡࠩΛิਖ਼͢Δ  ݩͷධՁߦྻͱۙࣅʹͳΔ·Ͱ Λ܁Γฦ͢              Item User R = ≈ m P n n Q × m k k

Slide 26

Slide 26 text

ͭ·Γ R = m P n n Q × m k k LݸͷજࡏҼࢠΛ࣋ͭͭͷߦྻͷੵʹ ΑΓɺݩͷධՁߦྻͷ஋ʹۙͮ͘Α͏ ͳA Aͷ૊Έ߹ΘͤΛ୳͢͜ͱ 0 B B @ ? ? ? ? ? ? ? ? 1 C C A ✓ ? ? ? ? ? ? ◆ = 0 B B @ 10 13 8 12 17 10 10 6 6 10 13 8 1 C C A ٻΊΒΕ֤ͨߦྻ͸ɺݩͷಛ௃Λ·ͱΊͨߦྻͱΈͳ ͢͜ͱ͕Ͱ͖Δ w 6TFSͷಛ௃ΛL࣍ݩʹ·ͱΊͨߦྻ w *UFNͷಛ௃ΛL࣍ݩʹ·ͱΊͨߦྻ

Slide 27

Slide 27 text

ͭ·Γ R = m P n n Q × m k k LݸͷજࡏҼࢠΛ࣋ͭͭͷߦྻͷੵʹ ΑΓɺݩͷධՁߦྻͷ஋ʹۙͮ͘Α͏ ͳA Aͷ૊Έ߹ΘͤΛ୳͢͜ͱ 0 B B @ ? ? ? ? ? ? ? ? 1 C C A ✓ ? ? ? ? ? ? ◆ = 0 B B @ 10 13 8 12 17 10 10 6 6 10 13 8 1 C C A ˠ ϥϯμϜͳA Aͷ૊Έ߹Θ͔ͤΒٻΊ ͨ஋ͱɺਖ਼ղͷ஋ͷޡࠩΛখͯ͘͞͠ ͍͚͹Α͍ ˠޯ഑߱Լ๏

Slide 28

Slide 28 text

ޯ഑߱Լ๏ͱ͸ wػցֶशʹ͓͍ͯϞσϧʹରֶͯ͠शΛਐΊΔͨΊͷख๏ͷͻͱͭɻ wτϨʔχϯάର৅ͷσʔλʹରͯ͠Ϟσϧͱͷޡ͕ࠩ࠷খʹͳΔΑ͏ʹϞσϧ ಺ͷύϥϝλΛߋ৽͍ͯ͘͜͠ͱɻ wύϥϝλߋ৽͸ɺޡࠩΛఆٛͨؔ͠਺Λඍ෼ͯ͠࠷খʹ͚ۙͮΔૢ࡞Λ܁Γฦ ͢͜ͱͰߦ͏ɻ

Slide 29

Slide 29 text

ࢀߟ (PʹΑΔޯ഑߱Լ๏ ཧ࿦ͱ࣮ફ IUUQTTQFBLFSEFDLDPNNPOPDISPNFHBOFHSBEJFOUEFTDFOUJOHPMBOH

Slide 30

Slide 30 text

.BUSJY'BDUPSJ[BUJPO w༧ଌ஋ ˆ rij = pT i qj = k X k=1 pikqkj e2 ij = (rij ˆ rij)2 = (rij k X k=1 pikqkj)2 p0 ik = pik + ↵ @ @pik e2 ij = pik + 2↵eijqkj q0 kj = qkj + ↵ @ @qkj e2 ij = qkj + 2↵eijpik wೋ৐ޡࠩͷ໨తؔ਺ wύϥϝλߋ৽ࣜ

Slide 31

Slide 31 text

.BUSJY'BDUPSJ[BUJPO3FHVMBSJ[BUJPO w༧ଌ஋ ˆ rij = pT i qj = k X k=1 pikqkj wೋ৐ޡࠩͷ໨తؔ਺ wύϥϝλߋ৽ࣜ e2 ij = (rij ˆ rij)2 + 2 ( P 2 + Q 2 ) p0 ik = pik + ↵ @ @pik e2 ij = pik + ↵(2eijqkj pik) q0 kj = qkj + ↵ @ @qkj e2 ij = qkj + ↵(2eijpik qkj)

Slide 32

Slide 32 text

.BUSJY'BDUPSJ[BUJPO#JBT w༧ଌ஋ wೋ৐ޡࠩͷ໨తؔ਺ wύϥϝλߋ৽ࣜ ˆ rij = µ + buser(i) + bitem(j) + k X k=1 pikqkj e2 ij = (rij ˆ rij)2 + 2 ( buser 2 + bitem 2 + P 2 + Q 2 ) p0 ik = pik + ↵ @ @pik e2 ij = pik + ↵(2eijqkj pik) q0 kj = qkj + ↵ @ @qkj e2 ij = qkj + ↵(2eijpik qkj) buser(i) = buser(i) + ↵ @ @buser(i) e2 ij = buser(i) + ↵(2eij buser(i)) bitem(j) = bitem(j) + ↵ @ @bitem(j) e2 ij = bitem(j) + ↵(2eij bitem(j))

Slide 33

Slide 33 text

:FT XF`SFHPQIFS

Slide 34

Slide 34 text

.BUSJY'BDUPSJ[BUJPO rows, cols := R.Dims() p := mat64.NewDense(rows, K, randomSlice(rows*K)) q := mat64.NewDense(K, cols, randomSlice(rows*K)) for step := 0; step < 5000; step++ { for i := 0; i < rows; i++ { for j := 0; j < cols; j++ { rij := R.At(i, j) if rij == 0.0 { continue } pi := p.RowView(i) qj := q.ColView(j) err := rij - mat64.Dot(pi, qj) for k := 0; k < K; k++ { pik := p.At(i, k) qkj := q.At(k, j) p.Set(i, k, pik+alpha*(2*err*qkj)) q.Set(k, j, qkj+alpha*(2*err*pik)) } } } } return p, q # R ⽷5 0 3⽹ ⾇0 2 2⾇ ⽸4 4 0⽺ # R^ ⽷ 4.867 4.489 3.194⽹ ⾇ 2.482 2.266 1.629⾇ ⽸ 4.155 3.834 2.726⽺

Slide 35

Slide 35 text

NJOOFͰͷར༻ࣄྫ

Slide 36

Slide 36 text

Ϩίϝϯυ wNJOOFʮ͋ͳͨʹ͓͢͢Ίͷ࡞Ոʯ wϢʔβʔͷߦಈΛجʹ࡞ՈΛϨʔςΟϯά Activity Filter and shuffle Users fav, follow etc… Matrix Factorization Recommendation import DB

Slide 37

Slide 37 text

ߦಈϩάͷϨʔςΟϯά

Slide 38

Slide 38 text

#JHGPPU wϖύϘͷ࣍ੈ୅ϩάl׆༻zج൫ wߦಈϩάͷऩूɺ෼ੳɺ׆༻ͷ֤ஈ֊ʹ͓͍ͯɺશࣾͰར༻Ͱ͖Δ൚༻ੑͱ۩ ମతͳ׆༻ํ๏Λఏڙ wࠃ಺࠷େڃϋϯυϝΠυϚʔέοτNJOOFΛࢧ͑Δϩάج൫

Slide 39

Slide 39 text

#JHGPPU IDFA/GAID UID rack-bigfoot Service Request Activity log Services DB Attribute Big Cube Cube https://icons8.com BI Recommendation Bandit algorithm Re-marketing Feedback Name identification Cookie Sync

Slide 40

Slide 40 text

ࢀߟ αʔϏεʹدΓఴ͏ϩάج൫ ϩάऩूͷͦͷઌʹ IUUQTTQFBLFSEFDLDPNNPOPDISPNFHBOFQFQBCPMPHJOGSBTUSVDUVSFCJHGPPU

Slide 41

Slide 41 text

Ϩίϝϯυ wNJOOFʮ͋ͳͨʹ͓͢͢Ίͷ࡞Ոʯ wϢʔβʔͷߦಈΛجʹ࡞ՈΛϨʔςΟϯά Activity Filter and shuffle Users fav, follow etc… Matrix Factorization Recommendation import DB

Slide 42

Slide 42 text

.BUSJY'BDUPSJ[BUJPO CZ)JWFNBMM

Slide 43

Slide 43 text

.BUSJY'BDUPSJ[BUJPOCZ)JWFNBMM Activity Rating Ratings 20% 80% testings trainings sgd_model predictions evaluations MAE RMSE Bias P, Q Service fav, follow etc… Recommendation Matrix Factorization

Slide 44

Slide 44 text

SBUJOH wධՁߦྻΛ౤ೖ͢Δ޻ఔ wNJOOFͰ͸Ϣʔβʔʹ໌ࣔతͳධՁΛೖྗͯ͠΋Β͏ͷͰ͸ͳ͘ɺલड़ͷߦ ಈϩάΛݩʹAߪೖऀAͷA࡞ՈAʹର͢ΔධՁΛಋग़͍ͯ͠Δ Activity Filter and shuffle Users fav, follow etc… Matrix Factorization Recommendation import DB

Slide 45

Slide 45 text

SBUJOH INSERT OVERWRITE TABLE ratings SELECT r.account_id, r.creator_id, ( -- rating ) AS rating, rand(31) as rnd FROM ( ... 3FTVMU&YQPSUΑΓ*/4&35 07&383*5& 5"#-& ͷ΄͏͕ߴ଎ ޙ޻ఔͰτϨʔχϯάͱςετσʔλʹׂΓৼΔͨΊ ϥϯμϜ஋ΛׂΓৼ͓ͬͯ͘ͱศར

Slide 46

Slide 46 text

USBJOJOH UFTUJOH wϨʔςΟϯάޙͷσʔλΛτϨʔχϯά༻ɺݕূ༻ʹׂΓৼΔ޻ఔ wࠓճ͸ΛτϨʔχϯά༻σʔλɺΛݕূ༻σʔλͱ͢Δ

Slide 47

Slide 47 text

USBJOJOH UFTUJOH INSERT OVERWRITE TABLE training SELECT account_id, creator_id, rating, rnd FROM ratings WHERE rnd > 0.2 -- rnd <= 0.2 ; ΛτϨʔχϯά༻ USBJOJOH ʹɻ ಉ͡Α͏ʹͯ͠Λςετ༻ UFTUJOH ʹׂΓৼΔɻ

Slide 48

Slide 48 text

.BUSJY'BDUPSJ[BUJPO w.BUSJY'BDUPSJ[BUJPOΛ࢖ͬͯɺධՁߦྻ͔ΒLݸͷજࡏҼࢠΛ࣋ͭϢʔβʔ ߦྻͱΞΠςϜߦྻʢNJOOFͷ৔߹ɺ࡞ՈߦྻʣΛಋ͘޻ఔ w)JWFNBMMͰ͸όΠΞε߲͖ͭͷߦྻΛಋग़͢Δ              Item User R = ≈ m P n n Q × m k k

Slide 49

Slide 49 text

.BUSJY'BDUPSJ[BUJPO INSERT OVERWRITE TABLE sgd_model SELECT idx, array_avg(u_rank) as Pu, array_avg(i_rank) as Qi, avg(u_bias) as Bu, avg(i_bias) as Bi, min(mu) as mu FROM ( SELECT train_mf_sgd(account_id, creator_id, rating, '- factor 20 -iter 50 -update_mu') AS (idx, u_rank, i_rank, u_bias, i_bias, mu) FROM training ) t GROUP BY idx;

Slide 50

Slide 50 text

.BUSJY'BDUPSJ[BUJPO INSERT OVERWRITE TABLE sgd_model SELECT idx, array_avg(u_rank) as Pu, array_avg(i_rank) as Qi, avg(u_bias) as Bu, avg(i_bias) as Bi, min(mu) as mu FROM ( SELECT train_mf_sgd(account_id, creator_id, rating, '- factor 20 -iter 50 -update_mu') AS (idx, u_rank, i_rank, u_bias, i_bias, mu) FROM training ) t GROUP BY idx; ޙ޻ఔͰධՁͷฏۉ஋Λ࢖͏͕ɺ5SFBTVSF%BUB্ Ͱ͸ม਺͕࢖͑ͳ͍ͷͰʢશͯಉ͡ʹͳΔ͕ʣ VQEBUFNVΦϓγϣϯΛ࢖ͬͯɺ͜͜ͰٻΊ͓ͯ͘ ࿦ཧߏ଄ͱͯ͠͸ߦྻ͕ͩJEY͸ڞ௨Խ͞Ε͓ͯΓ ͻͱͭͷςʔϒϧʹ֨ೲ͞ΕΔ 1V 2J͸ͦΕͧΕϢʔβʔɺΞΠςϜʢ࡞Ոʣ͋ͨ ΓͷLݸͷજࡏҼࢠΛ഑ྻͱͯ࣋ͭ͠ USBJO@NG@THEʹΑΓ֬཰తޯ഑߱Լ๏ʹΑΔ .BUSJY'BDUPSJ[BUJPO͕ߦΘΕΔɻ ଞʹ΋"EB(SBE࠷దԽΛ࢖͏USBJO@NG@BEBHSBE΋ ࢖͏͜ͱ͕Ͱ͖Δ

Slide 51

Slide 51 text

FWBMVBUJPO wֶशͨ͠Ϟσϧ͕աֶश͍ͯ͠ͳ͍͔Λௐ΂Δ޻ఔ w࠷ॳͷ޻ఔͰ෼཭͓͍ͯͨ͠ςετσʔλΛ࢖ͬͯ༧ଌධՁΛߦ͏ wશͯͷ݁ՌΛݟൺ΂Δ͜ͱ͸Ͱ͖ͳ͍ͨΊɺશޡࠩΛಛఆͷख๏ʹΑΓ൑ఆ ͢Δ w."&ޡࠩͷઈର஋ͷฏۉ w3.4&ޡࠩͷೋ৐ͷฏۉͷฏํࠜ wຖճͷ݁ՌΛςʔϒϧʹग़ྗͯ͠ਪҠΛ֬ೝ͍ͯ͠Δ

Slide 52

Slide 52 text

FWBMVBUJPO SELECT mae(t3.predicted, t3.actual) as mae, rmse(t3.predicted, t3.actual) as rmse FROM ( SELECT t2.actual, mf_predict(if(size(t2.Pu)=0, null, t2.Pu), if(size(p2.Qi)=0, null, Qi), t2.Bu, p2.Bi, t2.mu) as predicted FROM ( SELECT t1.account_id, t1.creator_id, t1.rating as actual, p1.Pu, p1.Bu, p1.mu FROM testing t1 LEFT OUTER JOIN sgd_model p1 ON (t1.account_id = p1.idx) WHERE p1.Bu IS NOT NULL AND p1.mu IS NOT NULL ) t2 LEFT OUTER JOIN sgd_model p2 ON (t2.creator_id = p2.idx) ) t3; ֶशࡁΈϞσϧΛ࢖ͬͯςετσʔλʹର͢Δ ."& 3.4&ΛٻΊΔʢ஋͸খ͍͞΄ͲΑ͍ʣ

Slide 53

Slide 53 text

QSFEJDUJPO wֶश͕ऴΘͬͨϞσϧΛ࢖ͬͯධՁΛߦ͏޻ఔ wϢʔβʔߦྻͱΞΠςϜʢ࡞Ոʣߦྻͷੵ࿨ʢʹόΠΞεΛՃ͑ͨ΋ͷʣ͕༧ ଌϨʔςΟϯάͱͳΔ wྫ͑͹͋ΔϢʔβʔ͕ະධՁͷΞΠςϜʢ࡞Ոʣͷ͏ͪɺ༧ଌϨʔςΟϯά͕ ߴ͍΋ͷΛਪન͢Δ

Slide 54

Slide 54 text

QSFEJDUJPO INSERT OVERWRITE TABLE prediction SELECT t2.account_id, t2.creator_id, t2.rank, t2.predicted FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY t1.account_id ORDER BY t1.predicted DESC) AS rank, t1.account_id, t1.creator_id, t1.predicted FROM ( SELECT accounts_creators.account_id, accounts_creators.creator_id, mf_predict(if(size(accounts.Pu)=0, null, accounts.Pu), if(size(creators.Qi)=0, null, creators.Qi), accounts.Bu, creators.Bi, accounts.mu) AS predicted FROM -- prediction for all accounts and creators ) t1 ) t2 WHERE t2.rank <= 100; ֤ΞΧ΢ϯτͷ༧ଌϨʔςΟϯά͕ߴ͍΋ͷΛ݅ NG@QSFEJDUʹΑΓֶशࡁΈͷϞσϧ͔Β֤ΞΠςϜʹର͢Δ ༧ଌϨʔςΟϯάΛٻΊΔ ΞΧ΢ϯτ͝ͱͷ༧ଌϨʔςΟϯάͰฒͼସ͑

Slide 55

Slide 55 text

ϫʔΫϑϩʔͷ؅ཧ

Slide 56

Slide 56 text

ϫʔΫϑϩʔͷ؅ཧ w5SFBTVSF%BUBͷεέδϡʔϧΫΤϦΛར༻ wΫΤϦͷίʔυ؅ཧ༻ʹ1FOEVMVNΛ։ൃ wIUUQTHJUIVCDPNNPOPDISPNFHBOFQFOEVMVN w%4-ʹΑͬͯεέδϡʔϧΫΤϦΛهड़͠ɺίʔυ؅ཧ Scheduled queries Queries on GitHub Apply Pendulum

Slide 57

Slide 57 text

1FOEVMVN schedule 'test-scheduled-job' do database 'db_name' query 'select time from access;' retry_limit 0 priority :normal cron '30 0 * * *' timezone 'Asia/Tokyo' delay 0 result_url 'td://@/db_name/table_name' end Schedfile Apply $ pendulum --apikey='...' -a --dry-run $ pendulum --apikey='...' -a

Slide 58

Slide 58 text

%JHEBHҠߦத IUUQTHJUIVCDPNUSFBTVSFEBUBEJHEBH

Slide 59

Slide 59 text

"QQFOEJY

Slide 60

Slide 60 text

"QQFOEJY w'BDUPSJ[BUJPO.BDIJOF wϨʔςΟϯάͷ޻෉ wಋೖͱධՁํ๏

Slide 61

Slide 61 text

·ͱΊ

Slide 62

Slide 62 text

·ͱΊ w)JWFNBMMͱ5SFBTVSF%BUBͷ૊Έ߹ΘͤͰେྔσʔλʹର͢Δػցֶशར༻Λ ෑډ௿࢝͘ΊΔ͜ͱ͕Ͱ͖Δ w)JWFΫΤϦͰ؆୯ʹ΍Δ͜ͱ͕Ͱ͖Δ͚Ͳɺ಺෦ͷϩδοΫ͸೺Ѳ͍ͯͨ͠΄ ͏͕Α͍ wσʔλ͕͋Ε͹ྟΉ݁Ռ͕ग़ͯ͘ΔΘ͚Ͱ͸ͳ͍ͷͰɺϑΟϧλϦϯά΍νϡʔ χϯάɺϨʔςΟϯάͷௐ੔ͳͲ͸ͱͬͯ΋େࣄ

Slide 63

Slide 63 text

͓ΘΓ

Slide 64

Slide 64 text

܅΋ϖύϘͰಇ͔ͳ͍͔ʁ ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU