Я прогнозирую будущее. Нет, я не предсказатель. Я специалист по обработке данных. Звучит подозрительно, не так ли? На самом деле предсказать будущее не в силах никто – это вам не «Особое мнение» Спилберга. Но вероятности и сценарии, по которым развиваются события, вполне реальны.
Я уже писал о данных и использовании аналитики в играх и затронул вопрос прогнозной аналитики. В этой и последующих статьях я расскажу об этом подробнее.
![](https://habrastorage.org/r/w780q1/files/407/c26/297/407c26297d4c46e2a50e2817467ff812.jpg)
Аналитика Big Data далеко шагнула вперед, и теперь действительно можно достаточно точно предсказывать поведение пользователя. Поэтому я могу проводить исследования с использованием методик социологии и информатики.
Прогнозирование в игровой индустрии означает возможность предсказывать действия игрока для разработки стратегии, улучшения продукта, сохранения ценных игроков и применение новых способов монетизации.
Но я немного забегаю вперед. Давайте сперва рассмотрим основы прогнозного моделирования, а также разберемся, как и почему оно работает.
Если не углубляться в детали, понять принцип работы прогнозного моделирования достаточно просто. В качестве примера возьмем компьютерные игры. Представьте, что вы записываете и отслеживаете всё, что происходит в игре, и со временем ваш компьютер начинает улавливать закономерности. Какие-то сценарии повторяются, какие-то – нет. Когда программа обнаруживает повторяющиеся сценарии, она «заучивает» их и ожидает повторения, а затем строит прогнозы относительно следующего сценария.
К примеру, если сценарий A-B-C-D повторяется раз за разом, в какой-то момент программа начнет распознавать его. Как только это произойдет, вы можете дать системе команду сделать прогноз: при выполнении сценария A-B-C программа спрогнозирует, какой элемент появится следующим (в нашем случае это, конечно, будет D). Кроме того, программа может просчитать, насколько точным является подобный прогноз. На месте D может быть любой элемент, важный для дизайна, удержания пользователей или монетизации. Представьте, что D – это уход из игры, завершение уровня или покупка в магазине.
Как такое возможно и почему это важно? Допустим, за последовательностью A-B-C не всегда идет элемент D, и мы периодически получаем последовательность A-B-C-X. То есть чем больше данных может обработать алгоритм, тем точнее он определяет вероятность и тем полнее может ответить на вопрос, как часто сбывался прогноз.
Вот и всё. Это и есть прогнозирование. Если говорить о точности подобных прогнозов, то её обеспечивает использование научных методик. Существует несколько тестов, которые специалисты по обработке данных используют для проверки прогнозных моделей. Помните, что под проверкой подразумевается скорее «да, эта модель сработала», а не «я могу предсказывать будущее и знаю, что завтра она сработает». Если ничего не меняется, почему бы ей не сработать завтра? Сбой происходит в том случае, когда «завтра» отличается от предполагаемого варианта развития событий. Если случается теракт или заканчивается учебный год, наши предположения могут оказаться неверными, и поэтому мы не сможем спрогнозировать дальнейшие события. И если конец учебного года еще можно вписать в повторяющийся сценарий, то с терактом это, как правило, не работает.
Один из распространенных способов проверки правильности – перекрестная проверка. Работает она следующим образом: программа разбивает огромный массив данных (игровых данных, например) на две равные части. Затем она берет первую часть, анализирует её, ищет повторяющиеся сценарии и строит модель. В итоге мы получаем формулу: сценарий A-B-C, после которого в 75 % случаев следует элемент D. После этого программа проверяет точность модели относительно второй, необработанной половины данных. Если во второй части сценарий A-B-C-D также происходит в 75 % случаев, мы можем считать, что прогноз получился достаточно точным. По сути, мы уверены в этом прогнозе на 75 %, то есть 75 % – это степень достоверности.
Почему не 100 %? Утверждение, что невозможно быть уверенным на 100 %, напоминает о курсе статистики в вузе. Но, если мы говорим о точности прогнозирования, причины сомневаться в абсолютной точности несколько иные. Поскольку мы пытаемся спрогнозировать поведение человека в реальном мире, нам приходится принимать во внимание некоторые факторы, которые программа учесть не может. Например, мы можем заметить, что Джон по утрам покупает большой кофе, и предположить, что он сделает то же самое завтра. Всё просто, верно? Но вдруг случится что-то, что помешает ему купить кофе? Например, бедняга Джон попадет в аварию? Мы никак не могли это предположить и уж точно не закладывали такую возможность в модель, но это еще не означает, что наша модель неправильная. Она просто неполная, то есть не на 100 % точная.
Есть еще одна причина, по которой мы не считаем прогнозные модели на 100 % точными: всяким псевдоученым ничего не стоит обмануть систему. К примеру, они включают в свой прогноз всех без исключения пользователей, не учитывая ложноположительные и ложноотрицательные результаты. Это противоречит научному подходу – кто угодно может включить всех игроков в модель, после чего спрогнозировать, что завтра каждый из них сделает покупку на $10. Поскольку прогноз относится ко всей аудитории, точность прогнозирования того, какие же игроки сделают покупку, будет равна 100 %. Тем не менее, прогнозирование поведения большей части игроков будет некорректным.
Подобные случаи бросают тень на прогнозную аналитику и встречаются намного чаще, чем следовало бы. Поэтому для уверенности в точности прогноза нам необходимо доказательство, которым может служить «индекс F», хотя есть и другие метрики, достойные внимания. Расчет этого индекса производится так: берутся показатели с поправкой на ложноположительный и ложноотрицательный результаты, а затем из них выводится среднее значение. Результат выражен в процентах и имеет высокую степень достоверности.
Подделать его невозможно, поэтому он хорошо отсеивает результаты, полученные путем сфабрикованного прогнозирования. Игры – хороший источник данных, но высокий индекс F можно получить, только зная, какие переменные включать в анализ. К слову, программисты обычно не очень разбираются в этом. Социологи разбираются, но у них, как правило, нет полного понимания технических аспектов. Таким образом, самое правильное решение – объединить оба подхода, чем и занимаются успешные специалисты. К примеру, в индустрии телекоммуникаций хороший индекс F составляет 40 %. В игровой индустрии можно добиться лучшего результата, ведь мы располагаем более наглядными данными. Хорошим считается индекс, равный 50–70 %, выше – это почти невероятно. Помните: индекс F получается путем усреднения двух показателей и не является чистым процентным соотношением. По сути, это очень примерный показатель.
В конечном счете степень достоверности является ключевым элементом прогнозной модели. Вам нужно знать, насколько уверенно вы можете принимать решения на основании своего прогноза с учетом экономической модели проекта и степени риска. Преимущество этих индексов в том, что они дают доступ к научным показателям – прозрачности и доказуемости. Никто не поверит вам на слово. Пусть данные говорят сами за себя. Прислушивайтесь к ним – и сможете увидеть реальную ситуацию, а не желаемую картину.
Я уже писал о данных и использовании аналитики в играх и затронул вопрос прогнозной аналитики. В этой и последующих статьях я расскажу об этом подробнее.
![](https://habrastorage.org/files/407/c26/297/407c26297d4c46e2a50e2817467ff812.jpg)
Аналитика Big Data далеко шагнула вперед, и теперь действительно можно достаточно точно предсказывать поведение пользователя. Поэтому я могу проводить исследования с использованием методик социологии и информатики.
Прогнозирование в игровой индустрии означает возможность предсказывать действия игрока для разработки стратегии, улучшения продукта, сохранения ценных игроков и применение новых способов монетизации.
Но я немного забегаю вперед. Давайте сперва рассмотрим основы прогнозного моделирования, а также разберемся, как и почему оно работает.
Если не углубляться в детали, понять принцип работы прогнозного моделирования достаточно просто. В качестве примера возьмем компьютерные игры. Представьте, что вы записываете и отслеживаете всё, что происходит в игре, и со временем ваш компьютер начинает улавливать закономерности. Какие-то сценарии повторяются, какие-то – нет. Когда программа обнаруживает повторяющиеся сценарии, она «заучивает» их и ожидает повторения, а затем строит прогнозы относительно следующего сценария.
К примеру, если сценарий A-B-C-D повторяется раз за разом, в какой-то момент программа начнет распознавать его. Как только это произойдет, вы можете дать системе команду сделать прогноз: при выполнении сценария A-B-C программа спрогнозирует, какой элемент появится следующим (в нашем случае это, конечно, будет D). Кроме того, программа может просчитать, насколько точным является подобный прогноз. На месте D может быть любой элемент, важный для дизайна, удержания пользователей или монетизации. Представьте, что D – это уход из игры, завершение уровня или покупка в магазине.
Как такое возможно и почему это важно? Допустим, за последовательностью A-B-C не всегда идет элемент D, и мы периодически получаем последовательность A-B-C-X. То есть чем больше данных может обработать алгоритм, тем точнее он определяет вероятность и тем полнее может ответить на вопрос, как часто сбывался прогноз.
Вот и всё. Это и есть прогнозирование. Если говорить о точности подобных прогнозов, то её обеспечивает использование научных методик. Существует несколько тестов, которые специалисты по обработке данных используют для проверки прогнозных моделей. Помните, что под проверкой подразумевается скорее «да, эта модель сработала», а не «я могу предсказывать будущее и знаю, что завтра она сработает». Если ничего не меняется, почему бы ей не сработать завтра? Сбой происходит в том случае, когда «завтра» отличается от предполагаемого варианта развития событий. Если случается теракт или заканчивается учебный год, наши предположения могут оказаться неверными, и поэтому мы не сможем спрогнозировать дальнейшие события. И если конец учебного года еще можно вписать в повторяющийся сценарий, то с терактом это, как правило, не работает.
Один из распространенных способов проверки правильности – перекрестная проверка. Работает она следующим образом: программа разбивает огромный массив данных (игровых данных, например) на две равные части. Затем она берет первую часть, анализирует её, ищет повторяющиеся сценарии и строит модель. В итоге мы получаем формулу: сценарий A-B-C, после которого в 75 % случаев следует элемент D. После этого программа проверяет точность модели относительно второй, необработанной половины данных. Если во второй части сценарий A-B-C-D также происходит в 75 % случаев, мы можем считать, что прогноз получился достаточно точным. По сути, мы уверены в этом прогнозе на 75 %, то есть 75 % – это степень достоверности.
Почему не 100 %? Утверждение, что невозможно быть уверенным на 100 %, напоминает о курсе статистики в вузе. Но, если мы говорим о точности прогнозирования, причины сомневаться в абсолютной точности несколько иные. Поскольку мы пытаемся спрогнозировать поведение человека в реальном мире, нам приходится принимать во внимание некоторые факторы, которые программа учесть не может. Например, мы можем заметить, что Джон по утрам покупает большой кофе, и предположить, что он сделает то же самое завтра. Всё просто, верно? Но вдруг случится что-то, что помешает ему купить кофе? Например, бедняга Джон попадет в аварию? Мы никак не могли это предположить и уж точно не закладывали такую возможность в модель, но это еще не означает, что наша модель неправильная. Она просто неполная, то есть не на 100 % точная.
Есть еще одна причина, по которой мы не считаем прогнозные модели на 100 % точными: всяким псевдоученым ничего не стоит обмануть систему. К примеру, они включают в свой прогноз всех без исключения пользователей, не учитывая ложноположительные и ложноотрицательные результаты. Это противоречит научному подходу – кто угодно может включить всех игроков в модель, после чего спрогнозировать, что завтра каждый из них сделает покупку на $10. Поскольку прогноз относится ко всей аудитории, точность прогнозирования того, какие же игроки сделают покупку, будет равна 100 %. Тем не менее, прогнозирование поведения большей части игроков будет некорректным.
Подобные случаи бросают тень на прогнозную аналитику и встречаются намного чаще, чем следовало бы. Поэтому для уверенности в точности прогноза нам необходимо доказательство, которым может служить «индекс F», хотя есть и другие метрики, достойные внимания. Расчет этого индекса производится так: берутся показатели с поправкой на ложноположительный и ложноотрицательный результаты, а затем из них выводится среднее значение. Результат выражен в процентах и имеет высокую степень достоверности.
Подделать его невозможно, поэтому он хорошо отсеивает результаты, полученные путем сфабрикованного прогнозирования. Игры – хороший источник данных, но высокий индекс F можно получить, только зная, какие переменные включать в анализ. К слову, программисты обычно не очень разбираются в этом. Социологи разбираются, но у них, как правило, нет полного понимания технических аспектов. Таким образом, самое правильное решение – объединить оба подхода, чем и занимаются успешные специалисты. К примеру, в индустрии телекоммуникаций хороший индекс F составляет 40 %. В игровой индустрии можно добиться лучшего результата, ведь мы располагаем более наглядными данными. Хорошим считается индекс, равный 50–70 %, выше – это почти невероятно. Помните: индекс F получается путем усреднения двух показателей и не является чистым процентным соотношением. По сути, это очень примерный показатель.
В конечном счете степень достоверности является ключевым элементом прогнозной модели. Вам нужно знать, насколько уверенно вы можете принимать решения на основании своего прогноза с учетом экономической модели проекта и степени риска. Преимущество этих индексов в том, что они дают доступ к научным показателям – прозрачности и доказуемости. Никто не поверит вам на слово. Пусть данные говорят сами за себя. Прислушивайтесь к ним – и сможете увидеть реальную ситуацию, а не желаемую картину.