Любой любитель футбола, всматривающийся в турнирную таблицу, рано или поздно осознает относительность очковой системы распределения мест в ней. Случился подобный казус и со мной.
Вот смотрите. Возьмем чемпионат Англии по футболу (Премьер лигу) Сезон 2007-2008.
Астон Вилла выиграла со счетом 2-0 у Челси (игра состоялась в Бирмингеме 02/09/2008), а затем, опять у себя на поле с таким же счетом 03/11/2008 одержал вверх над Дерби Каунти. В итоговой таблице Челси с 85 очками занял в итоге 2-место в турнирной таблице, а Дерби с 11-ю занял 20-е последнее место и покинул класс сильнейших. За обе победы Астон Вилла вписала в свой актив совершенно равнозначные 3 очка. Справедливо? Очевидно, что не справедливо. Очки-то эти совершенно разные.
Чем дольше я задумывался на тему справедливости футбольной турнирной таблицы, тем меньше мне нравилась известная система начисления очков 3-1-0 (или "2-1-0", далекая советская модификация "3-2-1-0", когда за поражение давали 1 очко, а за неявку на игру - 0).
Я пытался искать решение, рассуждая в русле "команда А выиграла у команды С, а команда С выиграла у команды Д, которая выиграла у команды А.". И не мог найти никакого разумного ответа. Вновь возвращался к созерцанию турнирной таблицы. И вновь не мог найти ответа. Ведь кроме исхода существовали еще победы с крупным счетом, ничьи с сильным соперником и проигрыши заведомо слабому клубу. Была еще проблема своего и чужого поля. Кроме того, признаюсь, что анализ комментаторов и газетно-телевизионных специалистов от футбола "на глазок" меня часто раздражал. Я пробовал экспериментировать с различными отношениями фактических футбольных показателей. Например, я использовал следующие отношения:
- (забитые мячи)/(пропущенные мячи);
- (число побед * 2 + число ничьих)/ (число поражений * 2 + число ничьих);
- (число ничьих)/(число игр);
- прочие всевозможные средние показатели.
Я использовал, конечно, и другие соотношения. Но, в основном, они не приносили ответа на терзающий меня вопрос. Следует отметить, что тогда появилась мысль определять показатели не напрямую, а опосредовано – по показателям побежденных команд. Для выявления сильнейшего я для каждой команды суммировал очки всех команд, у которых она выиграла + половину очков команд, с которыми данная команда сыграла в ничью. Получалась дополнительный столбец в таблице, которая очень наглядно характеризовала силу команды и ее турнирные достижения. Это был прообраз "взвешенных очков". Но. Но подсчет велся "в столбик" или "в уме" и довольно скоро я это занятие забросил, тем более с распадом СССР интерес к футболу у меня поневоле снизился, а потребность в хлебе насущном в то смутное время неимоверно возросла.
Прошло время, жизнь стабилизировалась, вернулся интерес к футболу. А потом я и сам вернулся на стадион. Но проблема-то осталась. В конце концов, изнутри вызрела мысль "рейтинг". Спасительное слово, которое часто врывается в нашу жизнь с экранов телевизора и страниц спортивных газет. Но какой рейтинг, как его считать? Единственно знакомым мне рейтингом был рейтинг Эло. Вернее, следует уточнить, что рейтинг Эло был единственным рейтингом (кроме глупого рейтинга ФИФА), о котором я хоть что-то слышал.
Сказано-сделано. В анналах Интернета были найдены "соответствующие" формулы, чуть-чуть "программирования" и начался счет. Первые результаты принесли внутренний восторг. Вот оно. Все считается, все определяется. Выводится турнирная табличка, а рядом с очками - тот самый Эло-рейтинг. Смотри и анализируй.
Одним из первых проверил чемпионат СССР 1988 года. И первое удивление. "Динамо" Киев, усиленное Литовченко и Протасовым, проигравшее чемпионство 1988 года, которое, казалось, само в руки падает. "Динамо" Киев, проигравшее той самой команде, которую, как тогда казалось, они так удачно ограбили. Динамо, укомплектованное под завязку самыми-самыми сильными футболистами Советского союза. Костяк сборной. Команда, на которую работали не только все приведенные выше факторы и обстоятельства. Команда, на стороне которой "играли", вернее, "подыгрывали" почти все украинские клубы высшей лиги. Слабее. И не только "Днепра"! Вы только вдумайтесь! Слабее и московского "Торпедо".
Призадумался. Решил посмотреть, как меняется ситуация из тура в тур. Немного программирования. Все правильно. Действительно к концу чемпионата "Торпедо" Москва было сильнее, чем "Динамо" Киев. Вот рейтинги Эло:
Днепр - 1139,39
Динамо - 1096,67
Торпедо - 1108,73
Так работает рейтинг или нет? Трудный вопрос. Я хорошо помню тот чемпионат. Киев был невероятно силен. Сильнее чем "Торпедо". Не рассчитал силы - это да.
Я решил, что посыл о том, что на старте все команды равны неверен. Принцип, так сказать, "не работает". Оговорюсь. И сейчас, и тогда я был далек от мысли, отслеживать рейтинги команд из года в год. Такой подход представляется ошибочным, я в этом абсолютно уверен. Предпочитаю считать, что каждый год команда начинает с нового уровня. Просто этот уровень нам неизвестен. Что же делать?
Я увидел выход в применении итераций. Все просто. Просчитываю чемпионат и использую полученные данные для следующего прохода. И так из цикла в цикл приближаюсь к "истинному" значению рейтинга. Здесь я допустил ошибку в выборе способа определения начального значения рейтинга на следующем шаге. И рейтинг у меня не сходился. Я бился и так, и этак. Не сходится, и все тут. Сейчас этот недостаток преодолен, а тогда я просто решил, что принцип, положенный в основу расчета Эло-рейтинга не работает применительно к футбольному турниру. И принудительно решил проводить по 20 итераций и на основе полученных данных уже проводить анализ турнирной таблицы.
Получилось так:
Днепр - 1229,07
Динамо - 1158,49
Торпедо - 1172,93
И снова "Торпедо" сильней, чем "Динамо"?!. Внутри турнира я видел, что картина не такая, но итог … итог проделанной работы и полученный результат очевидно неверен. Неудача. Правда, расчет рейтинга по турам выявил и явное достоинство такого подхода. А именно - наглядность. Можно было строить графики, рассуждать о силе команд перед встречей и после этой встречи. О "цене" поединка и т.п. И отложил решение проблемы на будущее. На то время - неудача была явной и настроение - отвратительным.
Через некоторое время я вспомнил о своих стародавних опытах по взвешиванию очков. Принцип до тривиальности прост. Оценка команды по показателям соперников.
Итак рейтинг следовало вычислять так
Rt= ΣОчков побежденные + ½*Σ Очков ничьи
Эту сумму я называю ВО оценкой. Вот знакомая итоговая таблица Чемпионата Англии
Англия, 2007-2008, взвешенные очки
Команды |
Очки |
ВО оценка набранных очков |
Взвешенные очки |
Взвешенные очки (20 итераций) |
Рейтинг ВО-75 |
МЮ |
87 |
1461,50 |
88,11 |
87,60 |
102,46 |
Челси |
85 |
1402,00 |
84,52 |
84,36 |
98,67 |
Арсенал |
83 |
1395,00 |
84,10 |
83,23 |
97,34 |
Ливерпуль |
76 |
1286,50 |
77,56 |
76,84 |
89,87 |
Эвертон |
65 |
972,00 |
58,60 |
58,98 |
68,98 |
Астон Вилла |
60 |
1001,50 |
60,37 |
60,41 |
70,66 |
Блекберн Роверз |
59 |
971,50 |
58,57 |
57,34 |
67,07 |
Портсмут |
57 |
926,00 |
55,82 |
55,84 |
65,31 |
Манчестер Сити |
55 |
941,50 |
56,76 |
56,54 |
66,13 |
Вест Хэм Юн. |
49 |
803,00 |
48,41 |
48,89 |
57,19 |
Тоттенхем Хотспур |
46 |
784,50 |
47,29 |
47,04 |
55,02 |
Ньюкасл Юнайтед |
43 |
689,50 |
41,57 |
41,67 |
48,73 |
Миддлсбро |
42 |
746,50 |
45,00 |
45,40 |
53,10 |
Уиган Атлетик |
40 |
662,50 |
39,94 |
40,30 |
47,13 |
Сандерленд |
39 |
559,50 |
33,73 |
34,64 |
40,51 |
Болтон Уондерерс |
37 |
609,50 |
36,74 |
37,10 |
43,40 |
Ридинг |
36 |
570,00 |
34,36 |
34,63 |
40,50 |
Фулхем |
36 |
636,50 |
38,37 |
38,16 |
44,63 |
Бирмингем Сити |
33 |
605,00 |
36,47 |
38,31 |
44,81 |
Дерби Каунти |
11 |
211,00 |
12,72 |
12,72 |
14,87 |
Взвешенные очки находятся довольно тривиальным способом.
Найдем коэффициент привидения
K=(Σ всех очков чемпионата)/(Σ ВО оценки набранных очков чемпионата)
K=(1039)/( 17235)= 16,58806545
Собственно взвешенные очки делением ВО оценки набранных очков каждой команды на коэффициент привидения K.
Ki=(Σ ВО оценкиi) / K
Для МЮ, например, взвешенные очки составят:
ВО1=(1461,50) / 16,59 =88,11
Если теперь для следующего шага вычисления ВО оценки использовать вновь рассчитанные взвешенные очки и устроить итерации, то значение рейтинга можно уточнить. (процесс сходится при числе итераций около 12-ти.)
ВО-75 рейтинг – это оценка близости 75 % рубежа набранных очков (вернее взвешенных).
Для данного чемпионата 75 %=38 игр * 3 * 0,75=85,50 очков.
Для Ман Ю
RtВО-75=87,60/85,50*100=102,46.
Заверяю вас, что Челси (98,67) и Арсенал (97,34) также вполне достойны чемпионства. А вот Ливер на чемпиона уже не тенет . (программный модуль-настройка Football rating V1 позволяет считать рейтинг RtВО-75 и взвешенные очки. Данный подход в Football rating обозначен как способ 1)
Окрыленный успехом я начал развивать данных рейтинг дальше. Идея была такой. А что, если суммировать не очки команд, у которых выиграли, а идти вглубь и подсчитывать очки команд, у которых выиграла команда, у которой мы выиграли. Если мы победили команду Тоттенхем, то мы суммируем все очки команд, у которых Тоттенхем выиграл и добавляем половину всех очков команд, с которыми Тоттенхем сыграл в ничью. Подобное производим и с командами, с которыми Тоттенхем сыграл в ничью, только уменьшаем сумму в 2 раза. (настройка Football rating V1 позволяет считать этот рейтинг, он называется – способ 2)
Чуда не произошло, хотя я и надеялся . Результат получался такой же, как и при первом способе, только сходимость процесса значительно ускорилась. Результат по способу 2 сходился уже после 2-х итераций. Поэтому дальше "вглубь" я лезть не стал (подсчитывать очки команд, у которых выиграла команда, у которой, в свою очередь выиграла команда, у которой мы выиграли). Подозреваю, что результат не изменится и проверять не стану.
Кстати, вернемся к чемпионату СССР 1988 года и проверим его "взвешенными очками".
Днепр 45,66
Динамо 43,07
Торпедо 43,29
Опять относительная неудача? Или удача? Результаты Динамо и Торпедо практически равны.Торпедо сильнее на "игольчатое ушко". Дальше во мне возникло слово рейтинг (все, что я описывал выше и называл тогда и сейчас "взвешенными очками" имел в то время еще рабочее название "футбольный критерий").
Я начал "лопатить" Интернет. Нашел сайт Е.Потемкина. Сначала взялся за Р-рейтинг. Благо надо было поменять только одну подпрограмму. Метод итераций к тому времени, естественно, был признан единственно верным и применялся уже без раздумий.
Результат расчета Р-рейтинг:
Днепр - 2368,15
Динамо -1762,52
Торпедо - 1992,08
И здесь неудача.
Однако на сайте автора Р-рейтинга основное внимание уделялось так называемому Е-рейтингу. Поначалу я скептически отнесся к составлению систем уравнений. Но потом принял идею.
Какое-то время потратил. И вот результат расчета Е-рейтинга (силы).
Днепр - 252,74
Динамо - 208,73
Торпедо - 201,03
Браво Евгению Потемкину! Троекратное браво. Рейтинг его имени, рейтинг "силы" работает! Но каково "Торпедо"! Каков по накалу чемпионат 1988 года! Сила Киева составляла 82,6 % силы Днепра, а сила "Торпедо" – аж 79,5 % силы чемпиона. Впечатляет. Вопрос благополучно разрешился.
Тогда я еще ничего не знал (и не подозревал) о недостатках Е-рейтинга и о том, что разрыв в силе команд несколько иной. Сила Киева составляла 77,7 % силы Днепра, а сила "Торпедо" – 69,9 % силы чемпиона. И разрыв между Киевом и Торпеда по Е-методике несколько больше, чем я тогда вычислял. Но все равно. Впечатляло. Тогда.
Меня начало распирать от гордости.
Вот.
Я могу просчитать истинную силу команды. А при помощи итерационных Эло-рейтинга и Р-рейтинга даже проследить турнирный путь команд, перипетии борьбы.
Круто.
Я всесилен, я все про все команды знаю.
Оказывается - так мало надо было сделать.
Просто расписать и решить систему уравнений.
Простых алгебраических линейных уравнений.
Уровень 1-го семестра ВУЗа.
Прошло, какое-то время. Все было хорошо, но я стал испытывать некоторые "неудобства" с интерпретацией чисел.
Уж очень нелинейно распределялись рейтинги команд относительно занятых ими мест при использовании Е-рейтинга.
Убедитесь в этом сами, построив график зависимости Е-рейтинга от занятого места. А теперь замените рейтинг на набранные командами очки.
У Е-рейтинга отмечается существенный наклон графика в районе команд-лидеров.
В графике с очками этого нет. Такой "излом" заложен в самом рейтинге.
Давайте разбираться. Формально рейтинг команды определяется следующим образом
Rt= (ΣRt побежденные + ½*Σ Rt ничьи)/(Nпоражений + ½*N ничьи)
Для лидеров оба фактора действуют в одном направлении. Давай те проведем мыслительный эксперимент. Команда сыграла 20 игр, 15 выиграла, 5 проиграла.
Будем считать, что средний рейтинг соперников был 100 единиц.
Rt=(100*15)/5=300.
Если команда выиграет не 15, а 16 игр, то
Rt=(100*16)/4=400.
Невероятный шаг, не правда ли, господа счетоводы? Целых 100 % прироста рейтинга от среднего рейтинга турнира и только от одной игры. Причем прирост в сумме отобранных рейтингов составляет только 6,67%, а уменьшение количества потерь составит 20%.
Для аутсайдеров все в точности, да наоборот
Предположим есть команда, которая выиграла только 2 игры из 20. Продолжаем считать, что средний рейтинг соперников был 100 единиц.
Rt=(100*2)/18=11,11.
Если бы этой команде удалось выиграть 3 игры, мы бы имели
Rt=(100*3)/17= 17,65.
Целых всего-то 6,54 % прироста рейтинга от среднего рейтинга турнира. Это для рейтинга силы. Рейтинг слабости поступает с лидером и аутсайдером совершенно аналогично. Для лидера рейтинг склонности к поражениям растет медленно, а для аутсайдера – быстро.
Вот это несогласование очков и величины рейтингов меня сильно беспокоит. Я называю это пособничеством со стороны рейтинга "сильным" командам.
Второй момент состоял в том, что для определения турнирного лидера следует пользоваться не одним Е-рейтингом силы, а разностью рейтингов силы и слабости. При этом мы получим четкое деление на команды-доноры и команды- реципиенты. Сумма рейтингов команд реципиентам равна сумме рейтингов команд донорам с обратным знаком. Это свойство можно использовать для проверки правильности вычислений.
Итак для нашей тройки мы имеем следующую турнирную силу команд
Днепр = 252,74 - 23,43 =229,31
Динамо = 208,73 - 30,48 =178,25
Торпедо = 201,03 - 40,69 =160,34
Тут я вспомнил "взвешивание очков".
И решил, что собственно могу легко произвести Е-преобразование взвешенных очков (Обратное преобразование также вполне возможно, но нет в этом никакого смысла).
Вот формула:
BOEi=BOI/(Nпоражений + ½*Nничьих) *Nигр
Для святой троицы
Днепр BOE =45,66/(2+10/2)*30=195,67
Динамо BOE = 43,07/(4+9/2)*30=152,02
Торпедо BOE = 43,29/(5+8/2)*30=144,29
Вот вам, бабушка, и Юрьев день.
И я запутался окончательно.
А если вместо взвешенных очков поставить "табличные" и произвести Е-преобразование обычных очков?
Днепр OE =46/(2+10/2)*30=274,29
Динамо OE = 43/(4+9/2)*30=211,76
Торпедо OE = 42/(5+8/2)*30=196,67
Чувствуете родовое происхождение?
Так кто сильнее, Динамо, или Торпедо? Я опять призадумался. Что же такое этот Е-рейтинг. Дает ли они нам информацию о силе/слабости команд? Дает. Но не точную оценку, а относительную. То есть мы имеем величину, которая коррелирует с силой/слабостью команды, оценивает ее, но не вполне точно. Давайте возьмем рейтинг силы. Фактически это удельный, вернее сказать - относительный показатель. Показатель успеха, отнесенный к числу потерь команды. А рейтинг слабости – это относительный показатель неудачи, отнесенный к числу побед команды. В общем, вывод один. Для выяснения кто же сильнее, Динамо или Торпедо нам прийдется создавать иной способ расчета рейтинга. Сразу оговорюсь, что все ниже приведенные рассуждения относятся к закрытому спортивному турниру, в котором: - число участников не изменяется по ходу турнира; - все соперники проводят одинаковое, или примерно одинаковое количество встреч между собой; - преимущества своего поля игнорируется или компенсируется игрой на выезде; - влияние не футбольных (не спортивных) факторов как то: "благотворное" влияние Суркисов и прочих стороженков, недоброжелательное украинское судейство, покупные "договорняки" и т.п. игнорируется.
Чего мы хотим от нового рейтинга?
- Рейтинг при расчете должен учитывать и победы и поражения одновременно.
- Рейтинг должен быть более "линейным" в своем изменении от команды к команде, чем Е-рейтинг.
- Расчет рейтинга должен быть обеспечен уже с первых встреч.
- Рейтинг должен иметь в основе простой физический (геометрический и т.п.) смысл.
Приступим. Кстати, мы будем строить рейтинг, зависящий от исходов встреч соперников. Давайте представим себе некие весы типа применяемых для взвешивания пары килограмм овощей на рынке. На левую тарелку весов мы после каждой встречи фигурально будем складывать условную гирьку рейтинга команды (на гирьке пока написан вопросительный знак, числа нет). На правую тарелку весов будем фигурально ставить условную гирьку противовеса (весом в условный килограмо-рейтинг, или просто весом в условную единицу). Количество рейтинговых гирек =количеству гирек противовесов= количеству игр, проведенных командой. Дальше мы начали играть турнир. Каждая встреча, закончившаяся победой рассматриваемой команды, приводит к росту её рейтинга посредством помещения рейтинга проигравшей команды на правую чашу весов. Каждая встреча, закончившаяся поражением рассматриваемой команды, приводит к снижению её рейтинга посредством помещения рейтинга выигравшей команды на левую чашу весов. Ничья приводит к одновременному размещению половинки рейтинга соперника и на левой и на правой чаше весов. Мы пришли к системе линейных из N уравнений следующего вида:
где
b – коэффициент, равный количеству игр, проведенных i-й командой;
a – коэффициент встречь a= количество побед минус количество поражений (во взаимных встречах 2-х команд);
C – свободный член (те самые весовые гирьки, которые мы укладывали на правую чашу весов). В простейшем случае C= количеству игр, проведенных i-й командой;
Xi рейтинг i-й команды.
Довайте попробуем придать свободному члену C какое либо значение. Например положим, что Сi =-100*K/2 (K - количество игр, проведенных i-й командой в турнире). Для начала счета этого вполне хватит.
Итак, считаем и смотрим на результат.
Днепр = 69,87
Динамо = 65,95
Торпедо = 66,24
Выходит, что в смысле силы на протяжении всего турнира все таки сильнее в 1988 году было "Торпедо", а не "Динамо" Киев. Не ожидал. Надо придумать название новому рейтингу. С выдумкой у меня не очень. Каюсь.Поскольку при создании системы уравнений мы использовали мы использовали процедуру виртуального взвешивания, нареку-ка я эту процедуру "виртуальным взвешиванием" а рейтинг - BP-рейтингом. Кстати. И по полученным результатам, и по своей сути данный рейтинг близок процедуре "взвешивания" очков. Ошибка, полученная для взвешенных очков по сравнению с BP-рейтингом не превысила 6,6 % (Кайрат), а ошибки в расстановке команд по силе были только в парах Локомотив - Зенит и Нефтчи - Кайрат.
Продолжение, наверное, следует... В ожидании критики...
07.01.2009 г.
Вернутся назад