Контролируемое обучение для поведения пользователя с течением времени - PullRequest
5 голосов
/ 09 августа 2011

Я хочу использовать машинное обучение для идентификации подписи пользователя, который конвертируется в подписчика веб-сайта, учитывая его поведение с течением времени.

Допустим, у моего веб-сайта есть 6 различных функций, которые можно использовать перед подпиской, и пользователи могут в любое время преобразоваться в подписчика.

Для данного пользователя у меня есть статистика, которая представляет интенсивность в непрерывном диапазоне взаимодействия этого пользователя с функциями 1-6 на ежедневной основе, так:

  • D1: f1, f2, f3, f4, f5, f6
  • D2: f1, f2, f3, f4, f5, f6
  • D3: f1, f2, f3, f4, f5, f6
  • D4: f1, f2, f3, f4, f5, f6

Скажем, в день 5 пользователь конвертирует.

Какая машина, использующая алгоритмы, помогла бы мне определить, какие наиболее распространенные шаблоны использования функций приводят к преобразованию?

(я знаю, что это супер базовый вопрос классификации, но я не смог найти хороший пример, используя продольные данные, где входные векторы упорядочены по времени, как у меня)


Для дальнейшего развития проблемы давайте предположим, что каждая функция имеет 3 интенсивности, с которыми пользователь может взаимодействовать (H, M, L).

Затем мы можем представить каждого пользователя в виде строки состояний интенсивности взаимодействия. Итак, для пользователя:

  • LLLLMM LLMMHH LLHHHH

В первый день это означало бы, что они значительно взаимодействовали только с функциями 5 и 6, но к третьему дню они активно взаимодействовали с функциями 3-6.

N-граммовый стиль

Я мог бы сделать из этих состояний слова и время жизни пользователя предложением. (Возможно, потребуется добавить слово «преобразование» в словарь)

Если бы я пропустил эти «предложения» через n-граммную модель, я мог бы получить вероятное будущее состояние пользователя, учитывая его / ее последние несколько состояний, что несколько интересно. Но, что я действительно хочу знать, это наиболее распространенные наборы n-грамм, которые приводят к слову преобразования. Вместо того, чтобы вводить n-грамм и получать следующее предсказанное слово, я хочу дать предсказанное слово и вернуть 10 самых распространенных n-грамм (по моим данным), которые, вероятно, приведут к слову.

Амац Гердагделен предлагает определить n-граммы для практического n, а затем подсчитать, сколько n-граммовых состояний имеет каждый пользователь. Затем корреляция с данными конверсии (в этом примере, я думаю, нет слова конверсии). Я обеспокоен тем, что было бы слишком много n-грамм, чтобы сделать этот метод практичным. (если у каждого состояния есть 729 возможностей, и мы используем триграммы, это много возможных триграмм!)

В качестве альтернативы, могу ли я просто просмотреть данные, записывающие n-граммы, которые привели к слову преобразования, а затем выполнить кластеризацию по ним, чтобы узнать, каковы общие пути преобразования?

Стиль выживания

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

Стиль дерева решений

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

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

Ответы [ 4 ]

4 голосов
/ 09 августа 2011

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

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

Я бы также подумал о преобразовании данных в векторы фиксированной длины и применении концептуально более простых моделей, которые могли бы дать вам некоторое представление о том, что происходит. Вы можете использовать n-грамм (последовательные последовательности взаимодействия длины n).

В качестве примера, предполагая, что последовательность взаимодействия данного пользователя "f1, f3, f5", "f1, f3, f5" будет составлять 3 грамма (триграмма). Точно так же для того же пользователя и той же последовательности взаимодействия у вас будут "f1, f3" и "f3, f5" как 2 грамма (биграммы). Чтобы представить каждого пользователя как вектор, вы должны идентифицировать все n-граммы вплоть до практического n и подсчитать, сколько раз пользователь использовал данный n-грамм. Каждый столбец в векторе будет представлять количество раз, которое данный n-грамм наблюдается для данного пользователя.

Затем - возможно, с помощью некоторых подходящих методов нормализации, таких как точечная взаимная информация или tf-idf - вы можете посмотреть на корреляцию между n-граммами и окончательный результат, чтобы получить представление о том, что происходит, выполнить выбор функции , чтобы найти наиболее заметные последовательности, в которых участвуют пользователи, или применить методы классификации, такие как ближайший сосед, вспомогательный компьютер или наивный байесовский метод, для построения прогнозирующая модель.

0 голосов
/ 11 августа 2011

Я думаю, что Ngramm является наиболее многообещающим подходом, потому что вся последовательность в интеллектуальном анализе данных рассматривается как элементы, зависящие от нескольких основных шагов (HMM, CRF, ACRF, поля Маркова), поэтому я попытаюсь использовать классификатор, основанный на 1 грамме и 2 -grams.

0 голосов
/ 09 августа 2011

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

Я забыл упомянуть об этом раньше.Вы также можете взглянуть на алгоритм Google PageRank.Это помогло бы вам учесть, что пользователь полностью исчезает [не подписывается].Результаты этого помогут вам стимулировать использование определенных функций.[Потому что они, скорее всего, дадут вам продажу]

0 голосов
/ 09 августа 2011

Это скорее похоже на проблему анализа выживания: со временем пользователь преобразуется или может выпасть из популяции, или будет продолжать появляться в данных и не попадать (пока) ни в один из лагерей.Для этого вам может пригодиться модель пропорциональных рисков Кокса.

Если вы хотите рассмотреть что-то под другим углом, а именно еще с точки зрения графических моделей, тогда фильтр Калмана может быть более привлекательным.Это обобщение HMM, предложенных @ AmaçHerdağdelen, которые работают для непрерывных пространств.

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

...