Me përfundimin e sezonit 2021–2022 të NBA-së dhe me afrimin e shpejtë të draftit të NBA-së 2022, e ktheva fokusin tim drejt përpjekjes për të bërë parashikime për perspektivat e draftit të këtij viti.

E zgjodha këtë projekt duke ndjekur së bashku me projektin udhëzues të titulluar "Parashikoni jetëgjatësinë e karrierës për fillestarët e NBA duke përdorur Scikit-learn" në Coursera të mësuar nga Mohanad Ayman Affify. Ky projekt i udhëhequr i udhëzon studentët në krijimin e një fletoreje Jupyter duke zbatuar një klasifikues të regresionit logjistik në Python.

Së pari, ne do të ecim përmes rezultateve të këtij projekti të udhëhequr, dhe më pas do të zbatojmë modelin e parashikimit për perspektivat e draftit të këtij viti dhe në fund do të shikojmë se si mund ta përmirësojmë më tej parashikimin me pika ose modele të ndryshme të të dhënave.

Qëllimi i këtij modeli është të parashikojë suksesin e karrierës së perspektivave të draftit të këtij viti të NBA-së, në lidhje me jetëgjatësinë e karrierës. Rezultati i këtij modeli mund të na motivojë për të matur suksesin edhe në mënyra të tjera.

Referojuni projektit tim GitHub repo për ta ndjekur.

Të dhënat

Hapi i parë për çdo projekt të mësimit të makinës, pas përcaktimit të deklaratës së problemit, është identifikimi dhe marrja e të dhënave. Ajo që na nevojitet këtu për këtë përsëritje të parë të modelit, është:

  1. Disa statistika të lojtarëve për lojtarët historikë para se të hynin në NBA. Tani për tani, ne po përqendrohemi vetëm në statistikat e NCAA për thjeshtësi. Gjithashtu për thjeshtësi, ne do të përqendrohemi në statistikat standarde të rezultateve të kutisë.
  2. Vite të kaluara në listën e NBA-së për të njëjtët lojtarë historikë. Shumë nga lojtarët në listë janë ende në ligë, kështu që ne do të vendosim shiritin në 5 vjet përvojë dhe tani për tani kujdeset vetëm nëse ata ishin në listë për më shumë se, barabar, ose më pak se 5 vjet. Për këtë arsye, në listën e lojtarëve do të jenë ata që janë hartuar të paktën 5 vite më parë.
  3. Statistikat e lojtarëve për perspektivat e draftit të këtij viti, të të njëjtave statistika që kemi mbledhur për lojtarët historikë.

Në projektin e drejtuar nga Coursera, të dhënat për (1) dhe (2) ofrohen tashmë në mjedisin e punës, dhe gjithashtu mund të gjenden "këtu" dhe "këtu".

Për perspektivat e draftit të këtij viti, unë munda të gjeja pothuajse të gjitha këto statistika në një tabelë në RealGM (dhe ngarkova këtu në GitHub). Tabelës i mungojnë vetëm xhirot nga veçoritë e stërvitjes dhe do ta trajtojmë më pas.

Ndërtimi i modelit të parashikimit

Modeli që ne po përdorim është një model i regresionit logjistik, i cili është një model klasifikimi i të mësuarit të mbikëqyrur. Kjo do të thotë se ne kemi të paktën disa vlera të dhënash (në këtë rast, të gjitha vlerat e të dhënave për lojtarët historikë) për fushën e të dhënave për të cilën duam të bëjmë parashikime (jetëgjatësia e karrierës), dhe se ne po e klasifikojmë parashikimin në një kategori ( nën 5 vjet në NBA, ose të paktën 5 vjet në NBA) në vend të një vlerësimi numerik.

Pas disa analizave eksploruese të të dhënave, duke përfshirë një hartë korrelacioni për të identifikuar veçori të lidhura fort që mund të anojnë modelin, ne ri-inxhinierojmë pak grupin e të dhënave.

Ne kryejmë ndarjen standarde të grupit të të dhënave (vetëm grupin historik të lojtarëve) në rekorde trajnimi dhe testimi model (X është grupi i veçorive që kemi zgjedhur nga lart, dhe y është etiketa e klasifikimit mbi/nën 5 vjet në NBA) . Pastaj, ne mund të .përshtatim() modelin scikitlearn LogisticRegression() në të dhënat e trajnimit. Por përveç kësaj, duke përdorur një paketë Python për të cilën nuk e kisha ditur më parë përpara këtij projekti të drejtuar (tulla e verdhë), ne zbatojmë një vizualizim të pragut të saktësisë, rikujtimit dhe diskriminimit të modelit.

Ne e vendosëm pragun e diskriminimit të parashikuesit në 0,35 për të maksimizuar f1, një metrikë që ofron kompromisin më të mirë midis saktësisë (“Gabimi i tipit 1”) dhe rikujtimit (“Gabimi i tipit 2”). Në përgjithësi, ne kujdesemi më shumë për optimizimin e saktësisë kur duam të minimizojmë pozitivët e rremë dhe për optimizimin e rikujtimit kur duam të minimizojmë negativët e rremë. Në mungesë të një preference të fortë për secilën prej tyre, optimizimi në f1 është i kujdesshëm. Shembulli klasik i parashikimit të kancerit përdoret shpesh kur dëshironi të minimizoni negativët e rremë, dhe në rastet e gjykatës penale është kur dëshironi të minimizoni rezultatet false.

Ne testojmë modelin në të dhënat e testimit dhe tërheqim saktësinë, saktësinë dhe rezultatet e rikujtimit. Ne gjithashtu provojmë disa vlera të ndryshme për pragun e diskriminimit për të konfirmuar zgjedhjen e dëshirueshme për atë metrikë. Këto përsëritje janë të ilustruara në fletoren e ushtrimeve.

Zbatimi i modelit në projekt-perspektivat e këtij viti

Pasi të kemi zhvilluar dhe akorduar modelin e parashikimit sipas dëshirës sonë, është koha të prezantojmë projekt-perspektivat e këtij viti për të cilët do të bëjmë parashikime.

Siç u përmend më parë, grupi i të dhënave ku kishim akses nuk përfshinte statistikat e qarkullimit, kështu që na u desh të trajnonim përsëri modelin e parashikimit, me atë veçori të hequr.

Ne e zbatojmë funksionin predict_proba() në projekt-regjistrat tanë të perspektivës dhe ai kthen grupin tonë të parashikuar të etiketave duke deklaruar se cilat perspektiva beson se do të luajnë të paktën 5 vjet në NBA.

Megjithatë, ka një problem me rezultatet tona. Për pragun e diskriminimit prej 0.35 me të cilin ishim rehat gjatë stërvitjes së modelit, modeli parashikon që çdo perspektivë draft do të luajë në NBA të paktën 5 vjet. Edhe nëse kjo do të ishte e vërtetë, nuk është argëtuese për këtë ushtrim, apo jo?

Duke vëzhguar ndikimin e rezultateve kur ndryshova pragun e diskriminimit, vërej se numri i lojtarëve që parashikohet të luajnë më pak se 5 vjet në NBA rritet me një rritje të pragut të diskriminimit. Kjo është në përputhje me atë që do të prisnim, pasi një prag më i lartë i diskriminimit rezulton në saktësi më të lartë dhe kujtim më të ulët. Kjo mund të konfirmohet në grafikun e mësipërm.

Pse lidhet në këtë mënyrë? Sepse me një rritje të saktësisë, ne fokusohemi në një ulje të rezultateve false: ne nuk duam të parashikojmë që lojtarët do të luajnë më gjatë se sa luajnë në të vërtetë. Ne po vendosim një kosto më të lartë për një "draft bust" të mundshëm sesa për koston e humbjes së një slam dunk të mundshëm draft (negativ i rremë). Ne duam të jemi më të rreptë me kriteret tona, në mënyrë që të dallojmë më tej lojtarët. Dhe gjithashtu, për qëllimet e këtij demonstrimi, ne në fakt duam të marrim disa lojtarë në këtë listë.

Pra, pas gjithë kësaj, unë vendos të zgjedh një prag diskriminimi prej 0.58, sepse ky është afërsisht një kulm lokal prej f1 përpara rënies së madhe, dhe më tej në të djathtë, ku saktësia ka filluar të rritet ndjeshëm. rrit. Kjo më jep një listë me 7 lojtarë nga 97 fillestarët që mund të parashikoj se kanë më shumë gjasa të luajnë më pak se 5 vjet në NBA.

Akordimi i mëtejshëm i modelit tani mund të aplikohet në varësi të asaj se sa të rreptë duam të jemi me vlerësimin tonë. Për një përzgjedhje drafti që është më herët në draft, ne do ta rregullojmë këtë prag për të na ndihmuar të kufizojmë me të vërtetë kë të zgjedhim. Por sigurisht, ne e dimë se ky model është ende shumë i thjeshtë dhe ka të ngjarë të ketë të dhëna shumë më të mira që mund të përdorim për të përmirësuar parashikimet tona.

Ide për përmirësim

Një mendim fillestar që kisha kur aplikova këtë model, ishte të pyesim nëse duhet të përdorim një model regresioni në vend të një modeli klasifikimi. Kjo do të na jepte një vlerë të vazhdueshme numerike për gjatësinë e pritshme të karrierës në NBA të këtyre lojtarëve, në vend që të fokusohemi vetëm në të qenit mbi ose nën një numër të caktuar vitesh. Sigurisht, kjo do të kërkonte të dhëna të ndryshme: në vend të etiketave binare që përdorëm, do të na duheshin të dhëna për numrin e saktë të viteve që secili lojtar ka kaluar në NBA. Kjo duhet të jetë mjaft e thjeshtë për t'u marrë, natyrisht.

Megjithatë, problemi është me të dhënat për lojtarët, karriera e të cilëve ende nuk ka përfunduar. Merrni, për shembull, lojtarë të yjeve me vetëm 5 vjet përvojë si Jayson Tatum, Donovan Mitchell dhe Bam Adebayo. Ata kanë qartë talentin, atributet dhe karakteristikat e tjera për të qenë në NBA për disa vite të tjera. Megjithatë, me një model të regresionit linear, statistikat e tyre do të krahasohen me lojtarët që kaluan 5 vjet në NBA për të gjithë karrierën e tyre. Në fakt, ata do të krahasoheshin më afër me lojtarët që luajtën vetëm 4 vjet dhe do të kishin rënë nën pragun tonë 5 vjeçar, në vend të atyre që luajtën 7 vjet, 8 vjet, 9 vjet ose më shumë. Nuk dua t'i heq këta lojtarë aktualë sepse statistikat e tyre do të ishin më të rëndësishme për perspektivat e sotme sesa ata lojtarë që kanë luajtur në një epokë të mëparshme dhe tashmë janë pensionuar.

Çfarë mund të bëjmë tjetër? Për një, ne mund të provojmë veçori shtesë në modelin e trajnimit. Po në lidhje me metrikat e avancuara? Po në lidhje me metrikat e ndërtuara që janë kombinime të metrikave të tjera, si p.sh. "Xhirimi i vërtetë" ose "Assist to Turnover Ratio" ose "Usage"? Po në lidhje me metrikat e kombinatit të draftit? Po sikur të përcaktojmë sasinë e jomaterialeve, notat e skautëve, vlerësimet dhe cilësinë e kundërshtarit? Po sikur të zbatonim një algoritëm të veçantë klasifikimi për të përcaktuar një arketip lojtari dhe ta përdornim atë si veçori?

Në një bisedë mes njerëzve, mund të pajtohemi më së shumti se një lojtar i gjatë, atletik, me fokus të fortë në mbrojtje, i cili gjithashtu mund të gjuajë topin nga 3 mirë, ka një shans më të lartë për të shpenzuar më shumë kohë në listat e NBA-së sesa një lojtar sulmues, i vogël. roje me numra pikësh nën zgjedhjen mesatare të lotarisë. Por si mund ta përkthejmë atë në gjuhën e kompjuterit, me numra dhe klasa, në mënyrë që të mund të shfrytëzojmë fuqinë e mësimit të makinerive dhe të llogarisim fuqinë? Kjo, mendoj, është diçka që na duhet për të provuar një përmirësim të modelit në një kohë. Unë do ta rishikoj këtë përsëri.

Ky projekt është pjesë e sfidës #66DaysOfData që sapo po e filloj, në javën time të parë. Ju mund të ndiqni në Twitter @HovoKyos ose në profilin tim LinkedIN për përditësime dhe për të parë se çfarë tjetër punoj!