Прогноз відтоку гравців World of Tanks від Yandex Data Factory. Лекція для Малого ШАДа

Найважливіша експертиза Яндекса — машинне навчання. Вона виросла з потреб пошуку, для ранжирування в якому нами була розроблена відома зараз багатьом технологія Матрікснет. У 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%, то це буде накопичуватися і буде дуже помітно на бізнесі. Можна провести таку аналогію, як текти з бочки. Стоїть бочка, з неї поступово потроху витікає вода. Може, й небагато, але за рік накопичується багато, і якщо ви цю дірку затикаєте, то бочка залишається повною. Зусилля по прогнозу відтоку і його запобіганню по своєму впливу на бізнес досить істотні. Можна, чесно кажучи, придумувати різні тарифні плани, якісь фішки для утримання клієнтів, а можна просто запобігати відтік. Ще таке спостереження, чому цей напрямок активно розвивається саме для операторів стільникового зв'язку. У вас є МТС, і ви вирішили поміняти його на Мегафон. Що ви робите: одну сімку дістаєте, іншу вставляєте, і все, МТС більше не може зв'язатися з вами просто так. Може тільки по електронній пошті, за умови того, що ви зареєструвалися в особистому кабінеті. Але зрозуміло, що це вже не те. Тобто у стільникових операторів завдання стоїть так: потрібно передбачити, який клієнт хоче піти, і, поки він ще не пішов, поки йому ще можна зателефонувати, надіслати смс, зробити якусь пропозицію, від якої він не зможе відмовитися, і якось спробувати його утримати. Загалом-то всі найбільші оператори Росії цим займаються. Потрібно зробити деякий введення.

Хто знає, що таке машинне навчання? Відмінно, половина вже чула, половина — не чула. Потрібно для початку це пояснити. Дивіться, ми хочемо щось передбачити. Висловлюючись пафосно – передбачаємо майбутнє. Наприклад, хочемо передбачити, що людина купить якийсь товар в інтернет-магазині і який це буде товар. Можна, наприклад, спробувати передбачити, що твіт в Twitter отримає багато ретвітів. І люди займаються такими передбаченнями, у тому числі в Яндексі. Можна передбачити, що лікування буде ефективним або неефективним, і вибрати найбільш ефективне лікування. Можна, наприклад, передбачити, що хлопець і дівчина складуть гарну пару. Чому б і ні. Можна передбачати курс акцій на наступному тижні. І багато людей, які торгують на біржі, цим професійно займаються. Тема лекції — спробувати передбачити, що гравець перестане грати в онлайн гру. І є ще кілька завдань, вони не про передбачення, але дуже схожі на те, що я буду говорити. Наприклад, розпізнати людину на фотографії, або, наприклад, розпізнавати рукописний текст і ввести його в комп'ютер. Як ви думаєте, які з цих завдань вирішуються з допомогою машинного навчання, а які – ні? Фейсбук пропонує підписати фотографії, хто з твоїх френдів на них. Рукописний текст – досить стара завдання, вона теж вирішується.

Що людина купить якийсь товар в інтернет-магазині. Ви маєте рацію, всі інтернет-магазини мають рекомендаційні блоки: «раджу вам купити», «разом з цим товаром купують» і т. д і т. п. Це все побудовано на передбаченні того, що ти купиш. Що твіт отримає багато ретвітів. Я вже сказав, що це роблять і можна цим займатися. Що лікування буде ефективним? Ні, не можна. Якщо зібрати багато інформації, то можна практично все передбачати. Пункт, що хлопець і дівчина складуть гарну пару. Не знаю, наскільки це науково, наприклад, на якого тваринного ви схожі. Я не думаю, що це засноване на якихось технологіях. Але тим не менше було таке загальне зауваження, що все залежить від загального обсягу інформації. І у нас залишився останній пункт, що хлопець і дівчина складуть гарну пару. Якщо зібрати багато інформації, то можна передбачати краще, ніж випадково вгадувати. Це вірно. Є закордонні сервіси знайомств, які використовують машинне навчання для підбору пар. Можна робити все що завгодно, було таке зауваження, що все залежить від обсягу інформації, і потрібно використовувати правильні методи. Про що машинне навчання?

Машинне навчання – це про те, що ми намагаємося навчити машину (це комп'ютер) або кластер комп'ютерів вирішувати завдання, які легко вміє робити людина. Наприклад, розпізнавати фотографії або рукописний текст, або те, що люди не вміють робити, наприклад, що твіт отримає багато ретвітів або передбачити курс акцій на наступному тижні, а комп'ютер може робити і те, і те. Розпізнавання людей на фото в останні кілька років вийшло на хороший рівень і навіть трохи перевершило рівень людини. Зараз комп'ютер розпізнає людей на фото краще, ніж звичайні люди – ось таке цікаве спостереження. Є лекція про машинне навчання в Малому ШАДе, можете побачити, якщо хто її не бачив, тобто ми вчимо комп'ютер. Як побудоване навчання комп'ютера? Комп'ютер навчається на прикладах. Потрібна така річ, як навчальна вибірка. У самому загальному вигляді ця задача виглядає так: є вхідні дані, є відповідь, і таких прикладів потрібно показати комп'ютера дуже багато, щоб він сам навчився за вхідними даними передбачати відповідь. З формальної точки зору, вхідні дані зазвичай позначають вектором Х – це вектор деяких чисел. Відповідь зазвичай позначають 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, або всередині повідомлення, або щось ще і т. д. Для всього цього можна використовувати машинне навчання. З тими ж стільниковими операторами так і роблять. Це все активно застосовується.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.