Estás leyendo la publicación: ¿Cómo puede la técnica SMOTE mejorar el rendimiento de los alumnos débiles?
SMOTE es una técnica de aprendizaje automático para tratar los problemas que surgen cuando se trabaja con un conjunto de datos desequilibrado. En la práctica, los conjuntos de datos desequilibrados son comunes y la mayoría de los algoritmos de ML son muy propensos a los datos desequilibrados, por lo que debemos mejorar su rendimiento mediante el uso de técnicas como SMOTE. En este artículo, discutiremos cómo se puede usar la técnica SMOTE para mejorar el rendimiento de los estudiantes débiles como SVM. En este contexto, discutiremos los siguientes puntos importantes en este artículo.
Tabla de contenido
- Problemas con datos desequilibrados
- ¿Cómo se puede utilizar SMOTE?
- Probando SMOTE en una variedad de modelos
Comencemos la discusión conociendo los problemas con los datos desequilibrados.
Problemas con datos desequilibrados
El clasificador en problemas de clasificación binaria tiene la tarea de categorizar cada muestra en una de dos clases. Cuando la clase mayoritaria (más grande) tiene una cantidad significativamente mayor de muestras que la clase minoritaria (más pequeña), el conjunto de datos se considera desequilibrado en esta clase. Esta asimetría es difícil porque tanto la formación del clasificador como la La métrica más común para evaluar la calidad de la clasificación son: estar sesgada a favor de la clase mayoritaria.
Se han propuesto numerosas métricas, como la puntuación de Brier, el área bajo la curva característica operativa del receptor (AUC) y otras, para abordar los desafíos de la clasificación binaria desequilibrada. Todos son asimétricos y asocian una mayor pérdida con la clasificación incorrecta de una muestra minoritaria frente a una muestra mayoritaria.
Entonces, para contrarrestar este problema, se utilizan varias técnicas de balanceo de datos, una de las cuales es SMOTE, que significa Técnica de sobremuestreo de minorías sintéticas. En la siguiente sección, discutiremos SMOTE y cómo puede mejorar el rendimiento de los estudiantes débiles como SVM.
Cómo se puede usar SMOTE
Para abordar esta disparidad, se propusieron esquemas de balanceo que aumentan los datos para hacerlos más balanceados antes de entrenar al clasificador. El sobremuestreo de la clase minoritaria mediante la duplicación de muestras minoritarias o el submuestreo de la clase mayoritaria es el método de equilibrio más simple.
La idea de incorporar muestras minoritarias sintéticas en datos tabulares se propuso por primera vez en SMOTE, donde las muestras minoritarias sintéticas se generan interpolando pares de puntos minoritarios originales.
SMOTE es un algoritmo de aumento de datos que crea puntos de datos sintéticos a partir de datos sin procesar. SMOTE se puede considerar como una versión más sofisticada de sobremuestreo o un algoritmo de aumento de datos específico.
SMOTE tiene la ventaja de no crear puntos de datos duplicados, sino puntos de datos sintéticos que difieren ligeramente de los puntos de datos originales. SMOTE es una opción de sobremuestreo superior.
El algoritmo SMOTE funciona así:
- Selecciona una muestra aleatoria del grupo minoritario.
- Determinará los k vecinos más cercanos para las observaciones en esta muestra.
- Luego, utilizando uno de esos vecinos, determinará el vector entre el punto de datos actual y el vecino elegido.
- El vector se multiplica por un número aleatorio entre 0 y 1.
- Agrega esto al punto de datos actual para obtener el punto de datos sintético.
Esta operación es esencialmente lo mismo que mover el punto de datos ligeramente en la dirección de su vecino. Esto garantiza que su punto de datos sintéticos no sea una réplica exacta de un punto de datos existente, al mismo tiempo que garantiza que no sea muy diferente de las observaciones conocidas en su clase minoritaria.
Probando SMOTE en una variedad de modelos
Yotam Elor et al en su artículo de investigación ¿To SMOTE, or not to SMOTE? han abordado la efectividad de SMOTE y otros tipos de técnicas de sobremuestreo para una variedad de algoritmos de ML como estudiantes débiles y estudiantes fuertes. En esta sección, nos referiremos a su investigación en la que evaluaremos el SMOTE contra estudiantes débiles como SVM. Antes de pasar al experimento, veremos el arreglo hecho para métricas, hiperparámetros y metodología.
AUC, F1, F2, puntuación de Brier, pérdida de registro, coeficiente de similitud de Jaccard y precisión equilibrada se utilizan para evaluar el rendimiento. Para F1, F2, coeficiente de similitud de Jaccard y precisión equilibrada, probamos clasificadores no consistentes con el umbral de decisión predeterminado de 0,5 y clasificadores consistentes optimizando el umbral de decisión en el pliegue de validación. No existe un umbral de decisión para AUC y Brier-score, y la optimización de pérdida de registro siempre es consistente.
Hay algunos hiperparámetros (HP) que se deben configurar para todos los métodos de equilibrio. Un factor importante que todas las técnicas de balanceo tienen en común es la proporción deseada de muestras positivas a negativas. Usar el conjunto de HP que produce los mejores resultados en los datos de prueba es una práctica común de selección de HP.
Cada conjunto de datos se estratificó aleatoriamente en pliegues de entrenamiento, validación y prueba con proporciones del 60 %, 20 % y 20 %, respectivamente. El pliegue de entrenamiento se sobremuestreó utilizando cada uno de los sobremuestreos para evaluar los métodos de sobremuestreo. Cada clasificador fue entrenado en el pliegue de entrenamiento aumentado, con paradas tempranas en el pliegue de validación (no aumentado) siempre que fue posible.
Para que los clasificadores sean consistentes para las métricas que requieren un umbral de decisión, el umbral se optimizó en el pliegue de validación. Finalmente, se calcularon las métricas para los pliegues de validación y prueba. El experimento se repitió siete veces con diferentes semillas aleatorias y divisiones de datos para cada conjunto de conjuntos de datos, sobremuestreado, clasificador y configuración de HP.
Ahora veremos prácticamente el rendimiento de datos equilibrado y predeterminado de SVM en un conjunto de datos integrado del conjunto de datos de imblearn. Para aprovechar esta prueba, necesitamos clonar este repositorio e instalar las dependencias del archivo requirements.txt como se muestra a continuación.
! git clone https://github.com/aws/to-smote-or-not.git %cd to-smote-or-not/ ! pip install -r requisitos.txt
A continuación, nuevamente debemos cambiar el directorio de trabajo a la carpeta src donde se aloja todo el código. Para esto, necesitamos importar el modelo de experimento del archivo experiment.py y la configuración de hiperparámetros para varios clasificadores y técnicas de muestreo ascendente de los respectivos archivos .py.
%cd /content/to-smote-or-not/src from experiment import experiment # mapa de configuración del clasificador from classifiers import CLASSIFIER_HPS # oversamplers config map from oversamplers import OVERSAMPLER_HPS
Como discutimos anteriormente, estamos utilizando los datos incorporados de imblearn que contienen la información para el proceso de mamografía. Y hay dos clases para predecir: -1 y 1 que son 10923 y 260 en muestras respectivamente. Eso significa que es un gran dato desequilibrado.
importar pandas como pd importar numpy como np # conjunto de datos de imblearn.datasets importar fetch_datasets data = fetch_datasets()[“mammography”]
x = pd.DataFrame(datos[“data”]) y = np.matriz(datos[“target”]).reforma((-1, 1))
Ahora, a continuación, debemos configurar los experimentos y esto se puede hacer aprovechando el experimento que hemos importado anteriormente. A continuación, solo necesitamos cambiar las pocas configuraciones para el equilibrio entre los datos originales y los datos sobremuestreados. Necesitamos cambiar el tipo de sobremuestreadores para por defecto y parámetros para por defecto. Y la configuración que se muestra a continuación es para la técnica SMOTE sobremuestreada.
resultados = experimento( x=x, y=y, # técnica de sobremuestreo a elegir oversampler={ “type”: “smote”, “ratio”: 0.5, “params”: OVERSAMPLER_HPS[“smote”][0]}, # clasificador a elegir clasificador={ “tipo”: “svm”, # [“cat”, “dt”, “xgb”, “lgbm”, “svm”, “mlp”]
“parámetros”: CLASIFICADOR_HPS[“svm”][0]
}, seed=0, normalize=False, clean_early_stopping=False, consistente=True, repeticiones=1)
Aquí está el resultado de la SVM en los datos originales.
import json # Impresión de resultado predeterminado (json.dumps (resultados, sangría = 4))
Y el resultado para una relación de sobremuestreo del 50% es,
Ultimas palabras
A través de este artículo, hemos discutido el problema con los datos desequilibrados y discutido cómo SMOTE puede ayudar a evitar este problema. Con el fin de mejorar el desempeño de los alumnos débiles, hemos aprovechado el experimento del artículo de investigación ¿To SMOTE, or not to SMOTE? y los resultados que hemos visto anteriormente.