Привет, я Исламбек Темирбек, Senior Data Analyst в QIC digital hub. В этой статье я расскажу о машинном обучении и о том, как с его помощью можно предсказать будущее.
Какую роль играет аналитика в создании и разработке онлайн-страховых и нестраховых сервисов и почему мы обратились именно к машинному обучению (ML)? В этой статье я расскажу о нашем опыте с моделью машинного обучения Time Series, служащей для предсказания временных рядов. Обсудим, как мы использовали Facebook Prophet для прогнозирования продления полисов, а также методологию и результаты, включая возможные ошибки.
В нашей работе мы в основном занимаемся финансами и платежами. Основной объем задач покрывается Ad-hoc запросами, построением дашбордов в Tableau, а также некоторым временем, выделенным на исследование и работу с Python и ML.
Зачем и как предсказывать будущее
Давайте на примере. У нас есть продукт — автострахование, он предлагает полисы, у которых есть срок окончания действия, например, октябрь 2024 года. Наша задача — спрогнозировать, сколько полисов в 2024 году будет продлено или обновлено.
На первый взгляд, это кажется простым упражнением — ведь есть полисы, купленные в 2023 году, которые просто продлятся. Однако многие люди забывают о своих страховых полисах, особенно автострахования, ведь их нужно продлевать всего раз в год.
Сначала для решения задачи мы планировали использовать Excel-файл, создав Renew Rate за 2023 год: взять количество полисов, продленных в 2023 году, и поделить на тех, кто должен продлиться в том же году. Посчитав этот коэффициент, мы могли бы умножить его на количество полисов, которые должны продлиться в 2024 году.
Однако когда мы начали разбивать данные на продукты OD и TPL (обязательная страховка ОСАГО и КАСКО), возникли сложности. Вводных оказалось больше: например, есть различные типы продления — первого года, последующего, второго или третьего. Праздники, такие как месяц Рамадан или Курбан-Байрам, также влияют на показатели. Со всеми этими факторами наш Excel-файл превратился в сложную систему, которой было трудно управлять.
Как пользоваться Facebook Profit для предсказания
Facebook Prophet — это open-source библиотека, которая проста в использовании и хорошо работает с временными данными. Она учитывает сезонность, тренды и другие аспекты.
Для работы с Facebook Prophet нужны две колонки: DS (Data Series) и Y (метрика, которую мы будем предсказывать). В нашем случае Y — это количество полисов, которые мы хотим предсказать на 2024 год.
Обучение модели происходит на основе исторических данных, что позволяет сделать предсказание. Код достаточно прост. Если вы подгрузите датафрейм, таблица будет выглядеть следующим образом: DS — это даты, а Y — метрика, которую хотим предсказать. Затем используем Prophet, чтобы обучить модель на ваших исторических данных. Библиотека также включает функцию make_future_dataframe, которая помогает создать будущие данные на 365 дней вперед, что и позволяет сделать предсказание.
В результате вы получаете предсказанные данные YHAT — это предсказанная метрика, а также нижние и верхние пределы (lower and upper bounds). На графике видно, что сезонность повторяется каждый год: в начале до середины года она минимальна, а затем начинает повышаться.
Что мы сделали, чтобы предсказать продление полисов на 2024 год
Мы взяли исторические данные за последние пять лет и добавили регрессоры: месяц Рамадан, публичные праздники и локдаун. Мы также учли COVID-19 как один из регрессоров.
С сентября 2021 года у нас появился новый веб сайт по продаже и продлению страховых полисов на авто. На примере ниже можно заметить разницу между старым и новым сайтом: упрощения в дизайне и user flow, которые дали +30-40% к онлайн продажам.
Мы также решили добавить в качестве параметра дипломатический кризис в Катаре с 2017 по 2021 год. Однако не все параметры оказывают положительное влияние на модель; этот показал, что значительного улучшения не будет, поэтому его можно было исключить.
Далее мы провели итеративную работу по настройке модели для более точных предсказаний. Добавили сезонность как внутри недели, так и внутри года, а также выбрали, какой метод (additive или multiplicative) лучше подходит для предсказания. Мы учли тренд — растущий или падающий — и праздничные дни, такие как Курбан-Байрам и другие праздники в Катаре.
Таким образом, мы получили предсказание на 2024 год.
Если его разбить на компоненты, получится график, показывающий тренд данных. С 2017 по 2023 год наблюдается общий растущий тренд. Особенно резкий рост был в ковидный период, который увеличил показатели примерно на 60%. Это все можно объяснить с помощью Prophet. На графике видно, как новый веб сайт повлиял на продажи в сентябре 2021 года (с момента запуска).
Сезонность внутри недели
В Катаре рабочая неделя начинается с воскресенья и заканчивается в четверг, а пятница и суббота являются выходными. Мы наблюдаем низкие продажи в выходные дни, в то время как начало недели приносит больше обновлений полисов.
Сезонность внутри года
Если смотреть на годовой график, высокий уровень продления наблюдается до лета, после чего продажи падают. С октября уровень снова начинает расти.
Сезонность внутри месяца
Мы видим высокий уровень продления в начале месяца, , который снижается до 20-го числа, а затем после 22-го числа снова возвращается к прежнему уровню. Это коррелирует с выплатами заработной платы.Рамадан и праздники
График месяца Рамадана показывает непредсказуемость: в начале низкий спрос, а затем, в середине, происходит резкий рост, который к концу месяца возвращается к низким показателям.
Обновления сайта
Новый лендинг показал, что в начале месяца показатель низкий, но ближе к 17-22-му числу уровень продления значительно возрастает, а затем снова снижается. Мы сдвинули этот пик влево, начав рассылать сообщения о необходимости продления полисов.
Ошибки предсказаний
В любом предсказании присутствует ошибка. Нельзя думать, что просто загрузив данные в ML, вы получите идеальный результат. Для улучшения модели мы используем root mean square error (RMSE) — сравнивая предсказанные значения с реальными, мы можем вычислить среднюю ошибку.
Абсолютная ошибка может быть значительной — например, 30 полисов в день или 8 тысяч долларов. Хотя эта разница велика, важно понимать, что не всегда это плохо или хорошо. Мы можем преобразовать это значение в процентное соотношение, чтобы упростить восприятие, используя mean absolute percentage error (MAPE). В нашем случае средняя ошибка составляет 16%, что делает объяснение более понятным как для бизнеса, так и для пользователей.
Результаты
Графики OD и TPL показывают, что OD (дорогая страховка) имеет ошибку около 24% по премиуму, что эквивалентно 17% по количеству полисов. Второй продукт демонстрирует лучшие предсказания с ошибкой около 11% по премиуму и количеству полисов.
Синяя линия на графике представляет актуальные значения полисов за последние пять месяцев 2024 года, а красная линия — предсказанные значения. Желтые и зеленые линии обозначают нижние и верхние пределы предсказаний.
Предсказания дают понимание стратегического направления, к которому необходимо стремиться. На графике одного из последних месяцев (май 2024 года) актуальное значение немного опускается ниже нижнего предела предсказаний, что может указывать на плохое продление полисов. На основе этих данных мы принимаем меры как со стороны продукта, так и команды для улучшения ситуации.
Итоги
Самое главное — понимать проблему и необходимость использования машинного обучения. Если можно решить задачу без ML, сделайте это — так будет дешевле. Если это невозможно, модели машинного обучения могут стать надежным помощником. С помощью временных моделей, таких как Facebook Prophet, можно эффективно предсказывать будущее. Важно добавлять регрессоры и улучшать гиперпараметры.
Facebook Prophet также предоставляет визуальное объяснение трендов и сезонностей, что позволяет анализировать промежуточные результаты и принимать меры для устранения проблем.
Важно отметить, что предсказания на короткий срок получаются более точными и с меньшим количеством ошибок, чем на год или более длительный период. Например, при планировании отдыха на месяц вперед прогноз погоды может быть менее точным, чем на завтра или послезавтра.
Автор: i_temirbek