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

BigQueryとPythonではじめるプロ野球選手の成績予測(もしくは成績占い) / Bas...

BigQueryとPythonではじめるプロ野球選手の成績予測(もしくは成績占い) / Baseball Player Performance Prediction using BigQuery and Python

Baseball Play Study mini 2022/5/27 登壇資料

Shinichi Nakagawa

May 27, 2022
Tweet

More Decks by Shinichi Nakagawa

Other Decks in Research

Transcript

  1. Who am I ?ʢ͓લ୭Αʣ • Shinichi Nakagawaʢத઒ ৳Ұʣ • େ఍ͷSNSͰʮshinyorkeʢ͠ΜΑʔ͘ʣʯͱ໊৐͍ͬͯ·͢

    • ΞΫηϯνϡΞגࣜձࣾϚωʔδϟʔʢຊۀʣ • ຊۀͷํͰ͸ʮGoogle Cloudڧ͍ϚϯʯతͳཱͪҐஔͰ 
 ιϦϡʔγϣϯΞʔΩςΫτʢSRE/DevOpsपΓʣ • ݸਓ׆ಈ͸ʮ໺ੜͷ໺ٿσʔλαΠΤϯςΟετʯͱͯ͠ 
 ໺ٿʹؔ͢ΔσʔλαΠΤϯεͱΤϯδχΞϦϯάΛ͍ͯ͠·͢ 
 ʢ͔ͭ, ຊۀͰ΋ػցֶशΤϯδχΞɾσʔλαΠΤϯςΟετܦݧ͋Γʣ • ๺ւಓ೔ຊϋϜϑΝΠλʔζ&ΦʔΫϥϯυɾΞεϨνοΫεͷϑΝϯ⽁
  2. ໺ٿAIΛࢧ͑ΔηΠόʔϝτϦΫε • ηΠόʔϝτϦΫε #ͱ͸ • ηΠόʔϝτϦΫεͷ͖΄Μ • ʮͦͬ͘Γ͞Μʯ͔Β੒੷༧ଌ - PECOTAϞσϧ

    • shinyorke’s੒੷༧ଌϞσϧʮzobristʯվΊʮkenshiʯ શ෦࿩͢ͱ3.34͔͔࣌ؒΔͷͰࠓ೔͸֓ཁͷΈ঺հ🐯
  3. ηΠόʔϝτϦΫε #ͱ͸ • ໺ٿʹ͓͍ͯൃੜ͢ΔσʔλΛ౷ܭֶతͳΞϓϩʔνͰ෼ੳΛߦ͍, 
 ʮબखͷೳྗʯʮνʔϜͷڧ͞ʯͳͲந৅తͳ֓೦ΛఆྔతʹࢦඪԽ͠, 
 νʔϜɾબखɾϑΝϯʹ໾ཱͯΔͨΊͷՊֶతͳΞϓϩʔνɾߟ͑ํͷ͜ͱ. • Ҏલ͸੒੷σʔλ͕ओྲྀ͕ͩͬͨ,

    ʮελοτΩϟετʯʮτϥοΫϚϯʯͱ͍ͬ ͨ, ܭଌػثτϥοΩϯάσʔλΛ༻͍ͯߦ͏ͷ͕ࠓͷτϨϯυ • ͳ͓, ੒੷σʔλͷΈͰ΋े෼͗͢Δ͙Β͍໘ന͍ࣄ͕ग़དྷ·͢ 
 ʢ㲈τϥοΩϯάσʔλ͸໺ٿɾٕज़ڞʹઐ໳஌͕ࣝ໰ΘΕΔ&೉қ౓ߴ͍ʣ
  4. ηΠόʔϝτϦΫεͷ͖΄Μ • ηΠόʔϝτϦΫε͸γϯϓϧͳ࢛ଇԋࢉ͓Αͼ౷ܭͰߦ͏ࣄ͕Ͱ͖Δ • Α͘஌ΒΕ͍ͯΔʮOPSʯʮWHIPSʯͳͲ, 
 ਺ࣜͦͷ΋ͷ͸ి୎΍ExcelͰܭࢉ͕Մೳʢ㲈ϓϩάϥϛϯάෆཁʣ • Ұํ, ʮWARʯʮRCʯͳͲͷࢦඪ͸ܭࢉׂ͕ͱෳࡶ,

    ExcelͰग़དྷͳ͘΋ແ͍͕, 
 ϓϩάϥϛϯά΍SQL, ػցֶशͳͲͰॲཧͨ͠΄͏͕ྑ͍ύλʔϯ΋ଘࡏ͢Δ. • ੒੷༧ଌ͸ʮಛ௃ྔΤϯδχΞϦϯάʯͱͯ͠ѻ͏ͱ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δʂ 
 ʢͱ͍͏ͷ͕͜ͷൃදͷٕज़తͳςʔϚͰ͢ʣ
  5. ໺ٿσʔλΛಛ௃ྔʹม׵͢Δ ಛ௃ྔʢ㲈਺஋ʣʹม׵ɾ୯ҐΛἧ͑Δ஍ಓͳ࡞ۀ͕ඞཁ • ਺஋ -> ਺஋ • ͦͷ··࢖͑ΔϞϊ͕ଟ͍. ྫ͑͹҆ଧ, ࢛ٿ,

    ࡾৼͳͲ. • Θ͔Γ΍͍͢୯Ґʹਖ਼نԽɾεέʔϦϯά͢Δ. RC, wRAA, wOBAͳͲͷηΠόʔϝτϦΫεࢦඪ. • ਺஋Ҏ֎ͷσʔλ -> ਺஋ • ར͖࿹΍ଧ੮ͷࠨӈ, ఱવࣳ or ਓ޻ࣳ, ໺֎ or υʔϜ or େࣗવʢॴ୔ͱ͸ݴ͍ͬͯͳ͍ʣ? • ਺஋Ͱ͸ແ͍σʔλΛಛ௃ྔʹ͢ΔͨΊͷॲཧ͕ඞཁʢΧςΰϦʔʹ͢ΔͳͲʣ
  6. PECOTA - ࠷΋౷ܭతͳ੒੷༧ଌϞσϧ • 2003೥ʢ19೥લʣʹϦϦʔεͨ͠MLBͷ੒੷༧ଌϞσϧ • ʮաڈͷࣅ͍ͯΔબखͷ੒੷ʯ͔Β༧ଌ੒੷Λࢉग़ 
 ͳ͓۩ମతͳख๏ɾ਺ࣜ͸ඇެ։ʢߟ͑ํ͸ͪΒ΄Βॻ͍ͯ͋Δʣ •

    ޙʹ2008೥ถࠃେ౷ྖબڍͷউऀΛ49/50भతதͤͨ͞ 
 ౷ܭֶऀωΠτɾγϧόʔ͕։ൃ ※ؾʹͳΔํ͸ʮγάφϧ&ϊΠζʯͱ͍͏ॻ੶ΛಡΜͰ͍ͩ͘͞
  7. shinyorke’s༧ଌϞσϧʮkenshiʯര஀ • աڈʢؚΉݱ໾ʣʹଘࡏͨ͠໺ٿબखͷ੒੷Λݩʹ, ʮࣅ͍ͯΔબखΛΫϥελϦϯάʯ 
 Ͱ͖ͨΒ༧ଌ੒੷࡞ΕΔͷͰ͸? -> ࣮͸PECOTA΋͜ͷΞϓϩʔνʢ࠷ॳظ͸ʣ • ηΠόʔϝτϦΫεͰʮྨࣅੑείΞʯͱ͍͏ࣅ͍ͯΔબखΛಋ͘਺͕ࣜ͋Δ͕,

    
 ࢒೦ͳ͕Βܽ఺͕ଟ͍ʢ௨ࢉ੒੷ͰΫϥελϦϯά͢ΔͨΊ, όΠΞε͕ڧ͘ग़Δʣ • ʮ͋Δಛ௃ྔΛݩʹΫϥελϦϯάʯ͸ಛ௃ྔΤϯδχΞϦϯά͕ಘҙͳλεΫ 
 ػցֶशతͳΞϓϩʔνͰߦ͚ΔͷͰ͸?આ -> Ͱ͖ͨ🙌 • ϝδϟʔϦʔά൛AIʮzobristʯΛ։ൃ -> ͍͍ײͩͬͨ͡ͷͰ೔ຊϓϩ໺ٿ൛Λ࡞੒ˡࠓ͜͜ ͜͏ͯ͠, shinyorke’sϓϩ໺ٿ੒੷༧ଌϞσϧ&໺ٿAIʮkenshiʯ͕ര஀.
  8. αϥοͱղઆ • Data Analytics • BigQuery͕͢΂ͯͷத৺, σʔλ͸͢΂ͯ͜͜ • Cloud ConsoleͰΫΤϦʔΛॻ͍ͯσʔληοτ࡞੒,

    ೉͍͠λεΫ͸Jupyter Lab্Ͱ࣮ࢪ • ωοτ͔Βऩू͢ΔσʔλʢCSVʣ͸Cloud Storageʹอଘ, Cloud FunctionsΛ࢖ͬͯBigQueryʹExport • Web App • StreamlitʢޙͰղઆʣͰ࣮૷ͨ͠ΞϓϦΛCloud RunͰϗετ • CI/CD͸GitHub ActionsͰαΫοͱ
  9. σʔλͷऔಘ • ֶशσʔλ͸ϝδϟʔϦʔάͷσʔλΛ࢖༻ • Lahman’s Baseball Database • ্هσʔλϕʔεͷCSVσʔλΛBigQueryʹimport •

    ϓϩ໺ٿͷσʔλ͸Baseball Reference͔ΒεΫϨΠϐϯά • 2021೥γʔζϯऴྃ࣌੒੷ΛݩʹεΫϨΠϐϯά • Pythonͷrequests-htmlͰΫϩʔϥʔΛ࣮૷, CSVอଘ -> BigQuery
  10. લॲཧ • ֶशʹඞཁͳσʔλ͸SQLͰՃ޻, Viewʹͯ͠อଘ 
 →Google Cloud ConsoleͰ࣮ࢪ • Ͳ͏ͯ͠΋SQLͰ͸໘౗͍͘͞΋ͷΛPandasͳͲͰॲཧ

    
 →ࣗ෼ͷPC্ʹ࡞ͬͨJupyter Lab؀ڥͰ࣮ࢪ • ֶशʹඞཁͳ௨ࢉ੒੷ɾ೥౓ผ੒੷Λࢉग़͢ΔͨΊͷ 
 ΫΤϦʔ΍σʔληοτΛͻͨ͢Β࡞Γ·ͬͨ͘
  11. લॲཧͷྫ - SQLͰߦ͏໺ٿͷಛ௃ྔநग़ • ଧ཰, ग़ྥ཰, OPSతͳͷ͸ 
 SQLͰܭࢉͰ͖Δ. •

    ΋͏ͪΐͬͱෳࡶͳࢦඪ΋. 
 ྫ͑͹wOBAͱ͔. • ্ه͸BigQueryͰ׬݁͠·ͨ͠.
  12. લॲཧͷྫ - SQLͰߦ͑ͳ͍΋ͷ͸? • ൥ࡶͳॲཧɾܭࢉ͕ೖͬͨΓ, 
 ߦྻͰ·ͱ·ͬͨϞϊͷॲཧ͸ 
 Python΍RͰॲཧ͕ϕετ. •

    ྫ͑͹ϐϘοτςʔϒϧ, 
 άϧʔϐϯάͳͲ͸PandasͰ 
 ॻ͍ͨ΄͏͕Θ͔Γ΍͍͢ 
 ͱ͖΋͋Δʢॾઆ͋Γ·͢ʣ • SQL͕ۤखͳํ͸શ෦ͬͪ͜Ͱ΍ͬͯྑ͍͔΋.
  13. ANNʢۙࣅ࠷ۙ๣୳ࡧʣΛ࠾༻ • ग़৔ࢼ߹਺, ଧ੮਺, ओཁͳଧܸ੒੷ʢ҆ଧ, ຊྥଧ, ଧ఺, etc…ʣ • कඋҐஔʢશ9ϙδγϣϯ,

    DH͸ߟྀ͠ͳ͍ʣผͷग़৔ճ਺ • ্هΛಛ௃ྔͱͯ͠ANNʢۙࣅ࠷ۙ๣୳ࡧʣΛ͔ͭͬͯ 
 ϢʔΫϦουڑ཭Λࢉग़͠, ͍ۙબखΛूΊΔ͜ͱʹ. • ʮAIʹΑΔࣆδϟύϯબग़ʯͱ͍͏ωλͰར༻->݁Ռ͸্ʑ 
 https://shinyorke.hatenablog.com/entry/tokyo2020-samurai-japan • ࣮૷͸Annoyͱ͍͏௒ศརͳϥΠϒϥϦΛ࢖͍·ͨ͠.
  14. ݁ՌΛݟͯΈͨ • ΦϦοΫε٢ాਖ਼ঘʹࣅ͍ͯΔਓΛ୳͢ • ༧ଌϞσϧʹ٢ాਖ਼ঘͷ੒੷Λ౉ͯ͠ 
 ΫϥελϦϯά݁ՌΛௐࠪ • ϋϯΫɾΞʔϩϯ, ΢ΟϦʔɾϝΠζ,

    
 ήϨʔϩଞ, ࣅ͍ͯΔ֎໺ख͕औΕͨͷͰ 
 ੒ޭͱݴ͑ͦ͏🎉 
 ※ήϨʔϩ͸ڈ೥ΦΦλχαϯͱHRԦ૪͍ͨ͠ήϨʔϩJr.ͷ͓෕͞Μ
  15. ࡔ૔ কޗબखͷະདྷ • ࠓ೥ͷ༧૝ʮଧ཰.309 ຊྥଧ20ຊ ଧ఺70 OPS .903ʯ • ڈ೥ͷงғؾ͔Β͢ΔͱϦΞϧʹୡ੒Մೳͳ༧ײ͕!?

    • ݸਓతʹ͸΍ͬͺัख΍ͬͯ΄͍͠, νʔϜࣄ৘ͳΜ͚ͩΕͲ΋ 
 ʢଧͯΔัख͸͍Δ͚ͩͰΞυόϯςʔδେ͖͍ʣ
  16. ཽͷະདྷΛ઎͏ - ೋਓͷཽઓ࢜ • AɾϚϧςΟωεʢத೔ʣ - 2018೥ೖஂ • ࠜඌ ߉ʢத೔ʣ

    - 2018೥υϥϑτ1Ґ • ଧ๮͓Αͼೋ౛ྲྀͰͪΐͬͱ࿩୊ΛݺΜͰ͍ΔೋਓΛ઎͏
  17. AɾϚϧςΟωεબखͷະདྷ • ࠓ೥ͷ༧૝ʮଧ཰.290 ຊྥଧ10ຊ ଧ఺44 OPS .862ʯ • OPSҎ֎͸ຊؾͰୟ͖ग़ͦ͠͏ͳ਺ࣈͳؾ͕͢Δ? •

    ཉΛݴ͑͹֎໺͡Όͳͯ͘ัखͰग़ͯ΄͍͠ 
 ัखͰ͜Ε͚ͩଧͬͨΒࠓͷ໺ٿͩͱੌ͍͜ͱʹ
  18. ࠜඌ ߉બखͷະདྷ • ࠓ೥ͷ༧૝ʮଧ཰.244 ຊྥଧ1ຊ ଧ఺6 OPS .654ʯ 
 5೥ޙ·Ͱͷ༧ଌ΋…͏ʔʔΜ?

    • ඇৗʹौ͍ධՁ, ೋ౛ྲྀΛࢼ͢ҙຯ͸༧ଌ͚ͩͩͱ͋Γͦ͏? • ൩੒ܕͱ৴͍ͨ͡, ͍͘ΒͳΜͰ΋໺ٿAIͷධՁ͕ौ͗͢? 
 ͪͳΈʹ౻ݪ ګେʢϩοςʣ΋ͳ͔ͳ͔ौ͍ධՁʹ
  19. BIG BOSSͷޙܧऀ͸୭ͩ? • ສ೾ தਖ਼ʢ೔ຊϋϜʣ - 2018೥υϥϑτ4Ґ • ύϫʔͱεϐʔυ, ࡶ͞Λ݉Ͷἧ͑ͨϑΟδΧϧϞϯελʔ

    
 ϑϧεΠϯάͰ͔ͬඈ͹͢ଧܸͱڧݞΛੜ͔ͨ͠कඋ͸ 
 ݱ໾࣌୅ͷBIG BOSSͦͷ΋ͷ • ࢲ, shinyorke͕ࠓ࠷΋ਪ͍ͯ͠Δϓϩ໺ٿબख
  20. ສ೾ தਖ਼બखͷະདྷ • ࠓ೥ͷ༧૝ʮଧ཰.252 ຊྥଧ18ຊ ଧ఺52 OPS .780ʯ • ϗϯτʹୟ͖ग़ͦ͠͏ͳ਺ࣈ,

    ग़৔ػձ&ଧ཰࣍ୈͰ 
 ͳΜͩͬͨΒຊྥଧ͸༧ଌ௨Γ΋͔ͨ͠͠Β௒͔͢΋? • 5೥ޙʹOPS.900௒͑Β͍͠ͷͰ, ͜ͷ઎͍౰ͨͬͯཉ͍͠
  21. ສ೾ தਖ਼ͱBIG BOSS ଧ཰ ຊྥଧ ଧ఺ #*(#044ࡀ 
 ʢ೥ɾࡕਆʣ 

    ຊ ଧ఺ ສ೾தਖ਼ࡀ ʢ೥ͷ༧ଌ੒੷ʣ  ຊ ଧ఺ ΊͬͪΌ৽ঙ߶ࢤબख΍Μʂʂʂ
  22. ΍͖͏AIͷ՝୊ͱ࣍ͷςʔϚ • ৽ਓબखͷ༧ଌ͕ʢϞσϧͷ࢓্༷ʣͰ͖ͳ͍ • ݱϞσϧ͸௨ࢉ੒੷ϕʔεͰͷֶश&༧ଌͰ͋ΔͨΊ, ࣮੷ແ͍ϧʔΩʔͷ༧ଌ͕ग़དྷͳ͍ • ߴߍɾେֶͷ੒੷Λͦͷ··࢖͑͹…ͱ͍͏୯७ͳղܾ͕Ͱ͖ͳ͍ • ੒੷Ҏ֎ͷઆ໌ม਺ΛՃ͍͑ͨ

    • ΍ͬͺΓτϥοΩϯάσʔλ࢖͍͍ͨʂ͋ͱ͸ମ֨ͱ͔ • ೔ຊϓϩ໺ٿͰ΍Δखஈ͸ແ͍͕, ϝδϟʔϦʔά͸Baseball Savant౳Ͱ͍͚ΔͷͰҾ͖ଓ͖AIΛҭ͍͖͍ͯͯͨ • ౤ख൛͕͋Μ·Γ͓΋͠Ζ͘ͳ͔ͬͨͷ͕չ͍͠ • ҰԠ͋ΔͷͰ͕͢, ඍົͩͬͨͷͰൃද߇͑·ͨ͠, ࠤʑ໦ ࿕رͷະདྷ༧૝ਤݟͯΈ͍ͨͷͰ΋͏গ͕͠Μ͹Γ·͢. • ݱ࣮తʹ͸, ϓϩ໺ٿͰ͸଍Γͳ͍ಛ௃ྔ͕͋Γ·ͯ͠…ϝδϟʔϦʔά൛͸े෼࣮༻ʹת͑ΔͷͰ͕͢😇