League of Legends ARAM Match Predictor

League of Legends ARAM Match Predictor

Ma'lumot fanlari va video o'yinlar o'rtasidagi kesishma
08.09.2021

Ommabop "Afsonalar ligasi" o'yinida ARAM (All Random All Middle) deb nomlangan o'yin rejimi mavjud. Har birida 5 o'yinchidan iborat ikkita jamoa bor, bu erda barcha o'yinchilarga 145 (9.20 yamog'i bo'yicha) chempionlar to'plamidan tasodifiy belgilar beriladi. Pastki aloqada paydo bo'ladigan jamoa ko'pincha "ko'k" deb nomlanadi va yuqori aloqada bo'lgan jamoa "qizil" jamoa deb ataladi. Xaritaning o'rnatilishi ko'prikda amalga oshiriladi, u erda barcha o'yinchilar uni birdaniga tayyorlaydilar.

So'nggi paytlarda men "League of Legends" da oddiy yozuvchilarning rift o'yinini o'ynamadim, balki ARAM xaritasini tanladim, chunki u tezroq va ko'p vaqtni talab qilmaydi. Shaxsan, menimcha, siz doimo jamoaviy janglarda bo'lsangiz, odatiy uslubga qaraganda ancha qiziqarli.

Belgilar har bir belgi uchun tasodifiy tanlangani uchun, har ikki jamoaning jamoaviy tarkibini hisobga olsak, qaysi jamoa g'olib bo'lishini oldindan ayta olasizmi, deb o'ylayman. Men munosib o'yinlar o'tkazdim, shuning uchun men qaysi jamoalarda g'alaba qozonishim mumkinligi haqida o'ylardim. Ammo men o'z sezgiimni sinovdan o'tkazmoqchi edim, aksincha, mashinani o'rganish modeli nimani o'ylaydi.

Ma'lumotni qayerdan olish mumkin

Bu men uchun Riot's (o'yinni ishlab chiqqan kompaniya) API bilan ishlash uchun imkoniyat bo'ldi. Ma'lumotlarni olish jarayonini tezlashtirish uchun Pythondagi Cassiopeia kutubxonasidan foydalandim. Men, albatta, Riot API -ni ishlatishdan manfaatdor bo'lgan har bir kishiga paketdan foydalanishni tavsiya qilaman, bu ma'lumotlarni olish jarayonini ancha osonlashtiradi. Men barcha ARAM o'yinlarini ajratib olishning oson yo'lini topa olmadim, shuning uchun tasodifiy o'yinlarni urug 'hisobidan (mening hisobim) boshlab, tasodifiy qidirish usulini qo'lladim. Keyin API tekshiruvchisi mening o'yinlarimni ko'zdan kechiradi va o'yinlarim ichidagi keyingi tasodifiy o'yinchiga o'tadi. Men taxminan 2 kun davom etgan 9.19 yamog'idan (eng so'nggi tuzatish) 100000 ga yaqin ARAM o'yinlarini chiqardim.

Dizayn

Ma'lumotlar matritsasini qanday tuzishim va 2 ta jamoa va 145 ta chempionni qanday hisobga olish kerakligi haqida o'yladim. Agar biz bitta qatorni bitta o'yinda ko'rsatishga ruxsat bersak, 145 ustunni har birining yo'nalishini belgilaydigan xususiyatlar sifatida belgilashimiz mumkin, keyin ko'k jamoadagi har bir chempion "+1" deb belgilanadi va chempionlar belgilanadi. "-1" sifatida, qolgan barcha tanlanmagan chempionlar "0" sifatida qoldirilgan. Maqsad, ko'k jamoaning g'alaba yoki mag'lubiyatini ko'rsatadigan ikkilik o'zgaruvchi bo'lishi mumkin.

Masalan, biz quyidagi o'yinni siyrak vektorga aylantirmoqchimiz

$ I $ ga mos keladigan ma'lumotlar vektori quyidagicha berilgan:

Chempion va o'yin matritsasidan $ X_ $ biz $ Y_i $ ni bashorat qilmoqchimiz, agar ko'k jamoa o'yinda g'alaba qozonsa 1, aks holda 0 bo'ladi.

Algoritm

Ushbu loyiha uchun men logistik regressiya algoritmini amalga oshirdim, chunki bu tasniflash muammosi edi. $ I $ ma'lum bir o'yin uchun maqsad va xususiyatlar (chempion ustunlari) o'rtasidagi munosabatlar quyidagicha berilgan:

Maqsad ko'k jamoaning g'alaba qozonishidir, $ p $ - ko'k jamoaning g'alaba qozonish ehtimoli. Har bir chempion bilan bog'liq koeffitsientlar ($ \ beta_j \ matn $) ARAM o'yinlarida yaxshi natijalarga erishganliklarini tabiiy talqiniga ega va bu belgi "ko'klar" ning imkoniyatlariga qo'shiladimi yoki qizil jamoaning imkoniyatlariga qo'shiladimi, degan izohga ega.

Masalan, agar chempion 1 ko'k jamoada bo'lsa, u $+\ beta_1 $ ni $ p $ bahosiga qo'shadi, chunki u ko'k jamoaning g'alaba qozonish imkoniyatini oshiradi, agar u qizil jamoada bo'lsa, u o'z hissasini qo'shadi $-\ beta_1 $ jurnali uchun $ p $. $ \ Beta $ koeffitsienti yuqori bo'lgan chempionlar ARAMda kuchliroq, koeffitsienti 0 ga yaqin bo'lgan chempionlar chempionlar reytingida o'rtacha, va katta salbiy koeffitsientli chempionlar ARAM o'yinlarida juda yomon harakat qilishadi. Shunday qilib, jamoa tarkibining kuchi, ularning koeffitsienti bo'yicha berilgan 5 ta chempionlik ballarining yig'indisi bo'ladi, biz tenglamani qayta yozishimiz mumkin:

Agar o'ng tomondagi summa katta bo'lsa va noldan katta bo'lsa, demak, ko'kning yutish ehtimoli yuqori va aksincha.

$ \ Beta $ ning parametrlarini baholaganimizdan so'ng, ko'k tarafning g'alaba qozonish ehtimolini, $ p_i $ ni topish algebra masalasidir (bu faqat (1 - qizil jamoaning g'alaba qozonish ehtimoli)

$ \ Beta_0 $ haqida nima deyish mumkin? U bilan bog'liq $ X_i $ chempioni ko'rsatkichi yo'q. Qizig'i shundaki, men dastlab bir xil chempionlar to'plamini o'zimga qarshi o'rnatganimda, natijada ehtimol 50%bo'lishi kerakligini kutgandim, chunki bu oynali o'yin va har bir jamoaning g'alaba qozonish ehtimoli teng bo'lishi kerak, lekin menda 50%dan katta ehtimollik bor. . Avvaliga men hayron bo'ldim, shunda men logistik regressiya bilan bog'liq sukut bo'yicha yoqilgan parametr borligini angladim. $ \ beta_0 $ - ko'k jamoaning g'alabasiga bo'lgan moyillik. O'yin o'yinchi nuqtai nazaridan nosimmetrik bo'lmagani uchun (ko'k jamoa pastda, qizil jamoa tepada o'ynaydi), ko'k jamoaning g'alabasiga intilish tabiiy (o'yinda bo'lgani kabi) mavjud.

Har bir chempion uchun koeffitsientlar -1 dan 1 gacha o'zgarib turadi, shuning uchun men ballarni tabiiy shkalaga aylantirish haqida o'yladim, masalan 0 dan 100 gacha. Men logistika funktsiyasidan foydalandim:

bu erda $ \ alpha $ - egri chiziqni boshqaradi. Bu diapazonni $ (0,1) $ ga o'zgartiradi. Chempionlar reytingini yuqoridagi saytdan bilib oling.

Qizig'i shundaki, biz Teemo, Heimerdinger va Nautilusni tepada, Sylas va Yuumini esa ro'yxatning pastki qismida ko'ramiz.

Onlayn kazino
O'yin -kulgi avtomatlari
Onlaynkazino

Bizning yangiliklarimizga obuna bo'lish orqali birinchi eksklyuziv taklifni oling va eng yaxshi onlayn kazinolarda har kungi ajoyib chegirmalarimizdan foydalaning!