Який алгоритм можна використовувати для пошуку кореляцій між подіями?


12

Я новачок у машинному навчанні, тому намагаюся знайти трохи літератури, але я навіть не впевнений, для чого Google. Мої дані мають такий вигляд:

User A performs Action P
User B performs Action Q
User C performs Action R
...
User C performs Action X
User A performs Action Y
User B performs Action Z
...

Якщо кожна дія має певні характеристики (дата, час, клієнт тощо). Налічує близько 300 користувачів, а у нас близько 20 000 дій.

Питання :

Я хочу з’ясувати, чи є причинність / кореляція між діями користувача. Наприклад, "щоразу, коли користувач E виконує дію T, через 2 дні Користувач G виконує дію V". Але між ними може бути багато інших користувачів, які виконують багато інших дій, і можливо, кореляції не знайти. Можливо також, що деякі користувачі корелюють, але інші абсолютно незалежні. Це щось, що могло б знайти машинне навчання для мене? Чи є певний алгоритм чи набір алгоритмів, який міг би мені допомогти?

Я читав про Аналіз асоціацій та алгоритм Apriori, але не думаю, що це дасть мені те, що мені потрібно, оскільки, здається, потрібні відомі, чітко визначені набори даних як вхідні дані, тоді як у мене просто довгий потік, здавалося б, випадкового користувача дії. Будь-які пропозиції щодо того, на що слід звернути увагу, були б дуже вдячні!


1
Якщо ви намагалися поставити подію на спрямований графік , вершина представляє тип дії, наприклад . Існує край якщо якийсь користувач робив дії до . його можна легко зважити з кількістю користувачів, які виконали таку послідовність. Ви також можете робити графік на кожного користувача. ( i , j ) i jG=(V,E)P(i,j)ij
0x90

Відповіді:


1

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

Дивіться таблицю транзакцій у цій статті: Аналіз ринкових кошиків

У вашому випадку вам потрібно встановити (і налагодити) максимальний проміжок часу між взаємодією, на яку очікується співвіднесення, тоді ви можете вибрати частого користувача, і для кожної транзакції, яку він здійснив (або зразок), ви додасте в один запис 2 дні іншої трансакції користувача. Атрибути повинні бути булевими, наприклад

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]

Це дуже корисно, дякую! Отже, я б запускав алгоритм один раз для кожного користувача, запитуючи його, чи є якийсь інший користувач кореляційним із цим користувачем, чи можна запустити його лише один раз, і попросити "покажіть мені набори користувачів, які мають кореляцію"?
Метт

Дотримуючись мого підходу, ви могли лише протестувати "візерунок", розпочатий парою користувач + тракція. Яких користувачів та дій потрібно вибрати, це залежить від ваших знань про можливе співвідношення.
cesko80

Три пропозиції. 1. Звужте запит. Не буде неповажним, але не існує єдиної, дивовижно всеохоплюючої статистичної процедури, яка може розповісти вам про всі змістовні асоціації з безлічі, безлічі можливих, притаманних вашим даним. 2. Прочитайте аналіз часових рядів. 3. Прочитайте методи розрізнення причинно-наслідкової зв'язку від простої кореляції. На жаль, у мене немає жодного швидкого виправлення!
rolando2

1

Один із способів дослідження ваших даних - скласти таблицю попередньої дії x наступної дії. Тому для кожної події знайдіть наступну дію того ж користувача. Можна аналогічно скласти таблицю затримки попередньої дії X до наступної дії.

Тоді ви могли б вивчити, чи впливає попередня дія на наступну. Якщо ні, то ваші користувачі "без громадянства".

Ще одне можливе спрощення - ігнорувати користувачів і запитувати, чи частота кожної дії однакова за часом чи змінюється; і якщо змінюється, чи є циклічним чи показує тенденцію.

Відповіді на ці запитання можуть свідчити, що ваші дані мало структури. Крім того, вони можуть поставити деякі нові гіпотези для перевірки.


1

Це цікаве питання. Найкращий підхід - вивчити весь набір даних та створити таблицю частот. Наприклад: Користувач A виконує дії P і Y Користувач B виконує дії Q і Z, Користувач C виконує дії R і X. Так само, що більше користувачів виконує більше дій. Таким чином, існує декілька підходів для вирішення цього набору даних 1) Алгоритм кластера для групування подібних елементів у різні відрізки 2) Аналіз ринкових кошиків для виявлення користувачів проти відображення та частоти дій

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.