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


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.