• Non ci sono risultati.

Applicazione di Microsoft Clustering

Nel documento START: la decisione oltre al dato (pagine 47-55)

Capitolo 2 – Caso di Studio

3.4 Creazione delle strutture e dei modelli di Data Mining

3.4.2 Applicazione di Microsoft Clustering

Ai fini dell’applicazione concreta dell’algoritmo ai dati considerati per il progetto formativo sono state effettuate delle scelte: era importante capire come impostare l’analisi, quali tipi di relazioni e informazioni si volevano estrapolare e soprattutto a quale livello di granularità. Effettuando delle prove a vari livelli, considerando le prestazioni del tool (che ricordiamo essere su un pc in locale e non su un server) e tenendo conto della struttura con cui i dati dovevano essere passati all’algoritmo, è stato deciso di non utilizzare il cubo per la costruzione dei modelli di Data Mining. Il cubo è stato utilizzato successivamente nella fase di visualizzazione dati.

È stata quindi costruita una vista nel Data Warehouse, nella quale sono stati inseriti i seguenti dati relativi ai clienti:

 Codice Cliente;

 Flag apertura da Cash & Carry;

 Codice del negozio Cash & Carry default;  Data creazione del cliente nel sistema;  Regione della sede legale del cliente;  Nazione della sede legale del cliente;  Valore fatturato per ogni Business Unit;  Totale del valore fatturato;

 Totale del valore fatturato nei negozi Cash & Carry. La vista è stata creata mediante la query seguente:

CREATE VIEW [dbo].[fatt_bu_cli]

AS

(

SELECT [cod_cliente] ,[aperto_da_cash] ,[cash_default]

,[data_creazione] ,[nazione]

,[regione]

,case when [BU1] is null then 0 else [BU1] end as BU1 ,case when [BU2] is null then 0 else [BU2] end as BU2 ,case when [BU3] is null then 0 else [BU3] end as [BU3] ,case when [BU4] is null then 0 else [BU4] end as [BU4] ,case when [BU5] is null then 0 else [BU5] end as [BU5] ,case when [BU6] is null then 0 else [BU6] end as [BU6] ,case when [BU7] is null then 0 else [BU7] end as [BU7] ,case when [BU8] is null then 0 else [BU8] end as [BU8] ,case when [BU9] is null then 0 else [BU9] end as [BU9] ,case when [BU10] is null then 0 else [BU10] end as [BU10] ,case when [BU11] is null then 0 else [BU11] end as [BU11] ,case when [BU12] is null then 0 else [BU12] end as [BU12] ,case when [BU13] is null then 0 else [BU13] end as [BU13] ,case when [BU14] is null then 0 else [BU14] end as [BU14] ,case when [BU15] is null then 0 else [BU15] end as [BU15] ,case when [BU16] is null then 0 else [BU16] end as [BU16] ,case when [BU17] is null then 0 else [BU17] end as [BU17] ,case when [BU18] is null then 0 else [BU18] end as [BU18] ,case when [BU19] is null then 0 else [BU19] end as [BU19] ,case when [BU20] is null then 0 else [BU20] end as [BU20] ,case when [BU21] is null then 0 else [BU21] end as [BU21] ,case when [BU22] is null then 0 else [BU22] end as [BU22]

, tot_fatt, case when tot_fatt_cec is null then 0 else tot_fatt_cec end as tot_fatt_cec FROM (SELECT cli.cod_cliente, cli.aperto_da_cash, cli.cash_default, cli.data_creazione, l.nazione, l.regione, b.dex_bu, v.valore as valore, ft.tot_fatt as tot_fatt

,fatcec.tot_fatt_cec as tot_fatt_cec FROM d_clienti cli

JOIN F_Vendite v on v.ID_cliente = cli.ID_cliente

join D_Calendario cal on v.ID_calendario = cal.ID_data and cal.anno = 2018

join D_Luoghi l on l.ID_Luogo = cli.ID_luogo

join D_Articoli a on v.ID_articolo = a.ID_articolo

join D_RepFamSottofam rfs on a.ID_repfamsottofam = rfs.ID_repfamsottofam

join D_Settori s on s.ID_settore = rfs.ID_settore

join D_Bu b on b.ID_bu = s.ID_bu

left join (

select c.cod_cliente, sum(valore) as tot_fatt_cec

from D_Clienti c join F_Vendite v on v.ID_cliente = c.ID_cliente

join d_documenti doc on v.id_documento = doc.id_documento

where doc.flag_cec = 'S'

group by c.cod_cliente

) fatcec on cli.cod_cliente = fatcec.cod_cliente

left join (

select c.cod_cliente, sum(valore) as tot_fatt

from D_Clienti c join F_Vendite v on v.ID_cliente = c.ID_cliente

group by c.cod_cliente

) ft on cli.cod_cliente = ft.cod_cliente) x PIVOT (sum(valore) FOR dex_bu IN

[BU11],[BU12],[BU13],[BU14],[BU15],[BU16],[BU17],[BU18],[BU19],[BU20],[BU21],[BU22 ])

) p

)

Per poter applicare l’algoritmo Microsoft Clustering ai dati è stata creata una Struttura di Data Mining in Analysis Services, a cui poi sono stati aggiunti i modelli. Una Struttura di Data Mining definisce i dati in base ai quali vengono compilati i modelli; un Modello di Data Mining è un set di dati, statistiche e modelli che possono essere applicati ai dati per generare stime ed eseguire inferenze sulle relazioni. Un modello di Data Mining rimane vuoto finché i dati forniti dalla struttura non vengono elaborati e analizzati. Dopo essere stato elaborato, un modello di Data Mining contiene metadati, risultati e associazioni alla struttura di Data Mining. La struttura di Data Mining è stata creata mediante lo strumento di creazione guidata dedicato, e vi sono stati inclusi tutti i campi della vista sopra descritta.

Figura 46 Struttura di Data Mining creata per il clustering dei clienti

Nella struttura di Data Mining sono stati aggiunti due Modelli di Data Mining: il primo utilizzando K-Means scalabile, il secondo utilizzando EM scalabile. In

entrambi i casi il parametro CLUSTER_COUNT è stato impostato su 0 in modo che il modello individuasse da solo il numero ottimale di cluster.

Figura 47 Modelli di Data Mining costruiti all'interno della Struttura di Data Mining

Per la costruzione dei modelli, i dati sono stati divisi nella Struttura di Data Mining in due set:

 Training Set: insieme di dati utilizzati per costruire il modello;  Test Set: insieme di dati utilizzati per testare il modello.

Attraverso il parametro HoldoutMaxCases è stata infatti impostata la percentuale di dati destinati al test set per un valore pari al 30%. I modelli sono stati distribuiti e quindi elaborati, ed hanno fornito due risultati diversi. Il primo modello, creato utilizzando K-Means, ha fornito un risultato di soli 4 cluster molto diversificati tra loro. Il primo, quello più numeroso, si compone di 6131 record, il secondo di 3114, il terzo di 107 record e infine l’ultimo di 18 record. La distribuzione dei record tra i cluster è quindi molto sbilanciata.

Figura 48 Cluster ottenuti con K-Means

Analysis Services ci permette di visualizzare i cluster con dei grafici che rappresentano la distribuzione dei dati per ogni attributo.

Figura 49 Distribuzione dei valori di alcuni attributi nei cluster

Dalle analisi effettuate, possiamo ricavare le seguenti osservazioni sui cluster:  Cluster 1: clienti per la maggior parte aperti da sede centrale, che hanno ampi volumi di fatturato, sia per Hardware che Software; essi hanno effettuato acquisti importanti anche nei negozi Cash & Carry;  Cluster 2: clienti con un fatturato ingente soprattutto per le Business

Unit che riguardano la vendita di servizi e configurazioni; hanno anche un volume di fatturato considerevole nei negozi Cash & Carry;

 Cluster 3: clienti la cui anagrafica non è stata aperta da un negozio C&C e che hanno acquistato soprattutto Hardware per un volume di fatturato modesto;

 Cluster 4: clienti che hanno acquistato solo Hardware da negozi Cash & Carry; in particolare, si tratta di articoli appartenenti ad una sola Business Unit.

I risultati sopra elencati sono stati resi disponibili grazie a query DMX (Data

Mining Extensions): come già anticipato nei capitoli precedenti, esso

permette di interrogare i modelli di Data Mining per capire ad esempio a quale cluster appartenga un record. Nel nostro caso una delle query più utili è stata la seguente:

SELECT *

FROM [Clustering_KMeans_Scalabile].CASES

WHERE IsInNode('NUMERO_CLUSTER')

Essa ci permette, dato un cluster, di ottenere tutti i record che vi appartengono: in questo modo possiamo osservare subito quali siano le caratteristiche comuni ai record considerati e descrivere i cluster diventa più semplice.

Un altro strumento molto utile di Analysis Services è senza dubbio l’Analisi

discriminante tra cluster: essa ci permette di osservare le caratteristiche di

ogni cluster e confrontarle con quelle degli altri, oppure con un cluster specifico.

Il clustering ottenuto utilizzando l’algoritmo Expectation Maximization ha prodotto un risultato molto diverso da quello di K-Means. I cluster ottenuti sono risultati ben 8.

Figura 51 Cluster ottenuti con Expectation Maximization

 Cluster 1: composto da 3794 record, si tratta dei clienti che hanno un basso valore fatturato in ogni Business Unit; le loro anagrafiche sono state aperte sia da Cash & Carry che da sede centrale;

 Cluster 2: composto da 3224 record, tratta i clienti che hanno acquistato soprattutto articoli da Business Unit che trattano Hardware per cifre poco più alte rispetto a quelle del primo cluster. Hanno inoltre totalizzato un valore fatturato modesto nei Cash & Carry, benché per buona parte le loro anagrafiche siano stati aperte da sede centrale;  Cluster 3: composto da 903 record, i clienti che si trovano al suo interno

mostrano un fatturato sempre modesto, ma localizzato in Business Unit specifiche, come ad esempio Samsung. Il valore fatturato di questi clienti è più alto rispetto a quello dei primi due cluster, sia da un punto di vista totale che del fatturato Cash & Carry; i volumi raggiunti rimangono comunque non troppo alti;

 Cluster 4: composto da 780 record, per l’85% sono clienti non aperti da negozio Cash & Carry ed hanno un volume fatturato medio,

localizzato soprattutto nelle Business Unit che trattano articoli Hardware. Il fatturato Cash & Carry è ad un livello medio;

 Cluster 5: composto da 281 record, riguarda i clienti che hanno un buon volume di fatturato in alcune Business Unit che riguardano la rivendita di Hardware, ma anche di servizi cloud. Il fatturato Cash & carry è ad un buon livello rispetto agli altri cluster;

 Cluster 6: composto da 174 record, contiene i clienti con un buon livello di fatturato soprattutto per i servizi di configurazione e Hardware, con particolare attenzione verso gli acquisti nel settore della sicurezza (come videocamere di sorveglianza ad esempio). Il livello di fatturato nei negozi Cash & Carry è simile a quello del cluster 5;

 Cluster 7: composto da 122 record, raccoglie tutti i clienti che hanno acquistato da tutte le Business Unit e per volumi di fatturato molto ampi;

 Cluster 8: composto da 92 record, riguarda clienti che hanno acquistato soprattutto da Business Unit che trattano prodotti Software, per un volume di fatturato contenuto. Tali clienti non hanno praticamente effettuato acquisti dai negozi Cash & Carry.

Confrontando i due risultati di clustering ottenuti emerge che Expectation Maximization modella molto meglio la realtà aziendale, segmentando la clientela in modo più specifico e dettagliato. Inoltre, da un punto di vista computazionale, come visto nel paragrafo precedente, K-Means è risultato meno prestante e più lento durante l’elaborazione.

Nel documento START: la decisione oltre al dato (pagine 47-55)

Documenti correlati