Cómo usar un árbol de decisión para clasificar un conjunto de datos no balanceado

Existen varias estrategias para aprender de datos no balanceados.

Este documento sobre el tema debería ayudarlo (Una idea de la clasificación con datos desequilibrados: resultados empíricos y tendencias actuales sobre el uso de características intrínsecas de datos (PDF) – Semantic Scholar), pero trataré de resumir algunas estrategias a continuación:

  • Submuestreo : elimine muestras de la clase mayoritaria (clase con más muestras) utilizando un algoritmo de submuestreo. Ejemplos: Selección unilateral (OSS), vecinos más cercanos editados (ENN), enlaces Tomek, muestreo aleatorio …
  • Sobremuestreo : genera nuevas muestras de la clase minoritaria (clase con pocas muestras) utilizando un algoritmo de sobremuestreo. Ejemplos: SMOTE , BorderlineSMOTE, SPIDER, Random Resampling …
  • Aprendizaje sensible al costo : cambie el algoritmo de creación del árbol de decisión para que las clasificaciones erróneas de las muestras de clases minoritarias tengan un costo más alto que las clasificaciones erróneas de las muestras de clases mayoritarias.
  • Ensemble Learning : en lugar de usar un solo árbol de decisión, intente usar varios árboles de decisión. Echa un vistazo al algoritmo de ensacado, bosques aleatorios, clasificadores de árboles adicionales, Iterative-Classifier-Selection-Bagging (ICSBagging) …
  • Combinación : Combina estrategias de submuestreo, sobremuestreo y aprendizaje conjunto. La mayoría de los métodos de aprendizaje de vanguardia para aprender de datos desequilibrados utilizan una combinación de diferentes estrategias. Elija el que sea mejor para usted.

Además, existe este paquete de python: fmfn / UnbalancedDataset para aprender de datos no balanceados en python. Le proporcionará un acceso fácil a varias estrategias para que pueda evaluar cuál es la mejor para usted. Al evaluar, recuerde utilizar una métrica adecuada, como el Área bajo la curva ROC (AUC).

Me he encontrado con este problema muchas veces en el pasado. No estoy seguro de cuál sería la mejor solución “correcta”, pero he usado alguna forma de embolsado de árboles [1] al construir múltiples conjuntos de datos balanceados a partir de múltiples muestras aleatorias del conjunto infinito, entrenar múltiples árboles de decisión y luego ensamblar el resultados.

[1] Bootstrap agregando

También este documento puede ser útil:

http://sci2s.ugr.es/keel/pdf/alg

Baje uniformemente los puntos de datos de muestra de una clase hasta que su relación con la clase pequeña sea alrededor de 3: 1, entrene a su clasificador de árbol de decisión. Si desea recuperar la probabilidad calibrada en la distribución original (para fines de clasificación, no es necesario, ya que solo necesita un umbral), puede aplicar bayesiano a la salida de probabilidad del árbol de decisión.

Si este es un problema de aprendizaje supervisado (tiene un conjunto etiquetado), ¿por qué no reducir la muestra de la segunda clase hasta que las dos clases tengan proporciones comparables y capacitar al DT en eso? El clasificador aún debe generalizar para los datos de la distribución original.

También recomiendo el paquete SMOTE en R. Aquí hay un pequeño tutorial (texto y video) de Manuel Amunategui:

SMOTE – Supersampling Rare Events in R

¡Buena suerte!

buscar en google: SMOTE: Técnica de sobremuestreo de minorías sintéticas