Ejemplo 12: Aprendizaje Sensible al Costo

Ejemplo 12: Aprendizaje Sensible al Costo bernabeu_dario 27 Octubre, 2010 - 11:23

Este proceso es otro ejemplo de aprendizaje sensible al costo, es decir, para el caso donde diferentes errores de predicción causarían diferentes costos. Además del operador de preprocesamiento ThresholdFinder, que también es capaz de entregar gráficos ROC para 2 clases, hay otro operador que se puede utilizar para aprendizaje sensible al costo.

Este operador es parte del aprendiz, grupo Meta, y se denomina MetaCost. Se utiliza como cualquier otro esquema de meta-aprendizaje y debe contener otro operador de aprendizaje interno, en este caso se utiliza el
aprendiz de árbol de decisión.

La matriz de costos utilizada para el aprendizaje sensible al costo se puede definir mediante el editor de matrices (en el operador MetaCost, presionar “Edit Matrix...” del parámetro cost matrix). El formato básico
del parámetro cost matrix es [K11 K12 ... K1m, K21 K22 ... K2m, ... ; Kn1 ... Knm], por ejemplo, para una matriz de costos de 2x2 de un problema de clasificación binaria es [0 1 ; 10 0]. Este ejemplo quiere decir
que tanto los costos para los errores de predicción de la primera clase como para los de la segunda son 10 veces más altos que los otros tipos de errores.

1. Agregar el operador Utility → Data Generation → Generate Data. Cambiar el nombre del mismo a “GeneradorConjEjs” y los valores de los parámetros target function a “polynomial classification” y number examples a 300.

2. Agregar el operador Evaluation → Validation → X-Validation. Cambiar el nombre del mismo a “Validación” y el valor del parámetro number of validations a 5. Conectar la salida del operador GeneradorConjEjs (Generate Data) a la entrada tra (training) de este operador y la salida ave (averagable 1) de este último al conector res del panel.

 

 

3. Hacer doble clic sobre el operador Validación (X-Validation). En el panel Training del nivel inferior, agregar el siguiente operador:

3.1 Modeling → Classification and Regression → Meta Modeling → MetaCost. Cambiar el nombre del mismo a “MetaCosto” y utilizar el editor de matrices del parámetro cost matrix para ingresar los valores de
la matriz de costos [0 1; 10 0]. , Conectar la entrada tra y salida mod de este operador a los puertos tra mod del panel, respectivamente.

En el panel Testing de la derecha, agregar los siguientes operadores:

3.2 Modeling → Model Application → Apply Model. Cambiar el nombre del mismo a “AplicadorModelo” y conectar los puertos mod y tes del panel a las entradas mod y unl de este operador, respectivamente.

3.3 Agregar el operador Evaluation → Performance Measurement → Performance. Conectar la salida lab del operador AplicadorModelo (Apply Model) a la entradas lab de este operador y la salida per de éste último al conector ave del panel.

 

 

4. Hacer doble clic sobre el operador MetaCosto (MetaCost). En el panel Learning Process del nivel inferior, agregar el siguiente operador:

4.1 Modeling → Classification and Regression → Tree Induction → Decision Tree. Conectar la entrada tra y la salida mod del mismo a los puertos tra y mod del panel, respectivamente.

 

 

Resultado:

 

PerformanceVector:
accuracy: 83.33% +/- 6.58% (mikro: 83.33%)
ConfusionMatrix:
True: negative positive
negative: 145 49
positive: 1 105
precision: 99.20% +/- 1.60% (mikro: 99.06%) (positive class: positive)
ConfusionMatrix:
True: negative positive
negative: 145 49
positive: 1 105
recall: 68.28% +/- 13.00% (mikro: 68.18%) (positive class: positive)
ConfusionMatrix:
True: negative positive
negative: 145 49
positive: 1 105
AUC (optimistic): 0.985 +/- 0.005 (mikro: 0.985) (positive class: positive)
AUC: 0.978 +/- 0.013 (mikro: 0.978) (positive class: positive)
AUC (pessimistic): 0.976 +/- 0.014 (mikro: 0.976) (positive class: positive)