Está en la página 1de 18

Programa:Data Driven

Marketing
Guía KNIME Módulo 2:
Árboles de clasificación.
Autor: Gilbert Bergna
Contenido
Árboles de clasificación .........................................................................................................................3

Creación del Modelo ....................................................................................................................3

Evaluación del Modelo ...............................................................................................................13

Despliegue del Modelo ...............................................................................................................18

2
Árboles de clasificación

Creación del Modelo

Para ilustrar este algoritmo (o familia de algoritmos), utilizaremos unos datos reales de una
compañía de telecomunicaciones, que quiere predecir la probabilidad de que un cliente
actual se le vaya (pérdida de clientes, o “Churn”, en inglés).

Los datos se encuentran en dos archivos distintos. Los datos contractuales de los clientes
(archivo de datos separados por coma: “churn uft contrato.csv”) (antigüedad de la cuenta,
número de teléfono, planes contratados, …y si se fue de la empresa o no (Churn=1: Se fue,
0= No se fue). Los datos transaccionales de los mismos clientes (llamadas diurnas,
nocturnas, internacionales, llamadas a servicio al cliente, etc). Estos están en un archivo
Excel (“transacciones.xls”).

El primer paso es seleccionar el nodo de lectura de archivos csv (CSV READER), y


arrastrarlo hasta el workflow. Luego, se presiona el botón derecho del ratón, para seleccionar
la opción “Configure”, y configurar el nodo.

3
Ubique en sus carpetas el archivo correspondiente (en la ubicación en la que lo salvó),
presionando el botón “Browse”.

Asegúrese de seleccionar las opciones marcadas en rojo en los recuadros (“Has column
header”, “column delimiter”)

Luego presione “Execute”, para ejecutar el nodo.

4
Si presionamos de nuevo el botón derecho del ratón, y seleccionamos “File Table”, podremos
ver el contenido de la tabla cargada. En la tabla, en la columna “Churn”, vemos los “0” y “1”,
correspondientes a clientes perdidos o retenidos.

Luego, repetimos el proceso, pero con el archivo Excel (y por lo tanto el Nodo “Excel
Reader”), y el archivo “Churn UFT transacciones.xls”.

5
Ahora hay que unir estos dos archivos.

Para ello, utilizaremos el nodo”JOINER”, uniendo ambos archivos a este nodo, según se indica en el
gráfico siguiente:

6
Le damos al botón derecho del nodo, y lo configuramos de la siguiente manera:

Queremos que a los campos de la tabla transacciones, se le agregue a cada cliente sus datos
contractuales. Para ello debemos igualar los valores de número de teléfono y código de área, en
ambas tablas. Eso se obtiene seleccionando en la pestaña “Joiner Settings” las columnas
correspondientes:

7
Posteriormente, debemos indicar qué columnas queremos dejar en la tabla final, es decir, si
excluimos algunas de las columnas de una o ambas tablas originales. En este caso, vamos a incluir
todas las columnas:

Al igual que antes, podemos ver la tabla resultante, presionando botón derecho y “Joined Table”.

En la tabla vemos que la variable CHURN está considerada como entera (la “I” al lado del nombre
de la variable, significa “Integer”). Los árboles de clasificación necesitan que la variable a predecir
sea una etiqueta (texto). Por lo tanto, hay que convertirla de “Integer” a “String”.

Eso lo haceos con KNIME, de la siguiente manera:

8
Escribimos en el recuadro superior de la sección “Node Repository” “number”, y seleccionamos el
nodo “Number to String”.

En configuración, pasamos la variable que queremos convertir a texto (churn), al lado derecho:

Y, ejecutamos:

Vemos que ahora, Churn, tiene al lado izquierdo una “S” (string) en vez de la “I”.

Podemos también colocar un poco de color a la tabla, para facilitar la ubicación de casos que nos
interesen. Por ejemplo, si queremos colorear los casos de Churn=1 (pérdida de cliente) en ROJO, y
los retenidos en azul, lo haríamos así:

Seleccionamos el Nodo “Color Manager”. Lo configuramos con los colores deseados, para la variable
escogida (Churn), y vemos la tabla resultado:

9
Vemos así, que los casos de churn =1 son ahora de color rojo en la tabla.

Ahora viene la fase de dividir los datos en dos sub-conjuntos: Uno para entrenar el modelo, y otro
para probarlo. Para esto, está el nodo “Partitioning”.

Se configura el porcentaje de datos que se quiere dedicar a estos, colocando, por ejemplo, 80% en
el recuadro “Relative”.

Esto significa, que estamos tomando 80% de los datos para entrenar el modelo, y el restante 20%
para evaluarlo.

10
A continuación, agregamos nuestro nodo de Árbol de Clasificación: “Decision Tree Learner”, uniendo
la salida superior del nodo “Partitioning”, al nodo “Decision Tree Learner”.

La salida inferior del nodo “Partitioning” se une a un nuevo nodo llamado “DecisionTree Predictor”.
En este nodo se hacen los cálculos del modelo que acabamos de entrenar, con los datos reservados
para la prueba.

Para ello, es necesario unir la salida del nodo “Decision Tree Learner” (esta vez un cuadrado, que
representa el modelo), al cuadrado de entrada del nodo “Decsion Tree Predictor”.

11
Primero, veamos a qué se parece el árbol de clasificación obtenido. Analice los resultados del árbol.

Por otra parte, si en la configuración seleccionamos la opción “Append columns with normalized class
distribution”, obtendremos las probabilidades, para cada uno de los clientes en la prueba, de que
sea un Churn=1 o Churn=0, así como el pronóstico definitivo “variable” Predicted”). Por ejemplo, para
el primer caso en la tabla, la probabilidad de que Churn=0 es del 97.1%, por lo que fue clasificado
como Churn=0.

12
Evaluación del Modelo

La evaluación de qué tan bueno es el modelo obtenido se puede obtener, agregando el nodo “Scorer”
a continuación, y colocando en configuración, la variable Churn como la que queremos comparar con
la variable Churn pronosticada (“Predicted”):

Los principales indicadores de bondad del modelo son:

1. “Confusion Matrix”: La matriz de “confusión» , en la cual se observan los datos correctamente


clasificados (verdaderos “1” clasificados como “1”, y verdaderos “0” clasificados como “0”) y los
no correctamente clasificados:

2. “Accuracy Statistics”: Otras estadísticas de precisión:

En este caso, vemos que la precisión global del modelo es de 90.1%, lo que es muy bueno.

13
Sin embargo, en casos como este, en los que la distribución de la variable a predecir (Churn)no está
distribuida de manera igualitaria (la proporción de Churn=0 es mucho mayor que la de Churn=1), y
eso sesga los resultados.

Para evitar este problema, se suele “balancear” la muestra, y testear el modelo con datos que
contienen un número equivalente de casos Churn=0 y Churn=1 . El workflow se modificará de esta
manera, agregando el nodo “Equal Size Sampling”, entre el nodo “Partitioning” y el nodo “Decision
Tree Predictor”.

Si volvemos a ejecutar, los resultados cambiarían a algo parecido a esto:

(La precisión global baja un poco, siendo más realista que la anterior).

Otro indicador muy importante y utilizado, es la Curva ROC. Esta se obtiene con el nodo “ROC
Curve”, colocado después del nodo “DecisionTree Predictor” .

14
Y este es el resultado (Curva ROC):

Finalmente, tenemos la opción de ver la curva de ganancia (“LIFT Chart” o “Gains Chart”, agregando
el nodo “Lift Chart (Local)”:

Se coloca a continuación del nodo “Decision Tree Predictor”, y se configura según se indica en el
gráfico a continuación:

15
Al ejecutarlo, podemos ver las dos curvas: La curva de ganancia (a la izquierda en el gráfico
siguiente), y la curva de ganancia acumulada (a la derecha):

16
El último paso es el de grabar este modelo para uso posterior por la empresa, y clasificar clientes
nuevos, de los cuales no sabemos si van a permanecer en la empresa (Churn=0) o no (Churn=1).

Si aplicamos este modelo a nuestra base de clientes, podemos obtener la probabilidad de que cada
uno de ellos se vaya (o permanezca), lo que nos brinda oportunidad de actuar anticipadamente.

Para ello, se graba el modelo utilizando el nodo ”JPMML Writer”:

Podemos ahora grabar nuestro modelo, por ejemplo, con el nombre ”Churn uft model”, para utilizarlo
posteriormente.

17
Despliegue del Modelo

En caso de querer aplicar este modelo a nuevos datos de la empresa, el nuevo workflow sería el
siguiente:

Se selecciona el nodo “JPMML Reader”, y se configura, seleccionando el nombre del modelo (en
nuestro caso, “ Churn UFT model”).

Se agrega el nodo “File Reader”, configurándolo para leer el archivo contentivo de la nueva data
(clientes a los que queremos predecir su permanencia o no). En nuestro ejemplo, el archivo se llama
“data nueva telecom.csv”.

Se unen estos dos nodos a un nuevo nodo llamado “JPMML Classifier”, el cual va a asignar una
probabilidad de Churn a cada caso nuevo.

Se agrega un nodo “Data to Report”, para visualizar los resultados, en forma de tabla:

En nuestro ejemplo, solo tenemos un cliente nuevo, y, según nuestro modelo, la probabilidad de que
Churn sea =0 (se quede), es de90.9%, por lo que se le asigna “0”, como valor pronosticado de Churn.

18

También podría gustarte