Библиографическое описание:

Смаглий Г. Д. Предсказание уходов пользователей сервиса с помощью машинного обучения // Молодой ученый. — 2016. — №13. — С. 213-215.



SaaS (от англ. site as a service — сайт как сервис) — способ предоставления программного обеспечения пользователю с помощью сайта в сети интернет. В этом случае пользователь не должен устанавливать себе никакого программного обеспечение, а возможный обмен между различными пользователями данного сервиса становится очень простым. В качестве типичных представителей данного способа предоставления программного обеспечения можно привести: онлайн-кинотеатры, социальные сети и другие часто используемые сервисы. При этом некоторые пользователи со временем теряют интерес к сервису или уходят по каким-либо иным причинам. Иногда данных пользователей можно удержать, предоставив им дополнительные преимущества, например, скидку на пользование платным продуктом. Таким образом, ранее предсказание ухода пользователя становится актуальной задачей и успешно решается с помощью алгоритмов машинного обучения, речь о которых и пойдет далее.

Многие SaaS сайты предоставляют платную подписку для своих услуг. Однако пользователи, пользующиеся данным сервисом, могут хотеть уйти. Это может происходить по разными причинам: недовольство качеством услуг за назначенную цену или низкий в целом уровень обслуживания, недостаточное количество функций или отсутствие необходимости в данном сервисе. При возможности заранее предсказать уход того или иного пользователя, оказывается возможным осуществлять некоторые проактивные действия по его удержанию, что зачастую выгодно.

Возможные пути решения данной проблемы.

В качестве возможных методов предсказания, уйдет пользователь или нет в ближайшее время, можно использовать построение сложных моделей, однако зачастую ресурсы, потраченные на исследование и построение таких моделей могут быть высоки и оказаться невыгодными. Поэтому идея использовать машинное обучения для данной задачи кажется перспективной. Для выбора подходящего метода, проведен исследование.

Задача предсказания уходов пользователей.

Задача предсказания уходов пользователей в ближайшее время представима в виде задачи классификации. Каждый пользователь является объектом и представляется в виде набора некоторых признаков. При этом пользователь относится к одному из двух классов 0 или 1, в зависимости от того, уйдет он в ближайшее время или нет. При этом для классификации можно использовать различные алгоритмы и трудно заранее сказать, какой из них будет эффективнее. Для этого исследуем следующие алгоритмы: метод опорных векторов, решающие деревья, случайный лес и библиотеку xgboost, реализующую бустинг деревьев с помощью оптимизации целевой функции градиентным спуском.

Исследование эффективности алгоритмов.

В качестве входных данных взят массив, представляющий собой заходы пользователей сайта Wild Apricot за последние 16 месяцев. В качестве выходных классов взяты следующие: 1, если пользователь уйдет в ближайшие два месяца, 0 — если этого не произойдет. Тестирование алгоритмов делится на два этапа: обучение на тренировочной выборке и тестирование алгоритма на сбалансированной тестовой выборке с построением матрицы ошибок (у которой в шапке указываются предсказанные классы, а в первом столбце — действительные, то есть, правильные), а также считается средняя точность алгоритма и доверительный интервал для точности. Всего проводится 10 тестирований. Выборка объектов для тестового набора происходит методом hold-out и каждый запуск перед обучением случайно откладывается 100 объектов класса 1 и 100 объекта класса 2 для последующего тестирования на них обученного алгоритма.

Метод опорных векторов.

Метод опорных векторов (англ. SVM, support vector machine) — семейство алгоритмов обучения с учителем (англ. supervised learning), которые используются для задач классификации и регрессии. Основная идея метода — перевод исходных векторов в пространство более высокой размерности и поиск разделяющей гиперплоскости с максимальным зазором в этом пространстве. Для анализа использовалась реализация алгоритма из пакета scikit learn для языка Python с параметрами по умолчанию:

from sklearn import svm

clf = svm.SVC()

При исследовании данного метода получена матрица ошибок, показанная в таблице 1.

Таблица 1

Матрица ошибок метода опорных векторов

0

1

0

992

8

1

675

325

А также средняя точность 0.65 и доверительный интервал (при доверительной вероятности 0.95) для точности — (0.64, 0.68). Такая низкая точность обуславливается, вероятной невозможностью линейно разделить данные классы.

Метод решающих деревьев.

Метод решающих деревьев — средство поддержки принятия решений, использующееся в статистике и анализе данных для прогнозных моделей. Структура дерева представляет собой «листья» и «ветки». На ребрах («ветках») дерева решения записаны атрибуты, от которых зависит целевая функция, в «листьях» записаны значения целевой функции, а в остальных узлах — атрибуты, по которым различаются случаи. Чтобы классифицировать новый случай, надо спуститься по дереву до листа и выдать соответствующее значение. Подобные деревья решений широко используются в интеллектуальном анализе данных. Для данной задачи использовались решающие деревья из пакета scikit learn с параметрами по умолчанию:

from sklearn import tree

clf = tree.DecisionTreeClassifier()

И полученная матрица ошибок представлено в таблице 2.

Таблица 2

Матрица ошибок метода решающих деревьев

0

1

0

975

25

1

548

452

А также средняя точность 0.71 и доверительный интервал (при доверительной вероятности 0.95) для точности — (0.69, 0.73). Как видно, точность уже возросла, потому что используется нелинейное разделение, однако все еще высока, что обуславливается проблемами переобучения решающих деревьев.

Метод случайного леса.

Метод случайного леса — алгоритм машинного обучения, предложенный Лео Брейманом и Адель Катлер, заключающийся в использовании комитета (ансамбля) решающих деревьев. Алгоритм сочетает в себе две основные идеи: метод бэггинга Бреймана, и метод случайных подпространств. Алгоритм применяется для задач классификации, регрессии и кластеризации. Его реализация также есть в пакете scikit learn, чем и воспользуемся, причем выберем количество деревьев в комитете равным 100, что оптимально для данной задачи:

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators = 100)

Проведем эксперимент и построим матрицу ошибок. Она приведена в таблице 3.

Таблица 3

Матрица ошибок для метода случайного леса

0

1

0

978

22

1

489

511

Среднюю точность посчитаем из таблицы 3 и получим 0.74 и доверительный интервал (0.72, 0.76) — при доверительной вероятности 0.95. Точность, как видно, выше, чем у метода решающих деревьев, однако все еще низка из-за проблем с переобучением.

Метод градиентного бустинга деревьев.

Метод градиентного бустинга деревьев из библиотеки xgboost — метод, основанный на использовании приемов бустинга ансамбля деревьев с использованием оптимизации целевой функции, которая также включает в себя регуляризацию. Оптимизация, что отличительно, производится с помощью градиентного спуска к экстремуму целевой функции. При использовании данного метода получим матрицу ошибок, представленную в таблице 4.

Таблица 4

Матрица ошибок для метода градиентного бустинга

0

1

0

966

34

1

299

701

А также среднюю точность 0.83 при доверительном интервале с доверительной вероятностью 0.95, равным (0.82, 0.86). Как видно, результаты получились гораздо лучше, что обусловлено хорошей стойкостью алгоритма к переобучению в сочетании с возможностью нелинейного разделения классов.

Заключение.

Были рассмотрены различные методы предсказания уходов пользователей интернет сервиса по их количеству заходов на протяжении последних 16 месяцев. В ходе исследования получено, что данная задача плохо решается с помощью линейных методов классификации, а также способствует переобучению некоторых алгоритмов. Однако метод градиентного бустинга ансамблей решающих деревьев успешно может быть применим для решения данной задачи.

Литература:

  1. Eric Matthes Python Crash Course: A Hands-On, Project-Based Introduction to Programming / Eric Matthes — No Starch Press, 2015. – 560 с.
  2. Christopher Bishop Pattern Recognition and Machine Learning (Information Science and Statistics) / Christopher Bishop — Springer, 2007. — 738 с.

Обсуждение

Социальные комментарии Cackle