Clase 9: Evaluación de Modelos
Minería de Datos
y tengo que aprender a calcular el Coeficiente de Silueta.Voy aprendiendo mejor la tarea
de calcular el coeficiente de Silueta. Lo mismo pasa con los modelos.
Pero no puedo medir qué tan bien aprendiste en los ejercicios que yo ya entregué para practicar. Tengo que hacer una prueba que tú no hayas visto, para ver si realmente aprendiste.
¿Cómo saber que el modelo está funcionando como esperamos?
El Rendimieto de un Modelo de Clasificación permite evaluar el error
asociado al proceso de predicción.
Clase 1
.
Clase 0
.
Scikit-Learn
usa la siguiente convención:
*_score
un mayor puntaje es mejor.*_error
o *_loss
un mejor puntaje es mejor.La Matriz de Confusión ordena los valores correctamente predichos y también los distintos errores que el modelo puede cometer.
Accuracy
\[\frac{TP + TN}{TP + TN + FP + FN}\]
Precision
\[\frac{TP}{TP + FP}\]
Recall
\[\frac{TP}{TP + FN}\]
F1-Score
\[\frac{2\cdot Precision \cdot Recall}{Precision + Recall} = \frac{2 \cdot TP}{2\cdot TP + FP + FN}\]
La curva ROC fue desarrollada en 1950 para analizar señales ruidosas. La curva ROC permite al operador contrapesar la tasa de verdaderos positivos (Eje \(y\)) versus los falsos positivos (Eje x).
El área bajo la curva representa la
calidad del modelo
. Una manera de interpretarla es como la probabilidad de que una predicción de la clase positiva tenga mayor probabilidad que una de clase negativa. En otras palabras, mide que las probabilidades se encuentren correctamente ordenadas. Por lo tanto varía entre 0.5 y 1.
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
accuracy_score(y_true, y_pred)
precision_score(y_true, y_pred)
recall_score(y_true, y_pred)
f1_score(y_true, y_pred)
roc_auc_score(y_true, y_proba)
¿Qué sería la Complejidad del Modelo?
¿Por qué el modelo pierde rendimiento cuando aumenta su Complejidad?
Overfitting:
Gran diferencia entre Training y Validation Score.
Underfitting:
Poca diferencia entre Training y Validation Score, pero con ambos puntajes “relativamente bajos”.
Proper fitting o Sweet Spot:
Corresponde al mejor puntaje en el set de Validación. Donde también la distancia entre Train y Test es poca.
Se refiere a la incapacidad de un modelo de capturar la verdadera relación entre los datos.
El modelo está “sesgado” a tomar una cierta relación que no necesariamente existe.
Se refiere a la diferencia de ajuste entre datasets (Train y Validación).
El modelo varía demasiado su comportamiento entre Training y Testing Time.
Regularización: Se refiere a una penalización para disminuir su complejidad
.
Modelos más simples: Utilizar modelos con una Frontera de Decisión más simple.
Más datos!!! Más datos más dificil aprender, por lo tanto, modelos complejos se ven más beneficiados de esto.
La evaluación de modelos supervisados es fundamental. De no hacerlo de forma correcta podemos quedarnos con una idea muy equivocada del rendimiento del modelo.
Se debe evaluar el rendimiento de un modelo en un
dataset diferente
al que fue entrenado. Esta es laúnica manera
en la que se puede medir el poder degeneralización
de un modelo.
Corresponde a la habilidad de un modelo de adaptarse apropiadamente a datos no vistos previamente.
Utilizar una estrategia incorrecta de Validación puede llevar a problemas de generalización. La estrategia de Validación debe ser lo más parecida posible a cómo se utilizará el modelo en Producción.
Para esto se asume que todos los datos son i.i.d (independent and identically distributed
). De no lograr esto, lograr buenos rendimientos es más difícil.
También es conocido como
Train Test Split
o simplementeSplit
. Corresponde a la separacion de nuestra data cuando con el proposito de aislar observaciones que el modelo no vea para una correcta evaluación.
train set
es la porción de los datos que se utilizará exclusivamente
para entrenar los datos.test set
es la porción de los datos que se utilizará exclusivamente para validar los datos.test set
simula los datos que eventualmente entrarán el modelo para obtener una predicción.Modelo
a probar.Algoritmo de Aprendizaje
+ Hiperparámetros
+ Preprocesamiento
.Modelo
en el train set
. Se mide una métrica de Evaluación apropiada utilizando el Validation Set
. La llamaremos métrica de Validación.Modelo
como el que tenga la mejor métrica de Validación.Train set
+ el Validation set
.Test Set
.Validation Set
y todos los Folds restantes como Train Set
.
Split
.En la práctica se le llama incorrectamente Cross Validation al K-Fold.
Consiste en generar subgrupos aleatorios con repetición. Normalmente requiere específicar el tamaño de la muestra de entrenamiento. Y la cantidad de repeticiones que del proceso. Los sets de validación (en morado) acá se denominan out-of-bag samples.
Validation Set
tiene sólo una observación.
¿Cuando usar cada uno?
Validation Set
se deja.Un modelo
Baseline
es un modelo simple, normalmente sin aprendizaje asociado o con poder de aprendizaje más limitado, el cuál será utilizado como medida de referencia para ver si algoritmos más complejos efectivamente están aprendiendo.
Si estamos probando un nuevo modelo y éste es capaz de superar el rendimiento de un Baseline, se considera como que estamos aprendiendo algo nuevo.
Modelos que no superaron el puntaje de un modelo Baseline normalmente son deshechados.
from sklearn.dummy import DummyClassifier
dc = DummyClassifier(strategy="prior", random_state = 42, constant=None)
dc.fit(X_train,y_train)
y_pred = dc.predict(X_test)
Se refiere al proceso donde el modelo por alguna razón conoce información que no debería conocer. Puede ser información del
Test Set
o variables que revelan información primordial sobre la etiqueta.
Cuando existe Data Leakage
es posible que los resultados del modelo no reflejen correctamente su rendimiento dando una falsa sensación de optimismo.
Se recomienda siempre que sea posible utilizar Pipelines
para poder evitar el Data Leakage.