Documente Academic
Documente Profesional
Documente Cultură
Mining Financiero.
ENFIN 748
Profesor: David Daz., PhD.
Ayudante: Javier Venegas
Marco Zaror
Laboratorio 4:
Modelamiento con muestras no balanceadas y Mtodos de Validacin de
Modelos (Hold-out, Cross-Validation, Bootstrapping)
Temas en este laboratorio:
Importar datos
Hold-out method
Cross-Validation
Cross-Validation Leaveoneout
Cross-Validation Bootstrapping
Laboratorio 4
En el presente laboratorio se trabajar con la Base Credit_Lab4_bif, en donde se espera que
programe un proceso en RapidMiner que logre predecir mediante un modelo de clasificacin (en
este caso un rbol de decisin) el label Account_Status para las observaciones que se les
desconoce su clase (20 de 302 observaciones), el cual podr ser Balanced, 30 days late y 60 days
late que representan el estado de cuenta por cliente.
Adicionalmente se incorporaran mecanismos de validacin (como validacin cruzada,
bootstrapping, etc.) de los modelos predictivos propuestos, para ilustrar como estos permiten
estimar con mayor precisin el poder de clasificacin y nivel de error de los modelos estudiados.
Desarrollo Laboratorio 4
En el software RapidMiner deber cargar el archivo CSV: Credit_Lab4_bif. En el paso 2 del
importador de datos podr visualizar la informacin. El separador de columnas que se ocupa es
Semicolon, es decir, punto y coma.
En el paso 4 de la importacin de datos, se recomienda otorgar los roles claves (si se conocen)a los
atributos o columnas necesarios. En este caso defina los roles: id para ID y label para
Account_Status.
Esto permite que el software reconozca estos atributos como el cdigo identificador id y al Label o
atributo a predecir. Guarde la base con el nombre de Credit_2007_L4
Una vez cargada, corra la base en el programa con el botn Play y observe los datos.
Nota: Para visualizar en la vista de resultados la correlacin entre atributos deber al menos haber
conectado el nodo mat con el nodo res de resultados.
En la vista de resultados se observar la siguiente matriz.
Nota: Usted podra seleccionar un atributo que comparta la misma informacin y se comporte
similarmente con otro para disminuir la cantidad de atributos. No existe una regla estrictamente
definida o criterio para hacerlo, pero podr observar por ejemplo que Mo_Income est altamente
correlacionado con Mo_Expenses. Para efectos de este laboratorio mantendremos los atributos
originales de la base de datos. En caso de proyectos reales de muchos atributos es recomendado
que los disminuya. (Retire el operador CorrelationMatrix)
A continuacin de la base operador Retrieve agregue operador select atributes. Como no se
descartar ningn atributo por el momento elija la condicin All esto significa que se seleccionan
todos.
Luego, se requiere separar la base entre los datos a los que se conoce su clase o label y los que se
les desconoce. Vamos a generar conocimiento, realizar test y pruebas en la muestra que
conocemos para luego aplicar esto en la muestra de inters a predecir.
Para esto se puede utilizar los operadores Multiply y FilterExamples. Conecte Multiply luego de
select atributes y agregue dos operadores FilterExamples conectados a Multiply, uno para la
muestra que conocemos su clase y el otro para los que son desconocidos. Para lograr esto debe
definir como condition class en el primer filtro, no_missing_labels.
Cambie el criterio del rbol a accuracy y el maximal depht a 4 (esto restringe la profundidad del
rbol, para efectos de este laboratorio lo definiremos en 4, para as generar un rbol fcil de
observar.
El rbol observable en la vista de resultados con las reglas de decisin es el siguiente:
Para tener una nocin del poder de clasificacin rbol, vamos a agregar los operadores
ApplyModel y Performance Clasification. ApplyModel aplicar el modelo generado en
DecisionTree y PerformanceClasification entregar un reporte en forma de Matriz de Confusin
del nivel de acierto y precisin que logra.
en
la
pestaa
nos arroja un resultado distinto, pues nos muestra que esas 3 predicciones acertadas
corresponden slo a un 8.82% del total de observaciones reales de la clase 30 days late, o 3/34.
En definitiva, analizando la Matriz de Confusin en su conjunto podemos apreciar que a pesar de
que el modelo ha logrado un nivel de acierto de clasificacin promedio de 74.82%, dicho poder no
est igualmente distribuido en las clases que se pretende predecir. Por ejemplo, el nivel de acierto
por clase (class recall) para 30 days late slo alcanza el 8.82%, y para la clase 60 days late alcanza
apenas un 7.69%. Observando la tabla con detencin es posible notar que esto se debe a que la
muestra con la que el rbol fue construido esta desbalanceada. Es decir, existen muchos ejemplos
u observaciones de una clase y muy pocos, relativamente hablando, de otros. En este caso, es
posible notar que contamos con 209 ejemplos de clientes cuyo Account Status es Balanced, pero
con slo 39 clientes con estado 60 days late y 34 clientes 30 dayslate.
Para lidiar con este problema procederemos a Balancear la muestra cmo se explicar en las
siguientes secciones.
pasado tpicamente la proporcin de malos clientes en su base de datos ser del orden de 1% al
3%. Lo mismo ocurre con las campaas de marketing, en cuyo caso es comn encontrar tasas de
respuesta positiva cercanas al 0,5% de los clientes o incluso menos. Esto implicar que se contar
con pocos ejemplos de la vida real acerca de la clase importante a predecir.
En lnea con lo anterior, imagine la siguiente base de datos de ejemplo:
ID
Class
Account Balance
SavingsAccount
GoodCostumer
890
Yes
GoodCostumer
945
Yes
GoodCostumer
912
Yes
AverageCostumer
740
Yes
AverageCostumer
780
Yes
AverageCostumer
810
No
AverageCostumer
692
No
AverageCostumer
570
No
Regular Costumer
549
Yes
10
Regular Costumer
540
Yes
11
Regular Costumer
498
Yes
12
Regular Costumer
501
Yes
13
BadCostumer
420
No
14
BadCostumer
581
Yes
15
BadCostumer
564
No
Si estamos interesados en detectar a los malos clientes, una estrategia inicial ser el convertir un
problema de prediccin de mltiples clases, a slo dos clases, o lo que es lo mismo, un problema
de clasificacin binaria. Por ejemplo:
ID
Class
BinaryClass
Account Balance
SavingsAccount
GoodCostumer
890
Yes
GoodCostumer
945
Yes
10
GoodCostumer
912
Yes
AverageCostumer
740
Yes
AverageCostumer
780
Yes
AverageCostumer
810
No
AverageCostumer
692
No
AverageCostumer
570
No
Regular Costumer
549
Yes
10
Regular Costumer
540
Yes
11
Regular Costumer
498
Yes
12
Regular Costumer
501
Yes
13
BadCostumer
420
No
14
BadCostumer
581
Yes
15
BadCostumer
564
No
Si entrenramos un rbol de decisin con esta base de datos podramos obtener la siguiente regla
de clasificacin (rbol):
If Account Balance>420 and Savings Account=Yes
Then Predicted Class=0
Else Predicted Class= 1
Aplicando sta regla obtendramos lo siguiente:
ID
Class
BinaryClass
Account Balance
SavingsAccount
PredictedClass
Hit?
GoodCostumer
890
Yes
Yes
GoodCostumer
945
Yes
Yes
GoodCostumer
912
Yes
Yes
AverageCostumer
740
Yes
Yes
11
AverageCostumer
780
Yes
Yes
AverageCostumer
810
No
No
AverageCostumer
692
No
No
AverageCostumer
570
No
No
Regular Costumer
549
Yes
Yes
10
Regular Costumer
540
Yes
Yes
11
Regular Costumer
498
Yes
Yes
12
Regular Costumer
501
Yes
Yes
13
BadCostumer
450
Yes
No
14
BadCostumer
581
No
Yes
15
BadCostumer
564
Yes
No
Comparado la clase de cliente real con la clase predicha obtendramos un nivel de acierto total de
10 casos correctos sobre un total de 15 casos, es decir, un 66.7% de acierto. Esto puede sonar
como un buen resultado, pero en realidad es uno bastante malo. De hecho, si slo considerramos
cuan efectivo fue el modelo en la clase que importaba, el nivel de acierto cae drsticamente a
33.33%, o 1 caso clasificado correctamente sobre un total de 3 (slo un cliente malo fue clasificado
correctamente como malo!).
Por qu ocurre que las Tasas de Acierto son distintas para las distintas clases? Existe algn
problema con el algoritmo? La respuesta es que no realmente. Lo que ocurre es que el algoritmo
est diseado para encontrar el modelo que mejor se ajuste a la totalidad de la muestra, y por
tanto, si ajustamos un modelo ste ser muy bueno para describir a los casos que ocurren
frecuentemente en la base de datos. De hecho, si observamos cuan bueno fue el algoritmo en la
clase ms comn (buenos clientes) podremos observar que el nivel de acierto a los buenos clientes
fue de 9/12 o 75%. Dado que existen ms ejemplos de buenos clientes en la base, es ms probable
que stos queden mejor representados por el algoritmo. Dado lo anterior, debemos tener en
consideracin el nivel de acierto del algoritmo en la base completa (66.6%); en la clase importante
(33.3%); y en la no tan importante (75%). Las ltimas dos medidas son conocidas como las
medidas de Tasa de Acierto de Clase de importancia Desigual o Class Recall Unequal Measures of
Importance.
12
Class
BinaryClass
Account Balance
SavingsAccount
GoodCostumer
912
Yes
AverageCostumer
810
No
12
Regular Costumer
501
Yes
13
BadCostumer
450
Yes
14
BadCostumer
581
No
15
BadCostumer
564
Yes
13
Class
BinaryClass
Account Balance
SavingsAccount
GoodCostumer
890
Yes
GoodCostumer
945
Yes
GoodCostumer
912
Yes
AverageCostumer
740
Yes
AverageCostumer
780
Yes
AverageCostumer
810
No
AverageCostumer
692
No
AverageCostumer
570
No
Regular Costumer
549
Yes
10
Regular Costumer
540
Yes
11
Regular Costumer
498
Yes
12
Regular Costumer
501
Yes
13
BadCostumer
420
No
14
BadCostumer
581
Yes
15
BadCostumer
564
No
F16
BadCostumer
450
Yes
F17
BadCostumer
581
No
F18
BadCostumer
564
Yes
F19
BadCostumer
450
Yes
F20
BadCostumer
581
No
F21
BadCostumer
564
Yes
F22
BadCostumer
450
Yes
F23
BadCostumer
581
No
F24
BadCostumer
564
Yes
14
Dado que queremos contar la cantidad de casos por clase para el Atributo Account Status
seleccione dicho atributo como GroupBy y como Aggregation Attribute. Seleccione adems que la
Aggregation Function es Count. Ejecute el proceso y podr observar la siguiente tabla:
15
Undersampling o Submuestreo
En RapidMiner es posible submuestrear de manera bastante sencilla. Simplemente conecte el
operado Sample y active la opcin balance data. Al hacerlo, nuevas opciones estarn disponibles
en el operador. Estas nos permiten decidir de qu manera queremos balancear la muestra, por
ejemplo, escogiendo un nmero absoluto de casos de cada clase, o estableciendo un ratio o
probabilidad de seleccin para cada grupo. Dado que conocemos el nmero de casos que
necesitamos de cada clase escoja la opcin sample: Absolute y luego defina que el sample size per
class es de 34 observaciones. Note que es necesario conocer los nombres de las clases y stos
deben ser introducidos exactamente igual como aparecen en los datos como se aprecia a
continuacin:
16
Oversampling o Sobremuestreo
RapidMiner no cuenta con un operador que directamente nos permite sobremuestrar los datos,
sin embargo, es posible realizar un proceso equivalente combinado un par de operadores. El
primer paso para esto es el de lograr replicar los ejemplos de las clases sub-representadas tantas
veces como sea necesario hasta lograr un nmero equivalente de casos a los de la clase con mayor
17
representacin. Si recordamos, esto quiere decir que es necesario lograr tener al menos 209
ejemplos de cada clase, de manera que stas queden balanceadas. Realizando un clculo simple,
es posible deducir que ser necesario replicar aproximadamente 7 veces las observaciones de la
clase 30 days late para alcanzar ese nmero (34*7=238). Para realizar la operacin de replicado
conectaremos el operador Sample (Bootstrapping) y definiremos que el sampleratio es 7. Este
operador realizar un muestreo con reemplazo sobre nuestros datos, y por tanto, ser capaz de
crear muestras del tamao requerido a partir de los datos originales:
18
19
Resultados Sub-Muestreo:
Resultados Sobre-Muestreo:
Resultados Original:
Es posible observar, que en general con ambos mtodos el nivel de acierto por clase mejor
significativamente para las clases que originalmente se encontraban sub-representadas, y que al
menos en trminos de porcentaje de acierto promedio el sub-muestreo pareciese ser una mejor
tcnica. Sin embargo, recuerde que ste modelo fue entrenado y aplicado utilizando slo a una
porcin menor de los datos de las clases Balanced y 60 days late, por lo que estos resultados no
son representativos de su efectividad real. Ms acerca de este tipo de problema se discutir en la
seccin siguiente del laboratorio.
Asumiendo que el modelo entrenado con la base sobremuestreada es efectivamente mejor, ahora
procederemos a aplicarlo a la porcin de los datos originales en los cuales desconocamos su clase.
Para ello conectaremos el operador Multiply despus del segundo DecisionTree, lo que nos
permitir aplicarlo en la segunda parte de la base de datos. No ser posible aplicar el operador
Performance%, pero s seremos capaces de apreciar la clase predicha por el modelo para dichos
clientes como se muestra a continuacin:
20
21
Por ejemplo la observacin N8 de ID 621, tiene como prediccin Balanced de Account_Status con
un grado de confianza de 93,5%.
22
poderosas son aplicadas a bases de datos pequeas, o cuando los datos son escogidos de manera
tal que los modelos logran resultados "perfectos" imposibles de replicar en otras muestras.
Hold-out method
Como se discuti en el Laboratorio anterior, una primera manera de minimizar estos problemas es
el de utilizar una parte de la base de datos para crear el modelo y otras partes para probar su
eficacia en datos que nunca ha visto. Definimos anteriormente que por lo general, se habla de tres
tipos de grupos o particiones: Muestra de Entrenamiento, Muestra de Prueba y Muestra de
Produccin. Esta manera de entrenar y probar los modelos puede generalizada de manera tal que
por medio de un muestreo sin reemplazo un parte (generalmente (2/3) de los datos sea utilizada
para entrenar el modelo, y la parte restante (1/3) sea utilizada para probarlos. Esta manera se
denomina hold-out method dado que utilizamos slo una porcin de los datos para crear los
modelos y dejamos de lado otra parte para probarlo.
Si bien este mtodo es universalmente aplicado y altamente efectivo posee algunas limitaciones.
La primera y ms obvia ocurre cuando existen pocas observaciones con las cuales construir el
modelo dado que no es eficiente dejar de lado observaciones si stas son escasas y/o fueron
difciles de obtener. Este problema es recurrente cuando trabajamos con muestras
desbalanceadas y con clases de importancia desigual, dado que como veamos la cantidad de
datos de la clase importante puede ser muy limitada en comparacin con las clases menos
importantes. Otro problema, es que este mtodo no nos permite obtener un intervalo de
confianza de los indicadores de efectividad del modelo (class precision y class recall por ejemplo),
dado que slo contamos con dos estimadores, uno para la muestra de entrenamiento y otro para
la muestra de prueba.
23
Entrenamiento
85%
Prueba 1
84%
Prueba 2
60%
Prueba 3
90%
Prueba 4
68%
75.10%
13.41%
63.83%
Prueba 5
63%
Prueba 6
61%
Prueba 7
95%
Prueba 8
64%
Prueba 9
78%
Prueba 10
88%
86.37%
Este mtodo es conocido como repeated hold-out method y nos permite apreciar que el nivel de
acierto de la muestra de entrenamiento 1 sobrestima el poder de prediccin del modelo, y que el
nivel ms probable est en un intervalo entre el 63% y 86% de acierto.
Cross-Validation method
La Cross Validation es una extensin del repeated hold-outmethod en la cual base de datos es
dividida en X secciones de igual tamao, utilizndose luego todas las secciones menos una para
entrenar el modelo, dejando la seccin que no se utiliz en el entrenamiento para realizar la
prueba del modelo.
En comparacin con la metodologa repeated hold-out es posible notar que en este caso el
"orden" de las filas de la muestra fue mantenido mientras se iteraba. En cambio, en el mtodo
hold-out dicho orden no se mantiene dado que en cada iteracin se escogen las muestras de
prueba y entrenamiento por medio de un muestreo aleatorio simple sin reemplazo. Para aplicar la
validacin cruzada en RapidMiner se deben seguir los pasos que mostraremos a continuacin. Se
utilizar la parte del proceso en que la muestra fue balanceada por el mtodo del sobre muestreo.
Inserte el operador X Validation despus del operador Sample (2) y elimine momentneamente
los operadores DecisionTree(2), Apply (2) y Performance% (2) como se ilustra en la siguiente
imagen:
24
Haga doble click en el operador X Validation. Dentro de este deber repetir la orden de generar
un modelo de rbol (DecisionTree), aplicarlo (ApplyModel) y medir su desempeo (Performance
clasification) como se observa en la siguiente imagen.
Note que en esta vista se logra identificar que se separan los procesos de entrenamiento (training)
y de prueba o test (testing). El modelo del rbol se genera en Training y este se aplicar en la etapa
de prueba. Adicionalmente se puede configurar el nmero de validaciones o iteraciones que se
estimen convenientes.
25
Conecte las salidas del operador Validation al repositorio como se aprecia en la imagen anterior.
Observe que un nuevo color de lnea caf ha sido conectado desde la salida ave al repositorio. Esta
conexin guardar los resultados de la validacin cruzada, representando ave el average o
promedio de los indicadores de desempeo que hayamos solicitado, nivel de acierto en este
ejemplo. Ejecute el proceso y observe la nueva Matriz de Confusin y los resultados del modelo
generado a travs de la validacin cruzada:
Resultados Sobre-Muestreo con X-Validation:
Podemos observar que ahora contamos una estimacin del intervalo de confianza del nivel de
acierto el cual en promedio es mucho mayor que la estimacin original (77.07%) con un margen de
error estimado del 13.89%.
finales. Para utilizar esta opcin en RapidMiner simplemente debe activarse la opcin leave one
out en el operador de X-Validation:
Active esta opcin y compare los resultados con los resultados anteriores, qu puede interpretar
de stos resultados?
Tarea 4:
1) Compare los rboles de decisin obtenidos en el laboratorio con sub y sobre-muestreo,
qu similitudes y diferencias puede apreciar? qu rbol es mejor? Justifique su
respuesta.
2) A partir de la Base Credit_Lab4_bif ocupada en laboratorio 4, realice al menos dos
nuevos proceso de prediccin, esta vez utilizando modelos distintos al rbol de decisin
y compare los resultados de los clasificadores; por ejemplo: redes neuronales, logistic
regressions, o support vector machines. (Trabaje paralelamente los modelos a partir del
operador Multiply. Considere los ajustes necesarios en el pre-procesamiento de la
muestra de datos para que pueda aplicar los distintos modelos.
a. Realice una interpretacin de los niveles de accuracy, class recall y class
precision. Qu modelo sera preferido de usar en el contexto de un Banco? Por
qu?
3) Explique cul es la utilidad del indicador class precisin y de un ejemplo aplicado en un
negocio.
4) Qu pre-procesamiento de datos propone si en la base de datos en estudio, el Label
presenta ms de 10 clases o posibles estados? Hint. Refirase a la importancia de los
aciertos o errores en las diferentes clases.
5) Qu ventajas y desventajas presenta realizar sobre muestreo y sub muestreo?. En qu
casos lo recomendara y en qu casos lo evitara?.
6) El modelamiento de datos muy detallado y especfico puede ocasionar perdida de
generalidad en los modelos creados. Comente cuales serian la implicancias en las
clasificaciones y predicciones de clases o labels desconocidas cuando se cae en sobre
entrenamiento o data snooping. Qu indicadores utilizara usted para cerciorarse que
su modelo no ha sido sobre-entrenado?
Pregunta Bonus:
Es posible utilizar un modelo de clasificacin para realizar predicciones puntuales o de nivel? Si
la respuesta es afirmativa, explique cmo.
29