Nell'ambito della Customer Intelligence, il termine "Churn" si riferisce ad un cliente che rescinde un contratto. In questo progetto, un modello di machine learning viene addestrato su un insieme di clienti di un'azienda di telefonia, per assegnare un fattore di rischio a ciascuno di essi. Il dataset (che contiene dati come il numero di chiamate, i minuti trascorsi al telefono, contatti telefonici,...) è suddiviso in un file CSV, un file Table ed un file Excel. Ogni cliente può essere identificato da un prefisso ("Area code") e da un numero di telefono. Il workflow inizia leggendo i dati attraverso 3 nodi: CSV Reader, Table Reader ed Excel Reader. La finestra di dialogo di questi nodi mostra un'anteprima e il contenuto del file. Il secondo passo consiste nell'unire i dati dei tre file, utilizzando i numeri di telefono e prefissi come chiavi di configurazione. Il Joiner node combina due tabelle in modo simile ad un join in un database. Combina ogni riga dalla porta di input superiore con ogni riga dalla porta di input inferiore che ha valori identici nelle colonne selezionate. Poiché nel nostro caso abbiamo tre file, ho usato il Concatenate node per concatenare le colonne con lo stesso nome, a partire dai file Table ed Excel. L'output di questo nodo è stato quindi inserito come input nel Joiner node insieme al file CSV. Successivamente, le colonne "Churn" e "Area code" vengono convertite in tipo "string" con il nodo Number to string, per soddisfare il requisito per l'algoritmo di classificazione (in questo caso, nominale). Si procede ad esplorare il set di dati tramite grafici visivi. Il Grouby node raggruppa le righe di una tabella in base ai valori univoci nelle colonne del gruppo selezionato. Il Bar Chart node rivela che il campione di "Churn" è sbilanciato e che la maggior parte delle osservazioni riguarda clienti che non hanno chiesto una disdetta (circa l'85%). Comprendiamo che ci sono molti meno clienti che abbandonano rispetto a quelli che non lo fanno. Da lì, il flusso di lavoro si divide in due. Il primo percorso prevede un nodo SMOTE per affrontare questo squilibrio di classe, sovra campionando la classe minoritaria creando esempi sintetici. L'esecuzione della procedura SMOTE richiede molto tempo e risorse, per questo motivo è stato previsto anche un secondo percorso basato sui dati reali disponibili. Successivamente, è stato aggiunto un colore a ciascuna riga in base alla colonna "Churn" con il Color manager node. Si è poi creato un set di addestramento e un set di test con un nodo Partitioning. Il nodo è stato configurato in questo modo: selezionando "Relativo" e impostando l'80% e selezionando "Campionamento stratificato" utilizzando la colonna "Churn". Successivamente, ho addestrato un Decision tree con il nodo Decision tree learner, per prevedere quali clienti sono propensi ad abbandonare utilizzando il set di addestramento, selezionando "Churn" come class column, ed ho collegato la porta di output del modello al nodo Decision Tree Predictor. Alla fine, il nodo Scorer confronta due colonne e mostra la confusion matrix, in cui ogni colonna della matrice rappresenta i valori predetti, mentre ogni riga rappresenta i valori reali. Inoltre, la seconda porta di output riporta una serie di statistiche di accuratezza come True-Positives, False-Positives, True-Negatives, False-Negatives, Recall, Precision, Sensitivity, Specificity, F-measure, nonché l'accuratezza complessiva. Si è poi voluto fare un confronto tra gli outputs ottenuti dagli Scorer nodes dei due path, unendo i risultati tramite il Concatenate node, per poi rendenderli visibili graficamente e su tabella. Con il numero 1 si identica il campione di "Churn", con 0 la mancata disdetta, mentre con il suffisso _balanced si possono riconoscere i valori ottenuti col percorso preceduto dal nodo Smote.
Workflow
KNIME_project_2
Used extensions & nodes
Created with KNIME Analytics Platform version 5.4.0
Legal
By using or downloading the workflow, you agree to our terms and conditions.