Важнейшая экспертиза Яндекса — машинное обучение. Она выросла из потребностей поиска, для ранжирования в котором нами была разработана известная сейчас многим технология Матрикснет. В 2014 году Яндекс стал использовать свои знания в области ML вне собственных сервисов — появилась Yandex Data Factory. Это международное направление, которое решает сложные математические задачи для других компаний.
Один из его проектов — прогноз оттока игроков World of Tanks. Илья Трофимов рассказал слушателям Малого ШАДа не только о проекте с Wargaming, но и о том, что вообще такое машинное обучение и в каких задачах оно может помогать бизнесу. Слушатели — старшеклассники, интересующиеся математикой и компьютерными науками.
Сам Илья в 2007 году окончил физический факультет МГУ по специализации «теоретическая физика». В 2011 — Школу анализа данных по специальности «анализ данных». В Яндексе занимался применением машинного обучения для оптимизации показов рекламы, сейчас решает задачи по анализу больших объёмов данных в Yandex Data Factory. Читает лекции в ШАДе по теме «Машинное обучение на больших данных».
Кто из Вас играет в World of Tanks? Один, два, три, четыре. Видимо, стесняетесь. На самом деле все играют. Отлично. А кто вообще играет в онлайн игры? Где-то процентов семьдесят, я бы так сказал. Что такое World of Tanks? Это такая онлайн игрушка, разработана замечательными белорусами, компанией Wargaming. У них еще есть World of Planets, World of Ships. Игра сама по себе свободная, многопользовательская, кто играет, то все это знает. В ней есть кое-какие платные элементы: можно покупать так называемое «золото» за реальные деньги.
По статистике, в игре больше миллиона аккаунтов, и это очень много. И вот, например, есть такая интересная цифра: 19 января 2014 года онлайн присутствовало больше миллиона игроков, играли в World of Tanks. Это интересно, что на текущий момент эти компании, которые занимаются играми, они очень мощные, т.е. в том же Wargaming 4000 сотрудников. В Яндексе, по-моему, 6000, т.е. кажется игрушки-игрушки, но на самом деле это такой очень мощный бизнес, и они в своей работе стремятся использовать, например, математику – вот то, о чем будет сегодняшняя лекция.
Я сказал такое слово – отток. Что такое отток? Он может быть абсолютно в любом бизнесе. Это банки, операторы сотовой связи, провайдеры интернета, кабельного телевидения, страховые компании, те же самые онлайн игры и т.д. Если вы клиент какого-то банка или сотового оператора, и вы решаете от него уйти – это называется отток. У меня выделены жирным операторы сотовой связи, особенно эта задача актуальна для них.
Как вы думаете, зачем нужно заниматься оттоком? Зачем нужно его предсказывать?
- Чтобы прогнозировать.
- Чтобы статистику сделать.
- Чтобы задержать.
Нужно посмотреть на этот отток: какие группы уходят, какие не уходят, но самое главное – нужно этих людей попытаться удержать. Конкретно операторы сотовой связи. Есть две основные задачи – это предсказание оттока, предсказание того, какой клиент уйдет, предотвращение и удержание. Например, я в интернете нашел картинку «Доля сотовых операторов в США за последние несколько лет». У них основные операторы Verizon, AT&T и Sprint Mobile и, как вы видите, еще некоторые другие. Вот посмотрите, насколько слабо меняется доля, – очень мало, т.е. это очень конкурентный рынок. И если вы, допустим, предотвратите отток 1% клиентов, то это уже будет достаточно круто. А если вы каждый год будете предотсвращать отток по 1%, то это будет накапливаться и будет очень заметно на бизнесе. Можно провести такую аналогию, как течь из бочки. Стоит бочка, из нее постепенно по чуть-чуть вытекает вода. Может, и немного, но за год накапливается много, и если вы эту дырку затыкаете, то бочка остается полной. Усилия по предсказанию оттока и его предотвращению по своему влиянию на бизнес достаточно существенные. Можно, честно говоря, придумывать разные тарифные планы, какие-то фишки для удержания клиентов, а можно просто предотвращать отток. Еще такое наблюдение, почему это направление активно развивается именно для операторов сотовой связи. У вас есть МТС, и вы решили поменять его на Мегафон. Что вы делаете: одну симку достаете, другую вставляете, и все, МТС больше не может с вами связаться просто так. Может только по электронной почте, при условии того, что вы зарегистрировались в личном кабинете. Но понятно, что это уже не то. Т.е. у сотовых операторов задача стоит так: нужно предсказать, какой клиент хочет уйти, и, пока он еще не ушел, пока ему еще можно позвонить, послать смс, сделать какое-то предложение, от которого он не сможет отказаться, и как-то попытаться его удержать. В общем-то все самые крупные операторы России этим занимаются. Нужно сделать некоторое введение.
Кто знает, что такое машинное обучение? Отлично, половина уже слышала, половина — не слышала. Нужно для начала это пояснить. Смотрите, мы хотим что-то предсказать. Выражаясь пафосно – предсказываем будущее. Например, хотим предсказать, что человек купит какой-то товар в интернет-магазине и какой это будет товар. Можно, например, попытаться предсказать, что твит в Твиттере получит много ретвитов. И люди занимаются такими предсказаниями, в том числе в Яндексе. Можно предсказать, что лечение будет эффективным или неэффективным, и выбрать самое эффективное лечение. Можно, например, предсказывать, что парень и девушка составят хорошую пару. Почему бы и нет. Можно предсказывать курс акций на следующей неделе. И многие люди, которые торгуют на бирже, этим профессионально занимаются. Тема этой лекции — попытаться предсказать, что игрок перестанет играть в онлайн игру. И есть еще несколько задач, они не про предсказание, но очень похожи на то, что я буду говорить. Например, распознать человека на фотографии, или, например, распознать рукописный текст и ввести его в компьютер. Как вы думаете, какие из этих задач решаются с помощью машинного обучения, а какие – нет? Фейсбук предлагает подписать фотографии, кто из твоих френдов на них. Рукописный текст – достаточно старая задача, она тоже решается.
Что человек купит какой-то товар в интернет-магазине. Вы правы, все интернет-магазины имеют рекомендательные блоки: «советую вам купить», «вместе с этим товаром покупают» и т.д и т.п. Это все построено на предсказании того, что ты купишь. Что твит получит много ретвитов. Я уже сказал, что это делают и можно этим заниматься. Что лечение будет эффективным? Нет, нельзя. Если собрать много информации, то можно практически все предсказывать. Пункт, что парень и девушка составят хорошую пару. Не знаю, насколько это научно, например, на какого животного вы похожи. Я не думаю, что это основано на каких-то технологиях. Но тем не менее было такое общее замечание, что все зависит от общего объема информации. И у нас остался последний пункт, что парень и девушка составят хорошую пару. Если собрать много информации, то можно предсказывать лучше, чем случайно угадывать. Это верно. Есть зарубежные сервисы знакомств, которые используют машинное обучение для подбора пар. Можно предсказывать все что угодно, было такое замечание, что все зависит от объема информации, и нужно использовать правильные методы. Про что машинное обучение?
Машинное обучение – это про то, что мы пытаемся обучить машину (это компьютер) или кластер компьютеров решать задачи, которые легко умеет делать человек. Например, распознавать фотографии или рукописный текст, или то, что люди не умеют делать, например, что твит получит много ретвитов или предсказать курс акций на следующей неделе, а компьютер может делать и то, и то. Распознавание людей на фото в последние несколько лет вышло на хороший уровень и даже немного превзошло уровень человека. Сейчас компьютер распознает людей на фото лучше, чем обычные люди – вот такое интересное наблюдение. Есть лекция про машинное обучение в Малом ШАДе, можете ее посмотреть, если кто ее не видел, т.е. мы учим компьютер. Как построено обучение компьютера? Компьютер обучается на примерах. Нужна такая вещь, как обучающая выборка. В самом общем виде эта задача выглядит так: есть входные данные, есть ответ, и таких примеров нужно показать компьютеру очень много, чтобы он сам научился по входным данным предсказывать ответ. С формальной точки зрения, входные данные обычно обозначают вектором Х – это вектор некоторых чисел. Ответ обычно обозначают Y, и здесь есть два основных варианта: если Y – это вектор конечного множества, тогда мы называем задачу задачей классификации, если Y это R – множество вещественных чисел, то мы называем задачу задачей регресией и, с математической точки зрения, нужно построить функцию, отображающую X и Y так, чтобы на обучающей выборке было как можно меньше ошибок. Давайте с вами подумаем, что у нас в этих задачах X, а что у нас Y. Например, как предсказать, что человек купит товар в интернет-магазине? Что у нас Х, а что у нас Y? Товар – это Y, Х – это информация о человеке: кто он, сколько он сделает покупок, какие у него интересы, как он ведет себя на сайте. Y — это конечный товар. Нам нужно выбрать один товар из Y.
Что твит получит много ретвитов. Здесь нужно предсказать число ретвитов. Это рассматривают как задачу регрессии, мы хотим предсказать некоторое число, а не класс. Что можно использовать в качестве входной информации? Среднее количество ретвитов на предыдущие твиты, можно использовать содержание, какие-то темы более популярны, какие-то менее популярны, можно использовать хештеги, количество подписчиков, информацию о них, еще можно использовать время, когда написан твит. Есть рекламные агентства, которые занимаются пиаром в Твиттере, есть специальные сервисы, которые подсказывают в какое время написать твит, чтобы он собрал побольше ретвитов, чтобы распиарить какую-нибудь звезду или товар.
Курс акции на следующей неделе. Что здесь X, а что здесь Y? Y – это итоговая цена акции, а Х – это информация о состоянии биржи. Это классификация или регрессия? Курс акции – это какое-то вещественное число, нужно его предсказать. Предсказание курса биржи – это регрессия: Х – это информация о бирже, информация о продаже акций, курс на данный момент, вчерашний курс, неделю назад и т.д.
Распознавание человека на фото – это классификация, Y – это множество людей из которых надо выбрать одного из них, Х – это сама фотография, если это фотография из социальной сети, то на ней будут люди из твоего круга знакомых, это упрощает задачу, в основном используют саму фотографию, т.е. фотография состоит из пикселей, у каждого пикселя свой цвет, в общем – это отдельная тема в Малом ШАДе, там используются нейронные сети, своя отдельная наука.
Как предсказать, что игрок перестанет играть в онлайн игру? Тогда это задача классификации, уйдет или не уйдет. Через сколько он уйдет, так тоже можно делать, мы в этом проекте так не делали, но тогда это будет задача регрессии, и там будет все по-другому, другие методы. Х – это информация об игроке.
Машина обучается на примерах. В том-то и вся прелесть машинного обучения, что, как вы видели, можно работать абсолютно в любой области. Можно ничего не понимать в медицине и предсказать эффективность лечения, можно ничего не понимать в онлайн-играх и предсказывать отток игроков и т.д. Как говорил Архимед: «Дайте мне точку опоры и я переверну мир». Здесь все звучит немного по-другому: дайте мне вот такой ряд – входные данные, ответ, входные данные, ответ, и я научусь вам предсказывать ответ вообще практически не разбираясь в предметной области. Вот такая интересная штука.
Давайте опять вернемся к оттоку игроков. Мы будем с вами прыгать от теории к практике. Что здесь можно сделать? Берем ось времени. У нас есть текущий момент, есть прошлое, из прошлого мы можем извлечь какие-то факторы, какие-то параметры. Например, в этой задаче я использовал ведение за последние шесть месяцев. Дальше мы фиксируем в будущем некоторый контрольный интервал (например, один месяц) и говорим, что если игрок за этот месяц не сыграл ни одной игры, не провел ни одного боя, значит, он ушел. Если хотя бы один бой был, значит он не ушел. Такая получается задача классификации.
Входные данные, то, что я использовал в этом проекте: количество уничтоженных танков, количество битв, количество битв в клане, доля побед, свободный опыт золота, премиум аккаунт или нет, в общем, все что есть в танчиках я попытался затянуть в свою модель. Здесь есть интересный момент, что нужно в практических задачах засовывать все что угодно, потому что компьютер может вывести такие закономерности, которые человеку совсем не очевидны. Нужно полагаться на математику, на компьютер, а не на свою интуицию, которая часто может подводить.
Что можно еще интересного сделать? Можно смотреть на все эти параметры с разной глубиной. Вот как было на примере с курсом акций. Мы могли смотреть на курс акций день назад, неделю назад, месяц назад. Я использовал все параметры с глубиной максимум до шести месяцев, т.е. 24 недели. И всего тогда на каждого игрока получается 501 параметр. Понятно, что руками и глазами с 501 параметром не поработаешь, в Excel визуализацию не сделаешь, т.е. люди двухмерное пространство воспринимают, трехмерное уже на компьютере достаточно сложно нарисовать, а 501-мерное совсем никак. Тут нужна некая математика. Ответ в этой задаче – это бинарная переменная (ушел игрок или не ушел). По некоторым причинам это удобнее обозначать +1 и -1.
Смотрите, получается такая гигантская таблица, где каждая строчка – это игрок, и по нему мы знаем Х и Y. Х – это ушел-не ушел, а Y — это такой вектор из 501 признака, параметра. Я не смог уместить вам все параметры на слайде, но вот такая простыня, с которой глазами в Excel никак не поработаешь, поэтому это иногда называют большие данные.
Чтобы вы делали, если бы вам дали такую простыню? Куча игроков, про каждого игрока известно ушел-не ушел и 501 число, что с этим делать-то? Анализировать информацию. Первая идея такая: смотрим на количество игровых часов по месяцам, рисуем график, если этот график падает, то предсказываем, что человек уйдет. Например, можем его экстраполировать, провести прямую, и если она уходит в 0, то человек уйдет. Вполне нормальный подход, только у него недостаток в том, что он использует только один фактор – количество часов в игре за месяц. Была идея про премиум-аккаунты, но я не понял конкретного алгоритма, как использовать. Еще можно использовать нерастущие показатели, не растет опыт, доля убийств. Можно использовать приоритет, если мы видим, что количество боев и количество часов в игре снижается, допустим это 10 виртуальных баллов, если давно не зачислял денег – это +20 виртуальных балов, и накапливаем очки. Чем больше очков, тем больше вероятность, что человек уйдет.
У нас есть некоторый набор гипотез, например, что у человека есть премиум-аккаунт, то он уйдет с меньшей вероятностью, если у него не растет доля побед, доля убийств, не растет опыт, он неудовлетворен игрой, он уходит. Это все нормальный человеческий подход, но что я хочу сделать? Я хочу взять все параметры, 501 штуку, и чтобы мне сам компьютер нашел кучу таких закономерностей, даже те, о которых нельзя догадаться человеку.
Что еще можно делать? Например, у нас по оси Х премиум-аккаунт. У нас есть два варианта: здесь есть премиум-аккаунт, здесь – нет. Посчитаем вероятность уйти в следующем месяце. С премиумом я сейчас цифры от балды скажу, просто проиллюстрировать идею, которую предложил товарищ. 1000 игроков с премиумом, без премиума — 10 000. Смотрим, что произошло в следующем месяце. Сколько ушли? Допустим из премиума ушло 100, а не из премиума ушло 2000. Какая получается вероятность ухода? Здесь 10%, а без премиума — 20%. Это достаточно выдуманный пример, я не помню точно, какие там реальные цифры. Такие штуки можно делать, по каждому параметру можно смотреть, насколько он сильно влияет.
Я не хочу больше выдуманных примеров вам показывать. Вы молодцы, накидали много идей, но у нас задача в том, чтобы такие гипотезы генерировал компьютер. Он их может генерировать больше и эффективнее. Про баллы, это тоже хорошая мысль, потому что она позволяет нам одновременно учитывать много факторов. Есть такой метод, он называется логистическая регрессия, он это и делает практически.
У меня еще есть математические слайды. Нам нужно понять, что такое ошибка классификации. Мы берем некоторую выборку, некоторое множество и считаем прогнозы. Наш прогноз – это результат функции f.
Если наш прогноз совпадает с реальностью, то наша ошибка равна 0, если не совпадает — ошибка равна 1. И просто складываем все ошибки на всех примерах. Это мы называем ошибкой классификации, т.е. количество случаев, которое мы не угадали. В машинном обучении есть такое наблюдение, что нет проблемы построить функцию f, в которой ошибка на фиксированной выборке равна нулю. Вы, может быть, даже догадаетесь, как такую функцию построить.
У нас есть обучающая выборка – это пары входные данные-ответ. Мы обозначаем их X, Y. Мы хотим построить функцию, отображающую X и Y, чтобы она делала поменьше ошибок.
Как это сделать на этой выборке? Встает резонный вопрос, чем мы занимаемся, зачем машинное обучение, если всегда можно построить функцию, которая не будет делать ошибок. Конечно, что для известных X мы предсказываем значение Y. Если придет какой-то новый Х, которого не было раньше, то мы ничего сделать не можем. Можно для каждого Х находить ближайший к нему из обучающей выборки и давать соответствующий Y. Это будет работать немного получше, но все равно не очень хорошо.
Как с этим бороться? Как нужно работать в машинном обучении. К вам пришли данные пары XY, и нужно с самого начала их разделить на две части: одну назовем «Обучение», другую назовем «Тест». Функция f(x) строится только по обучающей выборке, а ее качество, т.е. ошибка классификации, измеряется на тесте, который мы не использовали при построении функции. Понятно, что на выдуманном примере, когда функция f строго возвращается известные ей Y, когда приходят новые данные, то будем очень большая ошибка классификации — эта функция плохая.
Основная задача машинного обучения состоит в том, как строить функции f по обучающему множеству, чтобы строить на этом новом тестовом множестве была маленькая ошибка. Здесь интересный момент, что работаем только с обучающим множеством, а потом откуда-то с неба к нам приходят новые данные, и их тоже нужно хорошо классифицировать. Этим и занимается машинное обучение.
В этой конкретной задаче был отток игроков – 1000 игроков. Это товарищи, которые сыграли минимум 500 битв за последние 3 месяца, и плюс у них еще за последнюю неделю была хотя бы одна битва. Должно быть 500 битв, это должен быть достаточно активный игрок. Я это разделил таким образом: 33000 — на обучение, 17000 — на тест.
Сейчас я расскажу про дерево решений. Это один из самых старых методов машинного обучения. Он строит иерархические условия. Если количество боев за последнюю неделю меньше 10, и, кроме этого, золота меньше 100 – значит, он уйдет. А если количество боев меньше 10, а золота — больше 100, значит, не уйдет. Вопрос — как ее строить? Она может комбинировать в себе много факторов. Это то, что нам нужно, потому что мы хотим скоординировать 501 фактор.
Первое предложение было такое. Как строить дерево решений. Если нам известно, какие факторы сильно влияют на уход, то дерево мы построим без проблем. Если известна сила, приоритет факторов, то дерево строится легко. Правда, не понятно как.
Еще идеи? По каждому фактору или параметру считаем, насколько он влияет сам по себе на уход, это первый момент. Например, можем построить график. По оси Х — значение этого конкретного фактора, по Y — вероятность ухода. Если здесь прямая, то от этого фактора ничего не зависит, если кривая, то значит, от значения фактора вероятность уйти зависит. Дальше мы ранжируем все факторы по силе и строим как-то из них дерево. Еще нужен коэффициент, волшебный, который решит все проблемы.
Что такое общие факторы и что такое сильные факторы, влияющие на уход? Вы мне накидали идеи, о которых я сейчас буду рассказывать. В этом ничего сложного нет, просто нужно довести эти идеи до математики, до формализации. В машинном обучении очень часто происходит, что берется какая-то интуитивная инженерная идея, которая и так понятна всем, и ее нужно уметь хорошо формализовать.
Еще пару моментов про дерево. В дереве у нас есть узлы и есть листья. Узлы – это места, в которых принимаются решения, места в которых стоят условия, а листья – это самый последний нижний слой, в котором стоят ответы.
Я вам привел пример дерева из книжки. Это дерево решений классификации e-mail – спам-не спам. Это иллюстрация того, что деревья могут быть очень высокими, кривыми и очень странными, не всегда понятными.
Как строить дерево? Например, его можно строить по алгоритму ID3. Как он работает? Алгоритм рекурсивный. Мы всю обучающую выборку называем U. Если все объекты U лежат в одном классе, то нам ничего делать не надо. Нам нужно создать лист, как здесь нарисовано, и в этом листе сказать уйдет-не уйдет. Если же это не так, то нам нужно найти самое лучшее правило разбиения, которое дает минимальную ошибку. Нужно с помощью этого правила в идеальном случае разделить выборку на две части: в одной части – один класс, в другой части – другой класс.
Понятно, что в реальности этого, скорее всего, не получится. Если разбить не получается, и все принадлежит одному классу, то делаем лист, т.е. возвращаем ответ. Если идеально разбить не получается, то нам нужно идти по дереву дальше и строить следующую вершину. Алгоритм рекурсивный с другими множествами.
Основной момент, это как выбрать разбиение: какую переменную и какой порог. Здесь есть два момента: один – это общность, другой – это сила. Если перевести это на язык математики, то нам нужно выбрать такое разбиение, после которого ошибка уменьшается сильнее всего.
Допустим, у нас всего было 100 игроков, из них ушли, допустим, 10. Если нам нужно сделать предсказание, какое предсказание будет иметь минимальную ошибку? Если мы можем сделать одно предсказание, то мы должны сделать предсказание, что никто не уйдет и ошибемся всего в 10 случаях. Дальше мы должны выбрать условие в дереве таким образом, что мы делим выборку на две части и для U0 и U1 тоже можем сделать ровно 1 предсказание: уйдет или не уйдет. Понятно, что в этом случае будет ошибка меньше, потому что мы сначала разделили выборку на две части и для каждой части делали свое предсказание.
Например, этот же случай. Было 100 игроков, 10 из них ушли, 90 не ушли. Допустим, налево у нас по этому условию пошло 90, которые не ушли, и 5, которые ушли. Направо пошло 0, которые не ушли, и 5, которые ушли. Соответственно в левой ветке нам выгоднее сделать предсказание – остались, и будет 5 ошибок. Справа предсказание – ушли, ошибок 0. Т.е. в самом начале, когда мы делаем единый прогноз у нас была ошибка 10, когда сделали разветвление, ошибка стала 5. Нужно выбирать ветвление, которое минимизирует ошибку. И так повторять оперативно и рекурсивно.
Вот такая простая штука. Но когда в математике есть такая простая штука, любят все усложнять. И придумали много критериев, которые на самом деле на практике работают немного получше. Самый первый критерий, это то, что мы сейчас обсудили, – ошибка классификации. Если его формально расписать, то получаются такие формулы.
На практике немного лучше работает критерий Джини или кросс-энтропия. N похоже на общность, чтобы факторы влияли на много событий, а Р похоже на силу.
Одно дерево мы с вами умеем строить по алгоритму ID3. Это был самый простой алгоритм, потому что это был малый шаг. На самом деле, я использовал не одно дерево, а много деревьев. Я использовал алгоритм, который называется Матрикснет, который разработан в Яндексе. Он представляет собой композицию примерно из 1000 деревьев. Исходная идея довольно простая. Мы учим деревья так, чтобы они компенсировали ошибки друг друга. Каждое последующее дерево стремится исправить ошибки всех предыдущих. У нас в дереве был готовый ответ – уйдет игрок или не уйдет. Это не всегда удобно. И Матрикснет выдает на выходе вероятность принадлежности к классу, вероятность уйти.
Мы приближаемся к концу. Как измерить качество предсказания оттока. Уходящих игроков всегда очень мало, порядка 1%. На практике оказывается, что удобнее считать не ошибку классификации, она всегда будет большой. Вы 1% игроков практически точно не найдете, только вероятностно. Это как искать иголку в стоге сена. Поэтому смотрят не на ошибку классификации, а на так называемый лист. Я его перевел как усиление. Что это такое. Пусть А – это доля ушедших игроков по всей выборке, например, 1 %. Дальше мы вычисляем вероятность ухода с помощью метода Матрикснет, дальше мы сортируем игроков по убыванию вероятности и смотрим на Х% игроков с максимальной вероятностью ухода.
Например, всего ушли 6% и это, на самом деле, хорошо, потому что если бы у нас не было модели, мы могли бы выбрать только игроков случайно. И в какой-то случайной выборке у нас был бы этот 1 % игроков ушедших. Если мы применили нашу умную модель и отобрали 10% игроков с максимальной вероятностью ухода, то если наша модель что-то дельно делает, то та максимальная концентрация игроков должна быть больше, чем в среднем по выборке.
Определить уходящих игроков достаточно сложно. Абсолютно точно их найти не получается. Можно только найти зону игроков, где они, например, находятся с большей вероятностью.
Зачем все это нужно? Как вы помните, в самом начале говорили, что есть две задачи: одна задача – это предсказание оттока, другая – предотвращение оттока. До предотвращения мы так и не дошли, мы только его предсказывали. Нужно обучить классификатор, который предсказывает вероятность ухода, дальше мы выбираем какой-то процент клиентов с максимальной вероятностью ухода, например, 10% и делаем им какой-нибудь подарок, предлагаем скидку, как-то пытаемся на них повлиять, чтобы они остались в системе, в игре или у оператора сотовой связи. Даже с учетом того, что мы не можем этих людей вычленить точно, сама информация, что мы можем показать на 10% игроков, которые уйдут с наибольшей вероятностью, – это тоже очень ценно на практике. А дальше возникают новые задачи.
Вот конкретный человек, игрок, клиент – что ему предложить? Ему предложить скидку, или ему предложить другой тариф, подарить каких-то кристаллов или золота, и вообще в какое время это сделать? Послать ему сообщение по e-mail, или внутри сообщение, или что-то еще и т.д. Для всего этого можно использовать машинное обучение. С теми же сотовыми операторами так и делают. Это все активно применяется.
Автор: Яндекс