¿Cuándo puede un algoritmo de clasificación dar un AUC de 1.0 o una clasificación perfecta?

Podría haber varias razones para eso, algunas de ellas ya se mencionaron en las respuestas a continuación. Una idea más en la que podría pensar sería en los errores de redondeo cuando está “imprimiendo” el rendimiento:
Por ejemplo, en Python, considere el caso:
>>> ‘% .2f’% 0.996
‘1.00’

Dado su conjunto de entrenamiento altamente desequilibrado, creo que puede estar interesado en este bonito artículo de revisión: “Aprender de datos desequilibrados

(Página en uri.edu).

Además, cuando compara diferentes algoritmos, le recomiendo usar validación cruzada anidada en lugar de k-fold regular para obtener una estimación de rendimiento “más” imparcial. Creo que el suyo puede ser demasiado optimista. En realidad estaba planeando escribir un artículo sobre eso, pero aún no he tenido la oportunidad de hacerlo. Aquí habría un artículo relevante:

  • S. Varma y R. Simon. Sesgo en la estimación de errores cuando se utiliza la validación cruzada para la selección del modelo. BMC bioinformática, 7 (1): 91, 2006.

Y un breve resumen mío: ¿Cómo evalúo un modelo?

Además de algunos ejemplos de código que muestran cómo hacerlo en Python / scikit-learn: Jupyter Notebook Viewer

Espero que sea útil, y buena suerte!

Dos conjeturas:

  • Está mirando accidentalmente un error de entrenamiento y su modelo está sobreajustado; O
  • Está haciendo trampa involuntariamente al usar como característica alguna variable a la que no tendría acceso para predecir (por ejemplo, mirar hacia el futuro)

La razón principal podría ser tener una característica o características que puedan predecir perfectamente la salida ya que ha marcado todas las otras posibilidades en la respuesta, como redondear. Por ejemplo, tiene varias admisiones (A) en su conjunto de características, lo que implica que A> 1 se considera una readmisión. Tal vez no sea tan simple como eso pero similar. Puedes encontrar esto mirando tu hipótesis.