2011-09-30 11 views
7

Supponiamo di avere i dati come indicato di seguito.Situazione data mining

11:00 user1 Brush

11:05 AM user1 Prep Brakfast

11:10 AM user1 mangia la prima colazione

11:15 AM bagno user1 Prendere

11:30 AM user1 Partenza per ufficio

12PM user2 Brush

1 14:05 user2 Prep Brakfast

12:10 PM user2 mangiare colazione

12:15 PM bagno user2 Prendere

12:30 PM user2 Partenza per ufficio

bagno 11:00 user3 Prendere

11 : 05AM user3 Prep Brakfast

11:10 AM user3 Brush

.210

11:15 user3 mangia la prima colazione

11:30 AM user3 Partenza per ufficio

12:00 vasca user4 Prendere

12:05 PM user4 Prep Brakfast

12:10 PM user4 Brush

12:15 user4 eat Breakfast

12:30 PM utente4 Partenza per l'ufficio

Questi dati mi raccontano la routine quotidiana di persone diverse. Da questi dati sembra che user1 e user2 si comportino in modo simile (sebbene ci sia una differenza nel tempo in cui eseguono l'attività ma stanno seguendo la stessa sequenza). Con lo stesso motivo, Utente3 e Utente4 si comportano allo stesso modo. Ora devo raggruppare questi utenti in gruppi diversi. In questo esempio, group1- user1 e USer2 ... seguito da group2 compreso user3 e user4

Come dovrei affrontare questo tipo di situazione. Sto cercando di imparare il data mining e questo è un esempio che ho pensato come un problema di data mining. Sto cercando di trovare un approccio per la soluzione, ma non riesco a pensarne uno. Credo che questi dati abbiano lo stesso schema. ma non sono in grado di pensare all'approccio che può rivelarlo. Inoltre, devo mappare questo approccio sul set di dati che ho, che è abbastanza grande ma simile a questo :) I dati riguardano i registri che indicano l'occorrenza di eventi alla volta. E voglio trovare i gruppi che rappresentano una sequenza di eventi simile.

Qualsiasi suggerimento sarebbe apprezzato.

risposta

2

Sembra il clustering in cima associare mineraria, più precisamente Apriori algoritmo.Qualcosa di simile a questo:

  1. miniera di tutte le possibili associazioni tra le azioni, vale a dire le sequenze di Bush -> Prep colazione, Prep Breakfast -> Mangia colazione, ..., Bush -> Prep Breakfast -> fare colazione, ecc Ogni coppia , tripletta, quadrupla, ecc. che puoi trovare nei tuoi dati.
  2. Crea attributo separato da ciascuna di tali sequenze. Per ottenere prestazioni migliori, aggiungere un incremento di 2 per gli attributi della coppia, 3 per le terzine e così via.
  3. In questo momento è necessario un vettore di attributo con il vettore di incremento corrispondente. È possibile calcolare il vettore di funzionalità per ciascun utente: impostare 1 * incremento in ogni posizione nel vettore se questa sequenza esiste nelle azioni utente e 0 in caso contrario. Otterrai la rappresentazione vettoriale di ciascun utente.
  4. Su questi vettori utilizzare l'algoritmo di clustering che si adatta meglio alle vostre esigenze. Ogni classe trovata è il gruppo che usi.

Esempio:

Diamo contrassegnare tutte le azioni come le lettere:

un - Pennello
b - Prep colazione
c - East colazione
d - prendere il bagno
..

Gli attributi sarà simile

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
...

Utente vettori di feature in questo caso sarà:

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, ... 

al Confronto 2 utenti è necessario un po 'di misura di distanza. Il più semplice è cosine distance, ovvero solo il valore di coseno tra 2 vettori di caratteristiche. Se 2 utenti hanno esattamente la stessa sequenza di azioni, la loro somiglianza sarà uguale a 1. Se non hanno nulla di comune, la loro somiglianza sarà 0.

Con la misura della distanza utilizzare l'algoritmo di clustering (ad esempio, k-means) per creare gruppi di utenti.

+0

Grazie .. Penso di aver ottenuto ciò che hai spiegato. Dovrebbe essere una buona idea fare il clustering come hai spiegato. Ci lavorerò. Grazie mille per l'aiuto :) – user722856

0

L'utilizzo di un algoritmo di mining di set di elementi come Apriori come proposto nell'altra risposta non è la soluzione migliore poiché Apriori non considera il tempo o l'ordine sequenziale. Pertanto, è necessario eseguire una fase di pre-elaborazione aggiuntiva per valutare l'ordine.

Una soluzione migliore consiste nell'utilizzare un algoritmo di estrazione sequenziale di pattern come PrefixSpan, SPADE o CM-SPADE direttamente. Un algoritmo di mining sequenziale di pattern troverà direttamente sottosequenze che appaiono spesso in un insieme di sequenze.

Quindi è ancora possibile applicare il clustering sui modelli sequenziali trovati!

Problemi correlati