Використання атрибутів для класифікації / кластеризації користувачів


14

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

Атрибути, які я маю, - це ідентифікатор користувача, регіон (штат) користувача, ідентифікатор категорій продукту, ідентифікатор ключових слів продукту, ідентифікатор ключових слів веб-сайту та витрата товару на витрату.

Метою є використання інформації про продукт та веб-сайт, щоб визначити, хто такі користувачі, як, наприклад, "молодий хлопець-чоловічок" або "мама вдома".

Я додав зразок зображення, як показано нижче:

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

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

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

Хтось може мені допомогти з якимись ідеями чи пропозиціями?

Дуже дякую!


1
Чи можете ви надати більше інформації? що таке "ідентифікатор категорій продукту A" і "пошук ключових слів ідентифікатор продукту A" однакової довжини для всіх записів? "розмір ідентифікатора ключових слів пошуку може бути більше 10000", чому? хто вони? Скільки у вас зразків? на всі запитання можна відповісти, якщо ви розмістите тут кілька зразків своїх даних. Тоді я міг би вам щось запропонувати.
— Касра Маншаї

Чи є продукт A і продукт B двома продуктами, які придбав користувач? Формулювання, схоже, говорить про те, що продукти A і B різні для кожного користувача, оскільки ключові слова можуть відрізнятися. Це так? І останній коментар, ви хочете класифікувати чи кластеризувати? Це зовсім різні прийоми :)
— logc

Дякую @kasramsh так сильно за відповіді. Я оновив опис і також додав зразкові дані. Сподіваюсь отримати від вас кілька пропозицій!
— sylvia

@logc так, продукт (я казав продукт А раніше) та веб-сайт (я казав продукт Б раніше) відрізняються від кожного користувача. У кожного продукту є кілька ключових слів, і кожен веб-сайт також має кілька ключових слів. Або кластеризація, або класифікація - це добре, якщо я можу створити профіль користувача, наприклад, "молодий хлопець-чоловічок"; "залишитися вдома мама". Я вважаю, що кластеризація є більш кращою. Дякую!!
— sylvia

@sylvia - У мене є подібна проблема для вирішення. Я опублікував це як окреме запитання. Не могли б ви дати кілька пропозицій щодо того, як ви вирішили? datascience.stackexchange.com/questions/12930/… Інші мої сумніви щодо K, значить, ви згрупували записи за клієнтами? Це означає, що кожен рядок представляв собою транзакцію або він представляв собою сукупні покупки цього клієнта на дату.
— Ніл

Відповіді:


11

Зараз у мене є лише час на дуже коротку відповідь, але я спробую розширити це згодом.

Що ви хочете зробити - це кластеризація , оскільки ви хочете виявити деякі мітки для своїх даних. (На відміну від класифікації, де ви мали б мітки принаймні для деяких даних, а ви хочете позначити решту).

Для того, щоб виконати кластеризацію для своїх користувачів, вам потрібно мати їх як певні точки в абстрактному просторі. Потім ви виміряєте відстані між точками і скажете, що точки, які знаходяться "поруч", є "подібними" і позначите їх відповідно до місця в цьому просторі.

Вам потрібно перетворити ваші дані у те, що схоже на профіль користувача, тобто: ідентифікатор користувача, а потім вектор чисел, що представляють особливості цього користувача. У вашому випадку кожна функція може бути "категорією веб-сайту" або "категорією товару", а кількість може бути сумою доларів, витрачених на цю функцію. Або, звичайно, особливістю може бути поєднання Інтернету та продукту.

Як приклад, давайте уявимо профіль користувача, який має лише три функції:

  • долари, витрачені в "технічних" веб-сайтах,
  • долари, витрачені на "модні" продукти,
  • і долари, витрачені на "агресивні" відеоігри на "сімейно орієнтовані" веб-сайти (хто знає).

Для того, щоб створити ці профілі, вам потрібно зіставити наявні у вас "категорії" та "ключові слова", які є занадто великими, у функції, які ви вважаєте релевантними. Погляньте на моделювання теми або семантичну подібність, щоб зробити це. Після того, як ця карта буде побудована, вона зазначає, що всі долари, витрачені на веб-сайти з ключовими словами "гаджет", "електроніка", "програмування" та X іншими, повинні бути об'єднані в нашу першу функцію; і так далі.

Не бійтеся "нав'язувати" риси! Вам потрібно буде уточнити їх і, можливо, повністю змінити їх, як тільки ви кластеруєте користувачів.

Коли у вас є профілі користувачів, перейдіть до їх кластеризації, використовуючи k-засоби або все, що ви вважаєте цікавим. Яку б техніку ви не використовували, вам буде цікаво отримати "представницьку" точку для кожного кластеру. Зазвичай це геометричний "центр" точок у цьому кластері.

Накресліть ці "представницькі" точки, а також побудуйте схему порівняння їх з іншими кластерами. Використання радарної діаграми тут дуже корисно. Де б не було помітною особливістю (щось у представнику, що є дуже помітним, а також є дуже помітним у порівнянні з іншими кластерами), це хороший кандидат, який допоможе вам позначити кластер якоюсь привабливою фразою ("ботаніки", "модниці" , "агресивні мами" ...).

Пам'ятайте, що проблема кластеризації - це відкрита проблема, тому немає "правильного" рішення! І я думаю, що моя відповідь вже досить давня; також перевірити нормалізацію профілів та фільтруючих залишків.


Дуже дякую! Це дуже корисно. Почну з картографування. Я дійсно ціную це!
— sylvia

Раді допомогти. :)
— logc

Привіт @logc, я застосував LDA для вибору функцій. Я розглядав кожен user_id як "документ", а ключові слова - це "слова" в "документі", тоді, застосовуючи LDA, я отримав кілька тем ключових слів. Однак я не знаю, чому більшість моїх тем складаються з одних і тих же ключових слів. Чи означає це, що LDA не є правильним методом для мого випадку або є деякі помилки? Дуже дякую!
— sylvia

@sylvia: Я б запропонував вам перетворити це питання на нове запитання на цьому сайті. В іншому випадку ми можемо написати чимало коментарів, і це не найкращий формат для запитань та запитань. :)
— logc

Дякую за пропозицію. Ось посилання, яке я опублікував, якщо у вас є час поглянути datascience.stackexchange.com/questions/5941/… Дякую!
— sylvia

-2

Для орієнтації та вивчення я можу порекомендувати WeKa , який є дуже приємним інструментарієм для машинного навчання. Він приймає певний формат введення (.ARFF), тому вам може знадобитися також вивчити це.

Щодо дилеми ключових слів, я рекомендую здійснити деякий вибір функцій, щоб усунути зайві або неорієнтовні ключові слова.


Дякую @Lennart Kloppenburg за вашу відповідь. Як здійснити вибір функції, якщо атрибут (keword_id) є порядковим номером? Я оновив вибіркові дані вище. Чи можете ви, будь ласка, поглянути і дати мені кілька пропозицій? Дякую!
— sylvia
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.