Автор книги: Василий Сабиров
Жанр: Отраслевые издания, Бизнес-Книги
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 13 (всего у книги 20 страниц)
Вашему вниманию предлагается подробное описание алгоритма расчета сезонности (на примере нахождения сезонности по дням недели).
Очистка данных от выбросов
Предварительно исходные данные нужно очистить от выбросов – нетипично высоких или низких значений показателя, которые находятся за пределами ожидаемого диапазона. Часто на графике такие данные выглядят как значительные пики или, наоборот, падения практически до нуля, которые в несколько раз превосходят обычные значения.
Причиной выброса может быть пик продаж в праздничный день, сбой в работе системы трекинга или любой другой разовый фактор, который так или иначе повлиял на метрику.
Почему нужно очищать данные от выбросов? Дело в том, что эти значения искажают результаты расчетов и могут привести к ошибкам в прогнозе. Некоторые статистические показатели, такие как стандартное отклонение и среднее арифметическое, зависимы от выбросов, и, включив их в расчет, можно сделать некорректные выводы.
Поэтому для очистки данных существует ряд подходов, которые позволяют оценить, какое подозрительно высокое или низкое значение можно считать выбросом, а какое таковым не является.
Подробнее на очистке от выбросов останавливаться мы не будем, ведь сейчас наша основная задача – это расчет сезонности. Тем не менее при анализе данных нужно всегда о ней помнить.
Расчет автокорреляции
Итак, второй этап расчетов, который применяется к уже очищенным данным, – это расчет лага автокорреляции.
Автокорреляция – это зависимость между значениями временного ряда, взятыми со сдвигом. Она используется для выявления тенденций и циклических колебаний данных во временном ряду.
Для ее расчета в Excel существует стандартная функция – КОРРЕЛ (CORREL), которая рассчитывает коэффициент автокорреляции между двумя диапазонами данных. Эти диапазоны и являются аргументами функции и смещены друг относительно друга: если мы ищем коэффициент автокорреляции 1-го порядка, то первый диапазон включает значения временного ряда, начиная с первого и заканчивая предпоследним, а второй диапазон содержит все значения, начиная со второго. Таким образом, мы получаем два диапазона, смещенные друг от друга на один день.
Для поиска коэффициента 2-го порядка диапазоны должны быть смещены на два дня – первый не включает последние два значения временного ряда, второй не включает первые два.
Этим способом мы рассчитываем коэффициенты автокорреляции для семи порядков и находим среди них максимальный. Он и будет показателем того, в какой день автокорреляция наиболее высокая.
Если максимальный коэффициент получился для автокорреляции первого порядка, то это значит, что данный ряд не содержит каких-либо тенденций и зависимостей.
А если этот коэффициент максимален для 7-го порядка, это значит, что ряд содержит циклические колебания с периодичностью в 7 дней.
В нашем примере наибольший коэффициент проявляется как раз для автокорреляции 7-го порядка. Это говорит о том, что в данном временном ряду присутствует недельная сезонность
Расчет коэффициентов линейного тренда
Далее построим тренд для нашего ряда, чтобы впоследствии сделать по нему прогноз и определить, как будет дальше себя вести выбранный показатель.
Существует несколько видов тренда, которыми можно описать метрику (линейный, экспоненциальный, логарифмический, полиномиальный и т. д.). Мы будем использовать линейный, так как он наиболее прост для построения и восприятия, но в то же время хорошо показывает динамику метрики.
Линейный тренд строится по уравнению вида y = ax + b, где a и b – коэффициенты, а x – порядковый номер дня (в примере это колонка D). Для расчета уравнения нужно вычислить два коэффициента.
Сделать это можно также стандартной функцией Excel – ЛИНЕЙН (LINEST), аргументами которой являются два массива данных: исследуемая метрика и порядковые номера дней.
Используя эту формулу как функцию массива (Ctrl + Shift + Enter), мы получаем два коэффициента, которые затем подставим в уравнение.
Линейный тренд годится в большинстве случаев, особенно если в данных нет заметных регулярно повторяемых выбросов.
Построение линии тренда
Для построения линии тренда используем рассчитанные ранее коэффициенты – a и b. Единственным изменяемым параметром уравнения будет х – порядковый номер дня. Благодаря этому линия тренда может быть продлена на несколько дней вперед, в нашем примере это семь дней (столбец I). Так мы получаем дальнейшую динамику изменения метрики.
Расчет коэффициентов сезонности
Следующий шаг для построения прогноза по линейному тренду – расчет коэффициентов сезонности.
Для этого нужно определить отклонение значений метрики от линии тренда (столбец K), а затем найти среднее значение этих отклонений в зависимости от дня цикла. Эти средние значения и есть искомые коэффициенты.
Наложение сезонности на тренд и построение прогноза
Чтобы завершить прогноз, необходимо «наложить» на тренд сезонность.
Для этого нужно умножить каждое значение линии тренда на коэффициент сезонности соответствующего дня (столбец L).
Это приведет график линии тренда к привычному виду – с регулярными колебаниями в зависимости от дня недели.
А так как ранее мы продлили тренд на семь дней за пределы имеющихся данных, эта сезонность распространится и на спрогнозированную часть линии тренда, предоставив таким образом прогноз метрики на ближайшие семь дней.
График из расчетного файла: ярко выражена недельная сезонность на фоне падающего линейного тренда
Зачем нужно знать сезонность
Во-первых, чтобы точнее прогнозировать свою выручку и принимать на основании этих прогнозов более правильные решения. Допустим, не планировать массовую закупку трафика на август, а потерпеть до сентября. Вопрос планирования выручки вообще очень важен, и, пожалуй, в любой компании его решают. Сезонность – один из способов сделать свои прогнозы значительно точнее.
Во-вторых, сезонность можно использовать себе во благо. Если вы знаете, что в декабре у вас будет много пользователей и средний доход на пользователя будет высок, то есть смысл увеличить его, предложив этим «горячим» пользователям холодного месяца более выгодные скидки и запланировав на этот период внутриигровые активности.
Интересный вопрос: можно ли бороться с сезонностью? Допустим, вы знаете, что в июле ARPDAU у вас будет самым низким за год. Нужно ли пытаться повысить его и бомбить пользователей заманчивыми июльскими скидками?
Наш опыт говорит, что бороться с сезонностью бесполезно: если ваш клиент уехал в летний отпуск, то он и будет пребывать в этом отпуске, что бы вы ни делали. Лучше сосредоточиться на том, чтобы мультиплицировать сезонность «хороших» месяцев, увеличивая и без того хороший доход, чем пытаться поднять из мертвых доход «плохих». Еще один вариант: на время сезонного спада увеличивать аудиторию стран, где сезонность ведет себя обратным образом, диверсифицируя таким образом свой доход.
Советы по прогнозированию дохода
Поговорим о каждом способе отдельно, оформив их в виде советов начинающим аналитикам.
Совет 1. ARMA, ARIMAО сезонности мы достаточно много поговорили в предыдущем разделе, а здесь давайте обратимся к методам ARMA и ARIMA.
Эти модели являются развитием модели авторегрессии. Собственно, авторегрессия входит в них, и AR в их названиях как раз ее и обозначает. А MA обозначает скользящее среднее (Moving Average), и это говорит нам о том, что данные модели еще глубже проникают в данные, лучше распознавая их внутренние закономерности.
Пример реализации модели ARIMA в пакете Statistica
В Excel реализовать их уже не так просто (хотя уже есть соответствующие надстройки), но по-прежнему возможно. Лучше всего, конечно, воспользоваться статистическими инструментами. Я бы рекомендовал SPSS или Statistica, но моя рекомендация базируется всего лишь на опыте личного использования. Также, конечно, есть соответствующие пакеты на R и Python.
Как правило, ARMA и ARIMA дают прогнозы более точные, чем простая авторегрессия, но прирост точности уже не так велик, как у авторегрессии по сравнению с трендами и сезонностью. Поэтому если вам нужен быстрый прогноз, то в сторону ARMA и ARIMA можно не копать.
Совет 2. Не забывайте о регрессионных моделяхВообще регрессия – метод довольно универсальный. Его преимущество перед временными рядами в том, что в случае временных рядов вы делаете прогноз только на основании значений дохода за предыдущие периоды, а в регрессионных моделях вы рассматриваете еще и другие метрики.
Случай из жизни
Однажды, еще до того, как я обосновался в игровой индустрии, я работал с администрацией города. Я сделал красивую и вполне точную модель прогнозирования чего-то (уже и не упомню), связанного с налогами, а значит, пополняющего городскую казну. На презентации модели собралось много городских чиновников, и к ним вышел я. Вчерашний выпускник, несколько волнуюсь, надел красивый костюм и выучил речь. Модель была, конечно же, регрессионная, я о ней рассказал и перешел к тем перспективам, которые откроются чиновникам, если они внедрят мою модель.
Но что-то пошло не так. А именно то, что я был прерван одним из чиновников, который, надо сказать, довольно возмущенно сказал: «Погодите! А почему модель у вас регрессионная? У нас ведь город прогрессивный, и мы смотрим в будущее, а вы тут о регрессе, понимаешь ли!»
Смех смехом, но для меня это стало уроком. Не стоит переоценивать того, насколько люди действительно говорят с тобой на одном языке и владеют той же терминологией, что и ты. В частности, чаще всего ответом на вопрос «Знакомы ли вы с математикой и статистикой?» будет: «Ну, когда-то изучали», а поэтому никогда не будет лишним заранее проговорить основы и раскрыть те термины, которые собираешься использовать.
Существует несколько способов посчитать доход. Например, доход – это аудитория, умноженная на ARPU (доход с пользователя). Аудитория – количественная метрика, она говорит о масштабе проекта, на нее сильно влияет трафик. А доход с пользователя – метрика качественная, говорящая о том, насколько ваши пользователи готовы платить. И эти метрики можно и нужно рассматривать и прогнозировать отдельно: они ведут себя по-разному и на них влияют разные факторы.
Похожие рассуждения можно проделать, рассмотрев и другую формулу дохода: платящие пользователи, умноженные на доход с платящего (ARPPU). Да и вообще, теоретически можно «скормить» регрессионной модели все имеющиеся у вас метрики, пускай сама все считает и находит закономерности.
Пример реализации линейной регрессии на Python
Буквально несколько советов.
– Если это возможно (в Excel – не всегда), то включайте в модель только значимые переменные. Если вы даете на вход сто метрик, то необязательно все они должны участвовать в итоговом уравнении.
– Старайтесь, чтобы метрики, которые вы даете на вход, были максимально независимы друг от друга и слабо коррелировали. В противном случае вы рискуете получить неустойчивый результат (который хорошо повторит ваши исходные данные, но будет выдавать что-то странное, когда речь пойдет о прогнозе).
– Изучайте остатки. Если вы изучали регрессию в вузе, то наверняка помните страшное слово «гетероскедастичность» – речь о ней самой. Если вы все сделали правильно, то, взглянув на график остатков, вы ничего не сможете сказать: там будет непредсказуемая случайная величина с математическим ожиданием, равным нулю. Если же вы видите в остатках какую-то закономерность (допустим, синусоиду), то, возможно, вы как раз нарвались на гетероскедастичность – то есть не учли дополнительную логику, по которой распределены данные. И в этом случае вам надо просто изменить уравнение регрессии, добавив в него неучтенное уравнение (в нашем случае – синусоиду).
Пример гетероскедастичности: на графике остатков видно, что в них наблюдается как минимум линейная закономерность. Стоит перестроить уравнение регрессии
Совет 3. Стройте кастомные модели под свой проект
На временных рядах и регрессии свет клином не сошелся. Вы всегда можете строить свои модели, учитывающие логику вашего продукта.
Вот вам пример модели, которую люблю строить я.
– Мы можем посчитать, сколько пользователей в данный момент проживает свой первый, второй, третий и т. д. месяц в проекте.
– Мы можем посчитать процент пользователей, которые остаются активными и на второй месяц. А также процент перехода из второго месяца в третий и т. д.
– Наконец, мы можем посчитать, сколько в среднем платит пользователь, уже N-й месяц живущий в проекте, в течение этого месяца. Иначе говоря, ARPU месяца.
Этого достаточно, чтобы построить модель: вы будете знать, как ваши пользователи «перетекают» из месяца в месяц и сколько они платят. К слову, необязательно месяц: можно год, неделю или теоретически даже день (хотя день я не пробовал, надо признать) – любой значимый для вас период в зависимости от того, сколько пользователи живут в вашем проекте.
С помощью такой модели вы легко можете планировать вливания трафика, надо лишь увеличить число новых пользователей в конкретный месяц.
Совет 4. Рассчитывайте окупаемость своего трафикаОчень часто, особенно на ранних стадиях, проект целиком зависит от новых пользователей – если они есть, то проект зарабатывает. Если их нет – проект осушается.
А потому все предыдущие советы будут бесполезны, если вы не знаете, когда и сколько трафика будет влито.
Поэтому хорошо, если вы сможете построить кривую накопительного дохода вашего трафика по дням: сколько денег приносит в среднем ваш пользователь за первый день, первую неделю, две, три недели, месяц и т. д. Это та самая величина, пределом которой является LTV. Зная накопительный доход, вы сможете и точнее предсказывать выручки в зависимости от того, когда и сколько пользователей вы получили, и рассчитывать окупаемость трафика.
Соотношение между накопительным доходом, CPI и LTV
Совет 5. Применяйте экспертное прогнозирование
Речь в основном касается тех случаев, когда вы планируете изменения в проекте, которые могут существенно сказаться на выручке (что не исключает применения этого метода и для случая, когда изменений не планируется).
Допустим, готовите вы к выходу новый контент, новые функции, новый вид подписки – что угодно. Хорошим вариантом будет опросить тех, кто причастен к этому изменению (менеджер проекта, геймдизайнер, продюсер, маркетолог): как, по их мнению, это скажется на выручке. Кому, как не им, давать оценку этой выручке? Кому? Конечно, вам, как аналитику! Вы можете базировать свой прогноз на их экспертной оценке, дополнив ее строгими расчетами.
В принципе, возможен даже такой вариант (я его применял, и он давал хорошие результаты). Вы каждый месяц опрашиваете определенную группу коллег касательно того, чему будет равен доход проекта на следующий месяц. Накопив данные об их оценках и о фактическом доходе за несколько месяцев, вы сможете впоследствии дать их оценкам веса (а некоторые, быть может, исключить вовсе). К примеру, вы можете заметить, что продюсер всегда дает завышенный прогноз, а маркетолог, наоборот, слишком скромен в своих оценках. И истина будет где-то посередине, а где именно – покажут те самые веса.
К тому же это хороший способ узнать об изменениях, которые планируются в проекте, буквально из первых уст.
Данный метод хорошо работает на уже запущенных проектах в активной стадии оперирования, когда каких-либо революционных обновлений уже не планируется.
Совет 6. Делайте ставкиК слову, о вовлечении коллег в процесс. Это вовлечение можно усилить, добавив в него элемент геймификации.
Я не буду вас учить, как делать ставки, вы справитесь и без меня. Скажу лишь, что эта игра, если играть в нее регулярно с ключевыми сотрудниками, повышает понимание дохода как главного KPI продукта и позволяет каждому лучше понять логическую взаимосвязь между его действиями и значением показателя.
Вам же как аналитику эта игра будет полезна, потому что она стимулирует вас к исследованию, почему ваш прогноз не сошелся с реальностью: может быть, вы учли не все факторы?
Совет 7. Анализируйте все измененияЯ убежден, что если анализировать все изменения от самого начала жизненного цикла продукта до его текущего состояния, вы сможете лучше понять ваш проект, ваших пользователей и структуру вашего дохода. Поэтому я рекомендую анализировать все изменения, вести лог анализа каждой вышедшей фичи, чтобы впоследствии принимать более точные, взвешенные и финансово оправданные решения. А еще лучше – разделить анализ маркетинговой и продуктовой составляющих и вести в одной таблице как те, так и другие изменения. Это поможет понять, почему метрики так себя повели.
Рано или поздно вы начнете замечать, что некоторые изменения в продукте сильно повышают доход и сопутствующие метрики, а некоторые не приносят ничего. Впоследствии вы сможете точнее прогнозировать доход от каждой новой фичи, сопоставляя ее с предыдущими аналогами.
Уместно будет вспомнить теорему Байеса. Погрузившись в нее и в байесовские методы достаточно глубоко, вы осознаете две новости, хорошую и плохую.
– Хорошая. Если учесть все «но» при формировании прогноза дохода, то прогноз станет гораздо точнее.
– Плохая. Все «но» учесть невозможно.
Но отчаиваться не стоит, а стоит учитывать те факторы, которые вы можете выделить и формализовать. Набор факторов будет расти, будет расти и сложность прогноза, но вместе с тем повысится и его точность.
Допустим, вы делаете прогноз на результат футбольного матча. Сначала вы просто даете эмоциональную оценку: «Барселона» выиграет у «Реала» со счетом 3:0. «Барселона» почему-то не выигрывает, и вы начинаете анализировать. Прогноз состоит из множества факторов: текущее положение команд в таблице, история их встреч, фактор хозяев поля, травмированные игроки, мотивация в чемпионате и т. д. Со временем ваши прогнозы, основанные на большем количестве факторов, станут пусть немного, но точнее. По сути, вы сами обучаете свою нейросеть: анализируя ошибки и разбирая их подробнее, вы добавляете к прогнозу все больше факторов и постепенно повышаете его точность.
Важно понять, что прогнозирование – процесс итеративный. Делая прогнозы, оценивая и разбирая их, вы учитесь прогнозировать, глубже погружаетесь в предметную область, становитесь экспертом.
Совет 8. Комбинируйте методыЕсли бы этот раздел был тестом, то правильным ответом было бы «все вышеперечисленное».
Комбинаций можно придумать очень много, и я не хочу вас ограничивать. Лишь опишу ту комбинацию, которую применяю и ею доволен.
– Прогнозируете отдельно аудиторию и ARPU:
– используете методы временных рядов,
– корректируете прогноз по аудитории, исходя из данных о вливаниях трафика,
– корректируете прогноз по ARPU, исходя из планируемых изменений в продукте (на основании экспертной оценки).
– Перемножая прогнозы по аудитории и ARPU, вы получаете прогноз по доходу.
– Его также можно скорректировать на основании экспертной оценки планируемых изменений (с учетом того, что все изменения анализируются в деталях), а также на основании кастомной модели перетока от месяца к месяцу.
Совет 9. Контрольная группаЕще один метод для ответа на этот вопрос – это выделение контрольной группы. Вообще говоря, называется и поддается описанию он несколько проще, чем изложенная выше матчасть. Однако корректность его применения во многом зависит от того, насколько точно у вас настроена аналитика и можете ли вы четко выделить эту группу.
Выбор контрольной группы
Суть этого метода в том, чтобы проанализировать поведение пользователей, которые не воспользовались акцией. В f2p-играх это будет большинство пользователей (хотя бы потому, что доля платящих среди игроков обычно невелика). Тем не менее эта контрольная группа генерировала и генерирует какой-то денежный поток, даже несмотря на то что они не приняли участие в одной разовой акции. Можно ориентироваться именно на эту группу и рассчитать, сколько денег вы получили бы по итогам акции, если бы вся ваша аудитория была этой контрольной группой.
Какой из методов применять – выбор за вами. Если вы любите математику, применяйте математические методы. Если с математикой не дружны, то что вы делаете в аналитике вообще (зачеркнуто) применяйте контрольную группу. А по возможности делайте и то, и другое. Результаты совпадают – замечательно. Результаты не совпадают – разбирайтесь почему.
Со временем ваши прогнозы станут точнее и детальнее.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.