Использование атрибутов для классификации / кластеризации пользовательских профилей

14

У меня есть набор данных пользователей, покупающих продукты с веб-сайта.

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

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

Я приложил образец изображения, как показано ниже:

введите описание изображения здесь

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

Я имею в виду кластеризацию, поскольку они не контролируются, но эти идентификаторы являются упорядоченными числами, не имеющими числового значения. Тогда я не знаю, как применить алгоритм. Я тоже думаю о классификации. Если я добавлю столбец класса на основе объема продаж приобретенного продукта. Я думаю, что кластеризация является более предпочтительной. Я не знаю, какой алгоритм мне следует использовать в этом случае, поскольку размеры идентификатора ключевых слов могут быть более 10000 (у каждого продукта может быть много ключевых слов, так же как и у веб-сайта). Мне нужно использовать Spark для этого проекта.

Может ли кто-нибудь помочь мне с некоторыми идеями или предложениями?

Спасибо огромное!

Сильвия
источник
1
Можете ли вы предоставить больше информации? Что такое «идентификатор категории продукта A» и «поиск по ключевым словам идентификатора продукта A» одинаковой длины для всех записей? "размеры идентификатора поисковых ключевых слов могут быть больше 10000" почему? кто они такие? Сколько образцов у вас есть? на все вопросы можно ответить, если вы разместите здесь несколько примеров ваших данных. Тогда я мог бы предложить вам кое-что.
Kasra Manshaei
Являются ли продукт A и продукт B двумя продуктами, которые купил пользователь? Формулировка предполагает, что продукты A и B различны для каждого пользователя, поскольку ключевые слова могут различаться. Это так? И последний комментарий, вы хотите классифицировать или кластер? Это совершенно разные техники :)
logc
Большое спасибо @kasramsh за ваши ответы. Я обновил описание, а также приложил пример данных. Надеюсь получить некоторые предложения от вас!
Сильвия
@logc да, продукт (я сказал продукт A ранее) и веб-сайт (я сказал продукт B ранее) отличаются от каждого пользователя. У каждого продукта есть несколько ключевых слов, и у каждого веб-сайта есть несколько ключевых слов. Либо кластеризация, либо классификация - это хорошо, пока я могу создать профиль пользователя, например, «юный геймер»; "Останься дома, мам". Я думаю, что кластеризация является более предпочтительной. Спасибо!!
Сильвия
@sylvia - мне нужно решить похожую проблему. Я разместил это как отдельный вопрос. Не могли бы вы дать несколько советов о том, как вы решили это? datascience.stackexchange.com/questions/12930/… Мое другое сомнение касается K означает, вы группировали записи по клиентам? Значение означает, что каждая строка представляет транзакцию или представляет совокупные покупки этого клиента до даты.
Нил

Ответы:

11

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

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

Чтобы выполнить кластеризацию для ваших пользователей, вам нужно, чтобы они были как некие точки в абстрактном пространстве. Затем вы измерите расстояния между точками и скажете, что точки, которые «близки», «похожи», и пометите их в соответствии с их местом в этом пространстве.

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

В качестве примера, давайте представим профиль пользователя с тремя функциями:

  • доллары, потраченные в "технических" сетях,
  • доллары, потраченные на "модные" товары,
  • и доллары, потраченные на «агрессивные» видеоигры на «семейные» сети (кто знает).

Чтобы создать эти профили, вам необходимо сопоставить имеющиеся у вас «категории» и «ключевые слова», которые слишком многочисленны, с функциями, которые вы считаете актуальными. Для этого посмотрите тему моделирования или семантического сходства . Как только эта карта будет построена, в ней будет указано, что все доллары, потраченные на веб-сайты с ключевыми словами "гаджет", "электроника", "программирование" и X другими, должны быть объединены в нашу первую функцию; и так далее.

Не бойтесь «навязывать» функции! Вам нужно будет уточнить их и, возможно, полностью изменить их после того, как вы сгруппировали пользователей.

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

Составьте график этих «репрезентативных» точек, а также сопоставьте их с другими кластерами. Использование радиолокационной карты очень полезно здесь. Везде, где есть существенная особенность (что-то в представителе, которое очень заметно, и также очень заметно в сравнении с другими кластерами), является хорошим кандидатом, чтобы помочь вам пометить кластер какой-нибудь броской фразой («ботаники», «модницы»). , "агрессивные мамы" ...).

Помните, что проблема кластеризации - это открытая проблема, поэтому «правильного» решения не существует! И я думаю, что мой ответ уже довольно длинный; Проверьте также о нормализации профилей и фильтрации выбросов.

logc
источник
Огромное спасибо! Это очень полезно. Я начну с картирования. Я очень ценю это!
Sylvia
Рад был помочь. :)
logc
Привет @logc, я применил LDA для выбора функций. Я рассматривал каждый user_id как «документ», а ключевые слова - это «слова» в «документе», затем, применив LDA, я получил несколько тем с ключевыми словами. Однако я не знаю, почему большинство моих тем состоят из одних и тех же ключевых слов. Означает ли это, что LDA не подходит для моего случая или есть ошибки? Спасибо огромное!
Сильвия
@sylvia: Я бы предложил вам превратить этот вопрос в новый вопрос на этом сайте. В противном случае мы могли бы написать тонну комментариев, и это не лучший формат для вопросов и ответов. :)
logc
Спасибо за предложение. Вот ссылка, которую я разместил, если у вас есть время посмотреть datascience.stackexchange.com/questions/5941/… Спасибо!
Сильвия
-2

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

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

lennyklb
источник
Спасибо @ Леннарт Клоппенбург за ваш ответ. Как выполнить выбор функции, если атрибут (keword_id) имеет порядковый номер? Я обновил пример данных выше. Не могли бы вы взглянуть и дать мне несколько советов? Спасибо!
Сильвия