Прямо сейчас у меня есть время только для очень краткого ответа, но я постараюсь расширить его позже.
То, что вы хотите сделать, это кластеризация , так как вы хотите найти некоторые метки для ваших данных. (В отличие от классификации, где у вас были бы метки хотя бы для некоторых данных, а остальные вы хотели бы маркировать).
Чтобы выполнить кластеризацию для ваших пользователей, вам нужно, чтобы они были как некие точки в абстрактном пространстве. Затем вы измерите расстояния между точками и скажете, что точки, которые «близки», «похожи», и пометите их в соответствии с их местом в этом пространстве.
Вам необходимо преобразовать ваши данные в нечто, похожее на профиль пользователя, то есть: идентификатор пользователя, за которым следует вектор чисел, которые представляют особенности этого пользователя. В вашем случае каждая функция может быть «категорией веб-сайта» или «категорией продукта», а число может быть суммой долларов, потраченных на эту функцию. Конечно, это может быть комбинация сети и продукта.
В качестве примера, давайте представим профиль пользователя с тремя функциями:
- доллары, потраченные в "технических" сетях,
- доллары, потраченные на "модные" товары,
- и доллары, потраченные на «агрессивные» видеоигры на «семейные» сети (кто знает).
Чтобы создать эти профили, вам необходимо сопоставить имеющиеся у вас «категории» и «ключевые слова», которые слишком многочисленны, с функциями, которые вы считаете актуальными. Для этого посмотрите тему моделирования или семантического сходства . Как только эта карта будет построена, в ней будет указано, что все доллары, потраченные на веб-сайты с ключевыми словами "гаджет", "электроника", "программирование" и X другими, должны быть объединены в нашу первую функцию; и так далее.
Не бойтесь «навязывать» функции! Вам нужно будет уточнить их и, возможно, полностью изменить их после того, как вы сгруппировали пользователей.
Как только у вас появятся профили пользователей, приступайте к их кластеризации с помощью k-средних или любых других факторов, которые вы считаете интересными. Какой бы метод вы ни использовали, вам будет интересно получить «репрезентативные» баллы для каждого кластера. Обычно это геометрический «центр» точек в этом кластере.
Составьте график этих «репрезентативных» точек, а также сопоставьте их с другими кластерами. Использование радиолокационной карты очень полезно здесь. Везде, где есть существенная особенность (что-то в представителе, которое очень заметно, и также очень заметно в сравнении с другими кластерами), является хорошим кандидатом, чтобы помочь вам пометить кластер какой-нибудь броской фразой («ботаники», «модницы»). , "агрессивные мамы" ...).
Помните, что проблема кластеризации - это открытая проблема, поэтому «правильного» решения не существует! И я думаю, что мой ответ уже довольно длинный; Проверьте также о нормализации профилей и фильтрации выбросов.