به نام خدا
سلام دوستان امیدوارم حالتون خوب باشه...
شاید راجع به سیستم رده بندی الو (Elo Rating System) شنیده باشید. وجه تسمیه نام این سیستم در اصل به افتخار مبدعش یعنی آرپاد آلو هست. آقای آرپاد اِلو این سیستم رده بندی رو برای رده بندی بازیکنان ورزشی (به خصوص شطرنج) ابداع کرد و در ابتدا هم استفاده اصلی این تکنیک در همین مقوله بود. اما این روزا این تکنیک در نظرسنجی ها، بازی های رایانه ای و جاهای مختلفی به کار میره. توی این مطلب قصد داریم به زبان ساده این سیستم رو تشریح کنیم و با پی بردن به مکانیزمش اون رو در بازی های خودمون به کار ببندیم. دقت کنین که این سیستم در بازیهای رایانه ای عموماً در بازی های آنلاین و بازهایی که جنبه رقابت توشون شدیدتره به خدمت گرفته میشه.
هدف سیستم رده بندی الو:
اولین اصل در این سیستم اینه که عملکرد هر بازیکن در یک بازی در واقع چیزی نیست جزء یک پدیده شانسی یا تصادفی. ما در این سیستم رده بندی با نوعی مدلسازی آماری تلاش میکنیم که به مهارت و یا عملکرد بهتر در میان بازیکن ها پی ببریم و اون رو با یک عدد گزارش کنیم. چیزی که برای ما حائز اهمیته تناوب امتیازاته نه صرفاً یک یا چند امتیاز خاص. در واقع چیزی که باعث میشه ما از این سیستم استفاده کنیم اینه که قبل از وقوع بازی یا رویداد میتونیم پیش بینی داشته باشیم که هر بازیکن چقدر ممکنه برنده بازی یا بازنده بازی باشه.
این سیستم در واقع با دو پارامتر اصلی کار میکنه که در ادامه راجع بهشون خواهم گفت.
دو پارامتر (مشخصه) مهم سیستم رده بندی الو:
سیستم رده بندی الو برای هر بازیکن دو پارامتر زیر رو تعیین و تعریف میکنه:
در فرمول بالا عبارت a به معنای میانگین داده ها (امتیازات) است. و عبارات x هم نماینده هر یک از داده ها (امتیازات) هستند. اجازه بدین به عدد به دست اومده بگیم R.
حالا بعد از محاسبه انحراف معیار امتیازات کاربر یا همون R باید به کمک فرمول زیر احتمال برد قبل از بازی رو مشخص کنیم:
![[تصویر: p_a_.png]](http://s4.picofile.com/file/8396568634/p_a_.png)
در رابطه بالا R(B) بیانگر انحراف معیار امتیازات بازیکن B و R(A) بیانگر انحراف معیار امتیازات بازیکن A است. عبارت P(A) نیز بیانگر احتمال برد بازیکن A قبل از به وقوع پیوستن بازی است.
نکته: حاصل P(A) در هر حالتی و با هر تعداد امتیازی باید بین یک تا صفر باشه. هر چقدر این عدد به یک نزدیک تر باشه یعنی احتمال برد بیشتره و هر چقدر این عدد از یک کوچکتر باشه به همون میزان احتمال برد کمتره. دقت داشته باشین اگر P(A) (احتمال برد بازیکن A) و P(B) (احتمال برد بازیکن B) با هم برابر باشه یعنی احتمالاً نتیجه مساوی خواهد بود.
مثال:
فرض کنیم امتیازات حاصل از 6 بازی کاربر (بازیکن) A به شکل زیر باشه:برای محاسبه انحراف معیار امتیازات باید بنویسیم:
حاصل این رابطه میشه 37.41657387 که ما حاصل رو به صورت تقریبی 37 در نظر می گیریم. با این حساب R(A) برابر با 37 شد. حالا برای محاسبه احتمال برد بازیکن A قبل از انجام بازی و با فرض اینکه R(B) برابر با 24 باشه باید بگیم:
![[تصویر: calced_pa.png]](http://s5.picofile.com/file/8396568768/calced_pa.png)
حاصل رابطه بالا میشه 0.48130022207. یعنی احتمال برد بازیکن A این مقداره که میتونیم با P(B) مقایسه اش کنیم و بعد قبل از وقوع بازی پیش بینی کنیم که احتمالاً بازیکن A برنده خواهد بود یا بازیکن B.
* 2) فرمول آپدیت (Update Formula): خُب ما اومدیم و پیش بینی خودمون (احتمال برد بازی قبل از وقوع بازی با توجه به سابقه امتیازات) رو در قسمت قبل محاسبه کردیم. حالا اگر پیش بینی ما بعد از اتمام بازی درست از آب در نیاد باید چیکار کنیم؟ شاید بازیکن قوی تر یا ضعیف تر از میزانی که ما پیش بینی کردیم عمل کرد. در اون صورت باید چیکار کنیم؟
طبیعتاً وقتی عملکرد بازیکن ضعیف تر از آستانه انتظار ما باشه باید امتیازش کاهش پیدا کنه و زمانی که عملکردش فراتر از پیش بینی ما باشه باید امتیازش افزایش پیدا کنه.
باید به کمک فرمول زیر امتیاز کاربر رو در صورت نیاز افزایش یا کاهش بدیم:
![[تصویر: new_rating.png]](http://s5.picofile.com/file/8396568826/new_rating.png)
عبارت score به معنی تعداد بازی برنده شده و P(A) هم بیانگر احتمال برد بازی بازیکن A خواهد بود. عبارت rating هم (میانگین) امتیازات قبلی بازیکن A را بیان می کند.
حالا فرض کنین ما قصد داریم راجع به دو بازیکن A و B قضاوت کنیم. فرض کنیم بازیکن A به طور میانگین امتیازش 1656 و احتمال بردش هم 0.35 باشه و امتیاز بازیکن B برابر با 1763 باشه. بازیکن A طبق محاسباتمون در مرحله قبل بازیکن ضعیف تر محسوب میشد و ظاهراً باید بازی رو می باخت اما الان پیروز مسابقه شده و بازیکن A رو شکست داده و امتیازش به طبع بیشتر شده. حالا باید مقدار امتیاز جدید این بازیکن رو محاسبه کنیم. امتیاز جدید بازیکن A برابر خواهد بود با:
![[تصویر: nra.png]](http://s4.picofile.com/file/8396568876/nra.png)
امتیاز جدید بازیکن A برابر با 1677 خواهد بود و این یعنی امتیاز این بازیکن 21 واحد نسبت به حالت اول افزایش داشته.
نکته: به طور کلی اگر عملکرد یک بازیکن بعد از بازی تقریباً مشابه انتظارات ما قبل از بازی باشه تغییر محسوسی در امتیاز جدید نخواهیم داشت.
جمع بندی و نکات مهم راجع به سیستم رده بندی الو:
به خوبی دریافتیم که این سیستم رده بندی به ما کمک میکنه تا پیشرفت رو شناسایی کنیم و در واقع بازتابی راستین و حقیقی از مهارت رو آنالیز و تجزیه و تحلیل کنیم. مسئله مهمی که هست اینه که این سیستم بر پایه جمعیت کار میکنه. یعنی اگر شما امروز امتیاز 1800 رو کسب کنین این امتیاز با امتیاز مشابه ای که در چند ساعت آینده یا چند سال آینده کسب خواهید کرد متفاوت خواهد بود و معنای 1800 چند ساعت یا چند سال پیش رو نخواهد داشت. پس با این حساب حتی اگر در مهارت بازیکن ثبات وجود داشته باشه و مهارت بازیکن به همون شکل سابق بمونه ممکنه امتیازش بالا و پایین بره و همونطور که گفتیم عملکرد بازیکن چیزی نیست جز یک پدیده شانسی یا تصادفی.
امیدوارم این مطلب براتون مفید واقع شده باشه...
مطلبی که مطالعه کردین در واقع تلاش حقیر برای ساده سازی هر چه بیشتر الگوریتم رده بندی الو بود که در حد خودم تلاش کردم اون رو به زبان ساده و به طور خلاصه منتقل کنم. بدون شک با داشتن زمینه ریاضی در مباحثی مثل توابع و آمار و احتمال درک این سیستم ساده تر خواهد بود.
در پایان خوشحال میشم که نظراتتون رو به بنده در ادامه گوشزد کنین و اگر جایی ایرادی بود یا درست بیان نشده بود به بنده اطلاع بدین.
با آرزوی بهترین ها...
سلام دوستان امیدوارم حالتون خوب باشه...
شاید راجع به سیستم رده بندی الو (Elo Rating System) شنیده باشید. وجه تسمیه نام این سیستم در اصل به افتخار مبدعش یعنی آرپاد آلو هست. آقای آرپاد اِلو این سیستم رده بندی رو برای رده بندی بازیکنان ورزشی (به خصوص شطرنج) ابداع کرد و در ابتدا هم استفاده اصلی این تکنیک در همین مقوله بود. اما این روزا این تکنیک در نظرسنجی ها، بازی های رایانه ای و جاهای مختلفی به کار میره. توی این مطلب قصد داریم به زبان ساده این سیستم رو تشریح کنیم و با پی بردن به مکانیزمش اون رو در بازی های خودمون به کار ببندیم. دقت کنین که این سیستم در بازیهای رایانه ای عموماً در بازی های آنلاین و بازهایی که جنبه رقابت توشون شدیدتره به خدمت گرفته میشه.
هدف سیستم رده بندی الو:
اولین اصل در این سیستم اینه که عملکرد هر بازیکن در یک بازی در واقع چیزی نیست جزء یک پدیده شانسی یا تصادفی. ما در این سیستم رده بندی با نوعی مدلسازی آماری تلاش میکنیم که به مهارت و یا عملکرد بهتر در میان بازیکن ها پی ببریم و اون رو با یک عدد گزارش کنیم. چیزی که برای ما حائز اهمیته تناوب امتیازاته نه صرفاً یک یا چند امتیاز خاص. در واقع چیزی که باعث میشه ما از این سیستم استفاده کنیم اینه که قبل از وقوع بازی یا رویداد میتونیم پیش بینی داشته باشیم که هر بازیکن چقدر ممکنه برنده بازی یا بازنده بازی باشه.
این سیستم در واقع با دو پارامتر اصلی کار میکنه که در ادامه راجع بهشون خواهم گفت.
دو پارامتر (مشخصه) مهم سیستم رده بندی الو:
سیستم رده بندی الو برای هر بازیکن دو پارامتر زیر رو تعیین و تعریف میکنه:
- * 1) احتمال برد قبل از بازی (Possibilaty of Winning): در واقع این سیستم رده بندی قبل از به وقوع پیوستن بازی با توجه به تناوب و سابقه امتیازات هر بازیکن یک حدس از برد یا باخت بازیکن خواهد داشت. برای محاسبه این پارامتر یا مشخصه باید انحراف معیار داده ها (σ) رو محاسبه کنیم. ما از قبل سابقه امتیازات بازیکن رو به ثبت رسوندیم و حالا میخوایم انحراف معیار امتیازات رو محاسبه کنیم. اگر با آمار آشنا باشین حتماً راجع به واریانس و انحراف معیار داده ها شنیدین. اما اگر آشنایی با این دو اصطلاح ندارین عیبی نداره چون یه عدد گذاری ساده توی فرموله. برای محاسبه انحراف معیار امتیازات هر بازیکن از فرمول زیر استفاده می کنیم:
![[تصویر: sd.png]](http://s4.picofile.com/file/8396568442/sd.png)
حالا بعد از محاسبه انحراف معیار امتیازات کاربر یا همون R باید به کمک فرمول زیر احتمال برد قبل از بازی رو مشخص کنیم:
![[تصویر: p_a_.png]](http://s4.picofile.com/file/8396568634/p_a_.png)
در رابطه بالا R(B) بیانگر انحراف معیار امتیازات بازیکن B و R(A) بیانگر انحراف معیار امتیازات بازیکن A است. عبارت P(A) نیز بیانگر احتمال برد بازیکن A قبل از به وقوع پیوستن بازی است.
نکته: حاصل P(A) در هر حالتی و با هر تعداد امتیازی باید بین یک تا صفر باشه. هر چقدر این عدد به یک نزدیک تر باشه یعنی احتمال برد بیشتره و هر چقدر این عدد از یک کوچکتر باشه به همون میزان احتمال برد کمتره. دقت داشته باشین اگر P(A) (احتمال برد بازیکن A) و P(B) (احتمال برد بازیکن B) با هم برابر باشه یعنی احتمالاً نتیجه مساوی خواهد بود.
مثال:
فرض کنیم امتیازات حاصل از 6 بازی کاربر (بازیکن) A به شکل زیر باشه:
کد:
بازی اول ==> 100
بازی دوم ==> 120
بازی سوم ==> 140
بازی چهارم ==> 180
بازی پنجم ==> 160
بازی ششم ==> 200
![[تصویر: formula1.png]](http://s4.picofile.com/file/8396568684/formula1.png)
![[تصویر: calced_pa.png]](http://s5.picofile.com/file/8396568768/calced_pa.png)
حاصل رابطه بالا میشه 0.48130022207. یعنی احتمال برد بازیکن A این مقداره که میتونیم با P(B) مقایسه اش کنیم و بعد قبل از وقوع بازی پیش بینی کنیم که احتمالاً بازیکن A برنده خواهد بود یا بازیکن B.
* 2) فرمول آپدیت (Update Formula): خُب ما اومدیم و پیش بینی خودمون (احتمال برد بازی قبل از وقوع بازی با توجه به سابقه امتیازات) رو در قسمت قبل محاسبه کردیم. حالا اگر پیش بینی ما بعد از اتمام بازی درست از آب در نیاد باید چیکار کنیم؟ شاید بازیکن قوی تر یا ضعیف تر از میزانی که ما پیش بینی کردیم عمل کرد. در اون صورت باید چیکار کنیم؟
طبیعتاً وقتی عملکرد بازیکن ضعیف تر از آستانه انتظار ما باشه باید امتیازش کاهش پیدا کنه و زمانی که عملکردش فراتر از پیش بینی ما باشه باید امتیازش افزایش پیدا کنه.
باید به کمک فرمول زیر امتیاز کاربر رو در صورت نیاز افزایش یا کاهش بدیم:
![[تصویر: new_rating.png]](http://s5.picofile.com/file/8396568826/new_rating.png)
عبارت score به معنی تعداد بازی برنده شده و P(A) هم بیانگر احتمال برد بازی بازیکن A خواهد بود. عبارت rating هم (میانگین) امتیازات قبلی بازیکن A را بیان می کند.
حالا فرض کنین ما قصد داریم راجع به دو بازیکن A و B قضاوت کنیم. فرض کنیم بازیکن A به طور میانگین امتیازش 1656 و احتمال بردش هم 0.35 باشه و امتیاز بازیکن B برابر با 1763 باشه. بازیکن A طبق محاسباتمون در مرحله قبل بازیکن ضعیف تر محسوب میشد و ظاهراً باید بازی رو می باخت اما الان پیروز مسابقه شده و بازیکن A رو شکست داده و امتیازش به طبع بیشتر شده. حالا باید مقدار امتیاز جدید این بازیکن رو محاسبه کنیم. امتیاز جدید بازیکن A برابر خواهد بود با:
![[تصویر: nra.png]](http://s4.picofile.com/file/8396568876/nra.png)
امتیاز جدید بازیکن A برابر با 1677 خواهد بود و این یعنی امتیاز این بازیکن 21 واحد نسبت به حالت اول افزایش داشته.
نکته: به طور کلی اگر عملکرد یک بازیکن بعد از بازی تقریباً مشابه انتظارات ما قبل از بازی باشه تغییر محسوسی در امتیاز جدید نخواهیم داشت.
جمع بندی و نکات مهم راجع به سیستم رده بندی الو:
به خوبی دریافتیم که این سیستم رده بندی به ما کمک میکنه تا پیشرفت رو شناسایی کنیم و در واقع بازتابی راستین و حقیقی از مهارت رو آنالیز و تجزیه و تحلیل کنیم. مسئله مهمی که هست اینه که این سیستم بر پایه جمعیت کار میکنه. یعنی اگر شما امروز امتیاز 1800 رو کسب کنین این امتیاز با امتیاز مشابه ای که در چند ساعت آینده یا چند سال آینده کسب خواهید کرد متفاوت خواهد بود و معنای 1800 چند ساعت یا چند سال پیش رو نخواهد داشت. پس با این حساب حتی اگر در مهارت بازیکن ثبات وجود داشته باشه و مهارت بازیکن به همون شکل سابق بمونه ممکنه امتیازش بالا و پایین بره و همونطور که گفتیم عملکرد بازیکن چیزی نیست جز یک پدیده شانسی یا تصادفی.
امیدوارم این مطلب براتون مفید واقع شده باشه...
مطلبی که مطالعه کردین در واقع تلاش حقیر برای ساده سازی هر چه بیشتر الگوریتم رده بندی الو بود که در حد خودم تلاش کردم اون رو به زبان ساده و به طور خلاصه منتقل کنم. بدون شک با داشتن زمینه ریاضی در مباحثی مثل توابع و آمار و احتمال درک این سیستم ساده تر خواهد بود.
در پایان خوشحال میشم که نظراتتون رو به بنده در ادامه گوشزد کنین و اگر جایی ایرادی بود یا درست بیان نشده بود به بنده اطلاع بدین.
با آرزوی بهترین ها...