Sobreajuste: ¿Sin bala de plata?

21

Tengo entendido que incluso cuando se siguen los procedimientos adecuados de validación cruzada y selección de modelos, se producirá un sobreajuste si se busca un modelo lo suficientemente difícil , a menos que se impongan restricciones en la complejidad del modelo, punto. Además, a menudo las personas intentan aprender las penalizaciones sobre la complejidad del modelo a partir de los datos que socavan la protección que pueden proporcionar.

Mi pregunta es: ¿cuánta verdad hay en la declaración anterior?

A menudo escucho a practicantes de ML decir: " En mi empresa / laboratorio, siempre probamos todos los modelos disponibles (por ejemplo, de bibliotecas como caret o scikit-learn ) para ver cuál funciona mejor ". A menudo sostengo que este enfoque puede sobreajustar fácilmente, incluso si se toman en serio la validación cruzada y mantienen los conjuntos de espera de la forma que deseen. Además, cuanto más buscan, más probable es que se sobreajusten. En otras palabras, la optimización excesiva es un problema real y no hay heurísticas que puedan ayudarlo a luchar sistemáticamente contra ella. ¿Me equivoco al pensar de esta manera?

Amelio Vazquez-Reina
fuente
¿Está preguntando sobre ML específicamente o modelos multivariados en general?
rumtscho
@rumtscho todo en ML.
Amelio Vazquez-Reina
1
Gracias @CagdasOzgenc: "cuanto mayor es el espacio de búsqueda (los modelos considerados), peor es el resultado" . No estoy seguro de a qué nivel de abstracción "espacio de búsqueda" se refiere aquí, pero al "esforzarme lo suficiente", me refiero a buscar a través de más y más modelos, y así aumentar la complejidad / espacio de búsqueda del "metamodelo" (si lo desea) que estamos tratando de encajar.
Amelio Vazquez-Reina

Respuestas:

8

No es una respuesta completa, pero una cosa que la gente pasa por alto en esta discusión es qué significa la validación cruzada (por ejemplo), ¿por qué la usa y qué cubre?

El problema que veo al buscar demasiado es que el currículum vitae que la gente hace a menudo está dentro de un solo modelo. Fácil de hacer estableciendo un folds=argumento del procedimiento de ajuste del modelo. Pero cuando va a múltiples modelos, e incluso a múltiples procedimientos para crear múltiples modelos, agrega otra capa o dos que no ha envuelto en CV.

Por lo tanto, deberían estar utilizando CV anidados. Y también deberían estar usando "Target Shuffling" (remuestreo / prueba de permutación) envuelto alrededor de todo su proceso para ver qué tan bien su procedimiento funcionaría si rompe la relación entre variables dependientes e independientes, es decir, ¿cuánto mejor que aleatorio? considerando todo tu proceso?

Wayne
fuente
1
+1. Hacer la selección del modelo con capas únicas (o muy pocas) de CV que ejecutan una búsqueda de cuadrícula (selección del modelo) definitivamente puede conducir a un sobreajuste (para cualquier persona interesada, recomiendo, por ejemplo, esto y las fuentes allí). Había leído sobre "Target Shuffling" (para otros lectores, recomiendo esta exposición ), pero nunca lo usé yo mismo; Me pregunto si también se puede abusar de él (por ejemplo, hacer múltiples pruebas que conducen a falsos positivos con el tiempo y, por lo tanto, buscar de nuevo "lo suficientemente duro" (?)).
Amelio Vazquez-Reina
7

En mis más o menos 4 años de experiencia, descubrí que probar todos los modelos disponibles en caret (o scikit-learn) no necesariamente conduce a un sobreajuste. Descubrí que si tiene un conjunto de datos suficientemente grande (más de 10,000 filas) y un equilibrio de clases más o menos uniforme (es decir, sin desequilibrio de clase como en el riesgo de crédito o problemas de marketing), entonces el sobreajuste tiende a ser mínimo. Vale la pena señalar que mi búsqueda de cuadrícula en los parámetros de ajuste tiende a no ser más de 30 permutaciones por modelo. En el extremo, si usaras 100 o 1,000 permutaciones por modelo, probablemente te sobreajustes.

La forma en que ha formulado su pregunta hace que la respuesta sea bastante fácil: en el extremo, sí, es probable que el sobreajuste, si no es seguro. No hay bala de plata, y dudo que alguien sugiera lo contrario. Sin embargo, todavía hay un espectro razonablemente amplio donde el grado de sobreajuste es lo suficientemente mínimo como para ser aceptable. Tener una buena cantidad de datos no vistos en su conjunto de validación definitivamente ayuda. Tener múltiples conjuntos de validación invisibles es aún mejor. Tengo la suerte de trabajar en un campo donde recibo grandes cantidades de datos nuevos a diario.

Si estoy en una posición en la que estoy atascado con un conjunto de datos estáticos de menos de 2,000-3,000 observaciones (ej .: datos médicos que son difíciles de obtener), generalmente solo uso modelos lineales porque con frecuencia he visto un sobreajuste con gradiente Impulso y soporte de máquinas de vectores en conjuntos de datos suficientemente pequeños. Por otro lado, he hablado con un Kaggler superior (5% superior) que dijo que construye decenas de miles de modelos para cada competencia y luego los ensambla, utilizando varios miles de modelos en su conjunto final. Dijo que esta fue la razón principal de su éxito en la clasificación final.

Ryan Zotti
fuente
1
Sí. He trabajado con datos que tenían observaciones por millones. No importa qué validación intenté (kfold, bootstrapping e incluso simple holdout), hubo poca variación en los modelos. A medida que aumentan sus datos, menos cuidado debe tener para validar.
Ricardo Cruz
En otras palabras, ningún modelo tiene suficientes grados de libertad para "memorizar" millones de observaciones.
Ricardo Cruz
5

Mucho depende de la escala. Ojalá pudiera contar con tener más de 2,000-3,000 casos como el que normalmente tiene @RyanZotti; Raramente tengo 1/10 de esa cantidad. Esa es una gran diferencia de perspectiva entre la gente de aprendizaje automático de "big data" y aquellos que trabajan en campos como la biomedicina, lo que podría explicar algunas de las diferentes perspectivas que encontrará en este sitio.

Presentaré una explicación heurística de mi opinión sobre este problema. El problema básico en el sobreajuste, como se describe en la página de Wikipedia , es la relación entre el número de casos y el número de parámetros que está evaluando. Comience con la idea aproximada de que si tiene modelos M que está eligiendo entre los parámetros p por modelo, entonces está evaluando algo en el orden de los parámetros Mp en total.

Si existe el peligro de sobreajuste, hay dos formas generales de retroceder a un modelo más generalizable: reducir el número de parámetros o penalizarlos de alguna manera.

Con conjuntos de datos adecuadamente grandes, es posible que nunca se acerque al sobreajuste. Si tiene 20,000 casos y 20 modelos diferentes con 100 parámetros por modelo, es posible que no tenga problemas incluso sin penalización, ya que todavía tiene 10 casos por parámetro efectivo. No intentes esa estrategia de modelado con solo 200 casos.

El promedio de modelos podría considerarse como una forma de penalización. En el ejemplo del Kaggler citado por @RyanZotti, el número de casos es presumiblemente enorme y cada uno de los "varios miles" de modelos en el conjunto final contribuye individualmente solo una pequeña fracción del modelo final. Cualquier sobreajuste específico para un modelo contribuyente particular no tendrá una gran influencia en el resultado final, y el número extremadamente grande de casos en una competencia de Kaggler reduce aún más el peligro de sobreajuste.

Entonces, como con tantos problemas aquí, la única respuesta razonable es: "Depende". En este caso, depende de la relación entre el número de casos y el número efectivo de parámetros examinados, junto con la cantidad de penalización que se aplica.

EdM
fuente
2

Creo que esta es una muy buena pregunta. Siempre quiero observar la curva en forma de "U" en experimentos de validación cruzada con datos reales. Sin embargo, mi experiencia con datos del mundo real (~ 5 años en transacciones con tarjeta de crédito y datos educativos) no me dice que el ajuste excesivo puede suceder fácilmente en una gran cantidad (miles de millones de filas) de datos del mundo real .

A menudo observo que puedes intentar mejor ajustarte al conjunto de entrenamiento, pero no puedes hacer demasiado (por ejemplo, reducir la pérdida a 0), porque el conjunto de entrenamiento es realmente grande y contiene mucha información y ruido.

Al mismo tiempo, puede probar el modelo más complicado (sin regularización) en los datos de prueba, y parece estar bien e incluso mejor que algunos con regularización.

Finalmente, creo que mis afirmaciones podrían ser ciertas solo si usted tiene miles de millones de puntos de datos en capacitación. Intuitivamente, los datos son mucho más complejos de lo que modela, por lo que no se ajustará demasiado. Para miles de millones de filas de datos, incluso si está utilizando un modelo con miles de parámetros, está bien. Al mismo tiempo, no puede permitirse el cálculo para construir un modelo con millones de parámetros libres.

En mi opinión, esta es también la razón por la cual la red neuronal y el aprendizaje profundo se hicieron populares en estos días. En comparación con miles de millones de imágenes en Internet, cualquier modelo que pueda permitirse capacitarse no es suficiente para ajustarse demasiado.

Haitao Du
fuente
1

Estoy de acuerdo con @ ryan-zotti en que buscar lo suficiente no necesariamente conduce a un sobreajuste, o al menos no a una cantidad, por lo que lo llamaríamos sobreajuste. Permítanme tratar de exponer mi punto de vista sobre esto:

Box dijo una vez:

Recuerde que todos los modelos están equivocados; La pregunta práctica es cuán equivocados deben estar para no ser útiles.

(Ser perfecto requeriría todos los datos, lo que a su vez eliminaría la necesidad de un modelo en primer lugar).

1

Porque: al final, siempre tendremos un error de modelo / sobre / ajuste insuficiente: es la capacidad de detectar / medir este error dentro de nuestro foco de interés para tomar decisiones razonables lo que importa.


1

geekoverdose
fuente