Поиск шаблонов навигации по сайту с помощью тематического моделирования

Цель и приложения

В этой статье будет показан метод сегментации сеансов навигации по веб-сайту в соответствии с посещенными страницами с использованием подхода тематического моделирования.

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

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

Кластеризация

Кластеризация означает группировку объектов по их сходству. Есть много способов сделать это, в том числе потому, что есть много разных определений того, что такое кластер. Общим знаменателем является то, что кластер - это группа объектов данных.

Методы жесткой кластеризации классифицируют каждый объект как принадлежащий только одному кластеру; тогда как мягкая кластеризация дает этим объектам степень, в которой каждый объект принадлежит кластеру (используя, например, вероятность).

Тематическое моделирование

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

LDA для определения шаблонов навигации

Итак, как мы можем использовать LDA для сегментации сеансов веб-сайта? На самом деле это довольно просто: мы рассматриваем каждый сеанс как документ, где каждая страница - это слово (вы можете использовать URL-адреса или имена страниц, что позволяет вам однозначно идентифицировать каждую страницу). Если это помогает, представьте сеансы как текст, написанный пользователем, где он пытается сказать вам, что он хочет от вашего веб-сайта, используя страницы вместо слов.

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

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

Учебник по коду с Python

Импортируем необходимые библиотеки:

Затем мы извлекаем наши сеансы из нашего исходного DataFrame и подгоняем к нему CountVectorizer. CountVectorizer преобразует текст в плотный вектор.

Предупреждение: страницы должны быть разделены пробелом, а их имена / URL-адреса не должны содержать знаков препинания, таких как точки и запятые. Замените все символы подчеркиванием «_».

На следующем этапе мы выполняем GridSearch: мы просматриваем все возможные комбинации параметров для функции LDA, чтобы найти, какая из них даст лучшие группы, а затем применяем эту комбинацию к нашим данным. Предупреждение: этот шаг может занять некоторое время…

Наконец, мы печатаем все темы вместе со списком слов, которые лучше всего их описывают, и их важностью.

Когда вы будете удовлетворены своими результатами, вы можете жестко сгруппировать их в конце, если это необходимо:

Заключение

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

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

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