Classificare i clienti in base a 2 funzionalità E una serie temporale di eventi


12

Ho bisogno di aiuto su quello che dovrebbe essere il mio prossimo passo in un algoritmo che sto progettando.

A causa delle NDA, non posso rivelare molto, ma cercherò di essere generico e comprensibile.

Fondamentalmente, dopo diversi passaggi negli algoritmi, ho questo:

Per ogni cliente che ho e gli eventi che fanno durante un mese, durante i primi passi ho raggruppato gli eventi in diverse categorie (ogni cliente avrà gli eventi separati in categorie che vanno da 1 a x essendo x tra 1 e 25, generalmente le prime categorie hanno una maggiore densità di eventi rispetto alle altre).

Per ogni categoria e cliente ho creato una serie temporale che aggrega gli eventi del mese all'ora (ottenendo modelli di quando questi eventi vengono svolti). Inoltre sto usando un paio di variabili normalizzanti in base al numero di giorni in un mese (30 giorni) in cui il ragazzo esegue almeno un evento e il numero di giorni con almeno un evento sul totale dei giorni con almeno uno evento (aggregando tutti i cluster). Il primo mi dà un rapporto su quanto il cliente è attivo durante il mese e il secondo valuta la categoria rispetto agli altri.

Il tavolo finale è simile a questo

|*Identifier*|  *firstCat* | *feature1* | *feature2*  |   {      *(TIME SERIES)*   }

CustomerID  |  ClusterID |  DaysOver30 | DaysOverTotal | Events9AM Events10AM ... 

 xx | 1 | 0,69 |  0,72 |  0,2   0,13   ...

 xx | 2 | 0,11 |  0,28 |  0,1   0,45   ...

 xy | 1 | 0,23 |  0,88 |  0,00  0,60   ...

 xy | 2 | 0,11 |  0,08 |  1,00  0,00   ...

 xy | 3 | 0,10 |  0,04 |  0,40  0,60   ...

Le variabili delle serie temporali sono la percentuale sul totale degli eventi al giorno per ciascuna categoria specifica (ciò significa che per ogni riga sommando tutte le variabili dovrebbe essere 1). Il motivo per farlo in questo modo è perché, ad esempio, una serie temporale con eventi 0 0 0 1 0e 1 1 1 2 1sono completamente diversi e la standardizzazione alla normalità darebbe risultati simili. E a causa dell'elevato disallineamento tra le diverse categorie, controllo i valori delle serie storiche indipendentemente dalle altre.

Quello che devo fare ora è identificare queste categorie (ricordate, possono essere da 1 a x essendo x qualsiasi numero da 1 a 25) in 3 tag: tag A, tag B e Nessuno di loro. Osservando queste variabili posso identificare manualmente a quale tag appartengono, e l'idea è quella di identificare manualmente il più possibile e utilizzare qualsiasi algoritmo di classificazione per imparare da ciò e identificarli tutti.

La mia idea era quella di utilizzare più regressioni logistiche sulla tabella, ma tutte le variabili delle serie temporali sono correlate (poiché sono una combinazione lineare l'una dell'altra), quindi ho pensato di usare meglio un algoritmo di clustering solo nelle serie temporali usando euclidean distanza per classificare i diversi modelli e utilizzare il risultato e le altre due variabili normalizzanti nella regressione logistica.

L'altra preoccupazione che ho è che questo approccio prende ogni riga indipendentemente dalle altre e, in teoria, per ogni cliente dovrebbero esserci solo 0 o 1 tag A, 0 o 1 tag B e il resto di loro dovrebbe essere Nessuno (un altro il suggerimento è che normalmente i tag A e B sono tra le prime categorie, perché è fortemente dipendente dalle funzionalità di normalizzazione (se i giorni sul totale sono alti, c'è un'alta possibilità che la riga sia A o B, a seconda del modello di serie temporale) .

Modifica: questa non è più una preoccupazione, eseguirò solo due diverse regressioni logistiche, una per Tag A o Altro e un'altra per Tag B o un'altra, con le probabilità di risultato che posso selezionare solo il meglio di ciascuna.

Il set di dati è enorme e l'algoritmo finale deve essere applicato utilizzando SQL (su Teradata), ma per ottenere i coefficienti della regressione logistica o i centri del cluster ho un campione e utilizzo R.


Solo un suggerimento :) ... Non sono sicuro di ottenere una risposta adeguata purché la domanda sia così lunga. Ad esempio i tuoi tag sono esattamente la mia direzione di ricerca, ma non ho davvero tempo ed energie per leggere tutto! Se riesci ad aggiornare una versione più breve, sarebbe meglio per te Q e anche per te stesso come nei rapporti scientifici devi parlare brevemente.
Kasra Manshaei,

Proverò a ridurre la domanda. È solo che di solito se non mi spiego le persone confondono ciò che intendevo. Ad ogni modo, non appena avrò tempo per il mio lavoro, cercherò di ridurre la dimensione della domanda, grazie per la raccomandazione
JusefPol,

Qual è la tua domanda esatta? Vorrei semplicemente calcolare le funzionalità delle serie storiche e quindi aggiungere queste funzionalità alle funzionalità dei clienti. Quindi avrai solo un clustering di base. Per la scelta delle funzionalità delle serie storiche, è richiesta la conoscenza del dominio.
Nikolas Rieble,

Risposte:


2

So che è passato un po 'di tempo da quando la domanda è stata pubblicata, ma per i futuri lettori propongo qui un'altra soluzione per il problema della classificazione di serie temporali di dati proporzionali, cioè vettori di proporzioni.

I modelli di Markov nascosti (HMM) sono ampiamente utilizzati per la classificazione delle serie storiche. Le implementazioni originali sono state sviluppate per dati discreti e gaussiani ma da allora sono state estese a più distribuzioni di probabilità.

Tra questi, le distribuzioni Dirichlet, Dirichlet generalizzate e Beta-Liouville che sono perfettamente adatte a lavorare con dati proporzionali.

Di solito, un modello viene addestrato per ogni categoria ("Tag" in questa domanda) dalle serie storiche per le quali la categoria è nota. Quando una nuova serie storica deve essere classificata, viene calcolata la sua probabilità rispetto a ciascun modello. La nuova serie storica è generalmente assegnata alla categoria che porta alla massima probabilità.

Ecco i documenti di riferimento per questi modelli che li presentano più in profondità e forniscono tutte le equazioni necessarie per l'implementazione:

  • Modello di miscela di Dirichlet dinamico, Rapporto di ricerca di IDIAP, L. Chen, D. Barber, J.-M. Odobez, aprile 2007
  • Modellazione proporzionale di dati con modelli Markov nascosti basati su miscele Dirichlet e Beta-Liouville generalizzate applicate al rilevamento di anomalie in aree pubbliche, E. Epaillard, N. Bouguila, Pattern Recognition 55, pp 125-136, 2016

Per le due funzioni aggiuntive menzionate nella domanda, gli HMM per i dati misti sono stati sviluppati anche nel seguente documento di ricerca: Modello ibrido nascosto di Markov per la modellazione mista continua / continua e discreta / continua dei dati, E. Epaillard, N. Bouguila, MMSP, pagg. 1-6, 2015.

Questi modelli sono più pesanti da implementare rispetto ai modelli di regressione, ma hanno il vantaggio di essere modelli discriminatori e generativi e di essere in grado di generalizzare bene quando è presente una certa variabilità nei dati elaborati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.