Saltar al contenido

Evaluación de un modelo de minería de datos

En la minería de datos, la clasificación implica el problema de predecir a qué categoría o clase pertenece una nueva observación. El modelo derivado (clasificador) se basa en el análisis de un conjunto de datos de capacitación en el que cada dato recibe una etiqueta de clase. El modelo entrenado (clasificador) se utiliza entonces para predecir la etiqueta de clase de los datos nuevos no vistos.

Para entender las métricas de clasificación, uno de los conceptos más importantes es la matriz de confusión.

Evaluación de un modelo de minería de datos
Evaluación de un modelo de minería de datos

No te preocupes por el nombre, no es nada confuso. Echemos un vistazo.

Cada predicción caerá en una de estas cuatro categorías. Veamos cuáles son.

  1. Verdadero Negativo (TN): Los datos etiquetados como falsos se predicen como falsos.
  2. Verdadero Positivo (TP): Los datos que se etiquetan como verdaderos se predicen como verdaderos.
  3. Falso Positivo (FP): También llamado “falsa alarma”, es un error de tipo 1 en el que la prueba comprueba una sola condición y predice erróneamente un positivo.
  4. Falso Negativo (FN): Es un error de tipo 2 en el que se comprueba una sola condición y nuestro clasificador ha predicho una instancia verdadera como negativa.

Con el fin de explicarlo, utilizaremos un conjunto de datos proporcionados por la biblioteca de pitones sklearn . Estoy usando un modelo de regresión logística para la clasificación y el conjunto de datos Covertype proporcionado por el repositorio de la UCI.

Primero, crea un script Python con cualquier nombre y usa el siguiente código.

12345678910111213141516171819202122232425262728293031importar numpy como npimport sklearn.datasetsimport sklearn.linear_modelimport sklearn.metricsfrom sklearn.model_selection import train_test_split# no cambia para reproducibilitynp.random.seed(42)# Importar el datasetdataset = sklearn. datasets.fetch_covtype()# sólo usa un subconjunto aleatorio para la velocidad - pretende que el resto de los datos no existrandom_sample = np.random.choice(len(dataset.data),len(dataset.data)//10)# sólo se intersectan en Clase 3 tipo de bosque.COVER_TYPE =3features = dataset. data[random_sample,:]target = dataset.target[random_sample]== COVER_TYPE# Hacer la división de prueba del tren del 80-20% de los datosX_train, X_test, y_train, y_test = train_test_split(features, target, test_size =0.2)# Construir el clasificador de regresión logística básico = sklearn. linear_model.LogisticRegression(solver=$0027liblinear$0027)classifier.fit(X_train, y_train)predictions = classifier.predict(X_test)# Imprimiendo la matriz de confusión para nuestras predicciones desde sklearn.metrics import confusion_matrixprint(confusion_matrix(y_test, predicciones))

pitón

Bueno, acabamos de construir un modelo de aprendizaje de máquinas que predecirá si una fila de datos es un bosque de tipo 3 o no. En la ejecución, verás la matriz de confusión para nuestras predicciones.

Interpretación de la salida:

  • 0, 0 ——-; Negativo verdadero
  • 0, 1 ——-; Falso Positivo
  • 1, 0 ——-; Falso Negativo
  • 1, 1 ——-; Verdadero Positivo

1. Precisión

La exactitud de un clasificador se da como el porcentaje del total de predicciones correctas dividido por el número total de instancias.

Matemáticamente,

Si la precisión del clasificador se considera aceptable, éste puede utilizarse para clasificar futuras tuplas de datos cuya etiqueta de clase se desconoce.

¿Pero es el caso de nosotros? Veamos si la precisión es la métrica de evaluación correcta para este problema.

12de sklearn.metrics importar accuracy_scoreprint("Exactitud : %.2f"%(accuracy_score(y_test, predicciones)*100))

pitón

Salida:

1Exactitud : 96.52

¡Grandioso! Tenemos una precisión del 96,52% para nuestro modelo.

Interpretación matemática

Nuestra matriz de confusión:

Precisión = (10766 + 451) / (10766 + 169 + 235 + 451) = 96.52%

¿Qué pasa si clasifico cada fila de datos como falsa?

En este caso, nuestro verdadero positivo se convertirá en un falso negativo, y nuestra precisión será entonces:

Exactitud = (10766 + 0) / (10766 + 169 + 686 + 0) = 92.64%

De acuerdo con esto, cada vez que preveamos que los datos son falsos, tendremos un 92% de precisión, lo que parece ser muy bueno. Entonces, ¿por qué necesitamos un modelo de aprendizaje de la máquina?

Echemos un vistazo a la distribución de las etiquetas de clase en nuestros datos.

1print("Clases: "+str(np.unique(target, return_counts=True)))

pitón

Salida:

1Clases: (array([Falso, Verdadero]), array([54560, 3541]))

Tenemos un gran número de ejemplos falsos y muchos menos datos en la clase verdadera.

La precisión será fiable cuando tengamos proporciones algo iguales de datos (50-50 de etiquetas de clase verdadera y falsa) y siempre será poco fiable si el conjunto de datos está desequilibrado. De la mayoría de los problemas de la minería de datos, la precisión es la métrica menos utilizada porque no da información correcta sobre las predicciones.

2. Recordar

La retirada es una de las métricas de evaluación más utilizadas para un conjunto de datos desequilibrados. Calcula cuántos de los positivos reales nuestro modelo predijo como positivos (Verdadero Positivo).

La retirada se conoce también como tasa positiva verdadera (TPR), sensibilidad o probabilidad de detección.

Matemáticamente,

En la matriz de confusión:

Calculemos la recuperación del conjunto de datos y veamos qué tan bueno es nuestro clasificador.

12de sklearn.metrics import recall_scoreprint("Recall : %.2f"%(recall_score(y_test, predicciones)*100))

pitón

Salida:

1Recordar : 65.74

El recuerdo salió mucho más pequeño que la precisión. Debido a que hay menos ejemplos verdaderos y más ejemplos falsos, nuestro modelo no fue capaz de aprender más sobre los datos verdaderos y se inclinó hacia las predicciones falsas.

La retirada es una medida mejor para aplicaciones como la detección de cáncer, donde cualquier cosa que no tenga en cuenta los falsos negativos es un error muy grande (por ejemplo, predecir un paciente con cáncer como un paciente no canceroso).

3. Precisión

Precisión describe cuán preciso o exacto es nuestro modelo de minería de datos. De esos casos pronosticados como positivos, ¿cuántos de ellos son realmente positivos?

La precisión también se denomina medida de exactitud o calidad, o valor predictivo positivo.

Matemáticamente,

En la matriz de confusión:

Calculemos la precisión del conjunto de datos y veamos qué tan bueno es nuestro clasificador.

12de sklearn.metrics importar precision_scoreprint("Recall : %.2f"%(precision_score(y_test, predicciones)*100))

pitón

Salida:

1Precisión : 72.74

La precisión resultó ser un poco mejor que el recuerdo porque nuestro modelo está más sesgado hacia las falsas predicciones.

Para aplicaciones como las recomendaciones de YouTube o la detección de spam de correo electrónico, los falsos negativos son menos preocupantes. Nadie muere por información errónea, y por lo tanto la precisión puede ser una mejor métrica de evaluación.

4. Puntuación F1

Cuando tanto la memoria como la precisión son necesarias, entonces la puntuación de la F1 entra en escena. Trata de equilibrar tanto la memoria como la precisión. Recuerden, sigue siendo mejor que la precisión, ya que con la puntuación de la F1 no buscamos ningún dato negativo verdadero.

Matemáticamente, se define como un medio armónico de recuerdo y precisión:

Calculemos la puntuación de la F1 para el conjunto de datos y veamos lo bueno que es nuestro clasificador.

12de sklearn.metrics import f1_scoreprint("F1 Score : %.2f"%(f1_score(y_test, predicciones)*100))

pitón

Salida:

1F1 Puntuación : 69.07

Hizo un intercambio entre el recuerdo y la precisión.

5. Curva ROC

A veces no es fácil averiguar qué métrica de evaluación utilizar, y visualizar con diferentes umbrales puede ayudarnos a seleccionar la mejor métrica de evaluación.

Las curvas de las características operativas del receptor, o curvas ROC, son gráficos que muestran el rendimiento de un modelo de clasificación en todos los umbrales de clasificación. Una curva ROC es una herramienta visual útil para comparar dos modelos de clasificación. Las ROC representan el equilibrio de rendimiento entre la tasa positiva verdadera (TPR) y la tasa positiva falsa (FPR) de un modelo de clasificación.

Matemáticamente,

Cuando bajamos el umbral de un clasificador, éste clasifica más elementos como positivos, aumentando así tanto los falsos positivos como los verdaderos positivos.

ROC es una de las tramas más populares, que ayuda en la interpretación de un clasificador.