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