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

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

Что, черт возьми, это разработка паттернов ??

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

Ладно, а как тогда использовать его в своем футляре?

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

Майнинг кликов пользователей

Существует множество алгоритмов поиска паттернов, таких как хорошо известный алгоритм Apriori, PrefixScan, BIDE… [2] [3] [4] Однако ни один из них не сканирует непрерывные потоки кликов в их исходной форме. Следовательно, был реализован специальный и простой алгоритм интеллектуального анализа данных с использованием скользящих окон разных размеров для сканирования журналов действий и подсчета всех возможных шаблонов.

Затем мы отбросили все незамкнутые шаблоны (закрытый шаблон - это шаблон, в котором нет супер-шаблона с таким же количеством вхождений). Метод не оптимален, но прост: группировка шаблонов по количеству вхождений и проверка, является ли каждый шаблон суб-шаблоном другого. После этой первой очистки осталось более 1200 шаблонов для каждого пользователя за две недели. Среди них многие были членами одной семьи, а это значит, что избыточность по-прежнему высока ...

Итак, что ты сделал?

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

Иерархическая кластеризация паттернов с использованием функции SciPy Linkage

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

В нашем случае сохранение расстояния между 1,1 и 2 даст около 400 кластеров на пользователя.

Хм ... Это еще слишком много, не так ли?

Ага, вот и последний этап обработки: оценка паттернов.

Как оценить важность паттернов?

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

А как вычислить периодичность паттерна?

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

(actionA, actionB, ...) -> (0, 4, ...)

Такое преобразование позволяет нам использовать алгоритмы обработки сигналов, особенно метод автокорреляции . Автокорреляция - это взаимная корреляция сигнала с самим собой, но с разными задержками. Короче говоря, если сигнал содержит периодический паттерн, автокорреляционная функция покажет его.

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

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

Если вы заинтересованы в оптимизации и анализе активности пользователей в Интернете, не стесняйтесь делиться своими мыслями, добавлять комментарии или писать мне на [email protected]!

Спасибо за прочтение!

[1]: Вы, Интернет и ваше устройство: продольная характеристика привычек просмотра, Лука Вассио, Идилио Драго, Марко Меллиа, Зиед Бен Хуиди, Мохамед Ламин Ламали, 2018

[2]: Быстрые алгоритмы для правил горнодобывающей ассоциации, Ракеш Агравал Рамакришнан Шрикант, 1994.

[3]: Эффективный анализ последовательных шаблонов за счет роста прогнозируемых по префиксу шаблонов, Цзян Пей, Цзявэй Хан, Бехзад Мортазави-Асл, Хелен Пинто, 2001

[4]: BIDE: Эффективный майнинг частой закрытой последовательности Цзяньюн Ван и Цзявэй Хан, 2004 г.