Data Mining ситуация - PullRequest
       17

Data Mining ситуация

7 голосов
/ 30 сентября 2011

Предположим, у меня есть данные, как указано ниже.

11:00 user1 Brush

11: 05AM user1 Prep Brakfast

11: 10AM user1 завтракает

11: 15:00 пользователь1 Принять ванну

11: 30:00 пользователь1 Уйти в офис

12 вечера пользователь2 Кисть

12: 05 вечера пользователь2 Подготовка Brakfast

12: 22:00пользователь2 завтракает

12: 15 вечера пользователь2 принимает ванну

12: 30 вечера пользователь2 уходит в офис

11 утра пользователь3 принимает ванну

11: 05 утра пользователь3 готовит завтрак

11: 10 утра пользователь3 Кисть

11: 15 утра пользователь3 ест завтрак

11: 30 утра пользователь3 Уходит в офис

12 вечера пользователь4 Принимайте ванну

12: 05PM пользователь4 Prep Brakfast

12: 10PM user4 Кисть

12: 15PM пользователь4 завтракает

12: 30PM пользователь4 Отъезд в офис

Эти данные говорят мне о распорядке дня разных людей.Из этих данных кажется, что user1 и user2 ведут себя одинаково (хотя есть разница во времени, когда они выполняют действие, но они следуют той же последовательности).По той же причине, User3 и User4 ведут себя одинаково.Теперь я должен сгруппировать таких пользователей в разные группы.В этом примере group1 - user1 и USer2 ..., за которым следует group2, включая user3 и user4

Как мне подходить к такой ситуации.Я пытаюсь изучить интеллектуальный анализ данных, и это пример, который я считаю проблемой интеллектуального анализа данных.Я пытаюсь найти подход к решению, но я не могу придумать одно.Я считаю, что эти данные имеют образец.но я не могу думать о подходе, который может выявить это.Кроме того, я должен сопоставить этот подход с имеющимся у меня набором данных, который довольно большой, но похожий на этот :) Данные относятся к журналам, в которых указано, что события происходят одновременно.И я хочу найти группы, представляющие сходную последовательность событий.

Любые указатели будут оценены.

Ответы [ 2 ]

2 голосов
/ 01 октября 2011

Похоже на кластеризацию поверх , связывающего майнинг , точнее Apriori алгоритм.Что-то вроде этого:

  1. Найдите все возможные ассоциации между действиями, например, последовательности Буш -> Приготовить завтрак, Приготовить завтрак -> Есть завтрак, ..., Буш -> Приготовить завтрак -> Есть завтрак и т.д.Каждую пару, тройку, четверку и т. Д. Вы можете найти в своих данных.
  2. Создайте отдельный атрибут для каждой такой последовательности.Для повышения производительности добавьте 2 для атрибутов пары, 3 для триплетов и так далее.
  3. В этот момент у вас должен быть вектор атрибута с соответствующим вектором усиления.Вы можете рассчитать вектор признаков для каждого пользователя: установите 1 * boost в каждой позиции в векторе, если эта последовательность существует в действиях пользователя, и 0 в противном случае).Вы получите векторное представление каждого пользователя.
  4. В этих векторах используется алгоритм кластеризации, который лучше соответствует вашим потребностям.Каждый найденный класс - это группа, которую вы используете.

Пример:

Отметим все действия буквами:

a - Кисть
b - Приготовление завтрака
c- Восточный завтрак
d - Примите ванну
...

Ваши атрибуты будут выглядеть как

a1: a-> b
a2:a-> c
a3: a-> d
...
a10: b-> a
a11: b-> c
a12: b-> d
...
a30: a-> b-> c-> d
a31: a-> b-> d-> c
...

Пользователь векторы функций в этом случае будет:

attributes   = a1, a2, a3, a4, ..., a10, a11, a12, ..., a30, a31, ...
user1        =  1,  0,  0,  0, ...,   0,   1,   0, ...,   4,   0, ...
user2        =  1,  0,  0,  0, ...,   0,   1,   0, ...,   4,   0, ...
user3        =  0,  0,  0,  0, ...,   0,   0,   0, ...,   0,   0, ...

Для сравнения 2 пользователей требуется некоторая мера расстояния.Самым простым из них является косинусное расстояние , то есть просто значение косинуса между 2 векторами признаков.Если 2 пользователя имеют одинаковую последовательность действий, их сходство будет равно 1. Если у них нет ничего общего - их сходство будет 0.

При измерении расстояния используйте алгоритм кластеризации (скажем, k-означает) создавать группы пользователей.

0 голосов
/ 12 апреля 2015

Использование алгоритма анализа набора элементов, такого как Apriori, как предложено в другом ответе, не является лучшим решением, потому что Apriori не учитывает время или последовательное упорядочение.Таким образом, для рассмотрения порядка требуется выполнить дополнительный этап предварительной обработки.

Лучшим решением является использование алгоритма последовательного интеллектуального анализа, например, PrefixSpan, SPADE или CM-SPADE.Алгоритм последовательного анализа паттернов будет непосредственно находить подпоследовательности, которые часто появляются в наборе последовательностей.

Тогда вы можете применить кластеризацию к найденным последовательным шаблонам!

...