32 votos

¿Es una mala idea ajustar los hiperparámetros en la muestra del conjunto de datos?

Tengo un conjunto de datos de 140000 ejemplos y 30 características para las que estoy entrenando varios clasificadores para una clasificación binaria (SVM, Regresión Logística, Bosque Aleatorio, etc.)

En muchos casos, el ajuste de los hiperparámetros en todo el conjunto de datos mediante la búsqueda en cuadrícula o aleatoria es demasiado costoso en términos de tiempo.

Empecé a utilizar la siguiente técnica

  • Submuestra de mi conjunto de datos
  • Utilice la fracción obtenida para afinar los hiperparámetros en
  • Utilizar los parámetros obtenidos para entrenar un modelo utilizando todo el conjunto de datos

Para evaluar cada conjunto de parámetros en el segundo paso utilizo sklearn 's GridSearchCV con cv=10. Para evaluar el modelo final que creo en el tercer paso utilizo sklearn 's cross_val_predict . En ese sentido evalúo mis modelos dejando un 10% de datos fuera, entreno en el resto y mido la precisión predictiva en el 10%, iterativamente 10 veces, tomando luego la media de las puntuaciones.

Lo que me preocupó es que la precisión de la predicción que obtengo del entrenamiento en todo mi conjunto de datos, es realmente cercana a la evaluación que obtengo al afinar los parámetros para el mejor conjunto de parámetros (cada conjunto de parámetros probado produce una puntuación obtenida del promedio de los resultados de la validación cruzada de 10 veces).

La mayoría de las veces la precisión que cross_val_predict medido utilizando todos los ejemplos de entrenamiento (conjunto de datos completo) está un poco por encima de lo que arrojó la evaluación de los mejores parámetros.

Para ilustrar esto, aquí está la evaluación de un conjunto de parámetros (en un conjunto de datos más pequeño que el descrito anteriormente, pero el efecto es el mismo)

Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...

Y aquí están las puntuaciones medias (de cross_val_predict ) que obtuve del entrenamiento en todo mi conjunto de datos utilizando los mejores parámetros

precision    recall  f1-score   support

      0       0.86      0.85      0.86     15417
      1       0.86      0.87      0.87     16561

avg / total       0.86      0.86      0.86     31978

acc score: 0.863750078179
roc au score: 0.863370490059
[[13147  2270]
 [ 2087 14474]]

Como se puede ver el entrenamiento en todo el conjunto de datos mejora los resultados. También he validado que un modelo mal afinado (por ejemplo, utilizando los valores por defecto o valores aleatorios para C y gamma ) conduce a una precisión de predicción mucho peor.

En general, creo que afinar los hiperparámetros en un subconjunto no es lo ideal, pero puede llevar a resultados relativamente buenos sin tener que esperar demasiado. Yo, por ejemplo, antes de utilizar ese enfoque usaba optunity para ajustar el hiperparámetro en todo el conjunto de datos. Este procedimiento tardaba entre 3 y 5 días en completarse y producía resultados que o bien tenían una precisión muy buena o una recuperación muy buena, pero no ambas, de modo que aunque para cada clase la precisión o la recuperación eran muy altas (más altas que las que había conseguido cualquiera de mis otros clasificadores) la medida f1 era realmente baja. Por el contrario, el uso de este último enfoque conlleva algunas horas de entrenamiento y una mejor medida de f1.

Mis preocupaciones son:

¿Limito la precisión de mi clasificación? ¿Evito utilizar toda la potencia de predicción que puede ofrecer mi conjunto de datos afinando sólo un subconjunto? Si se produce ese perjuicio en el rendimiento, ¿está limitado de alguna manera por algún factor?

20voto

John Richardson Puntos 1197

Además de la respuesta de Jim (+1): Para algunos clasificadores, los valores de los hiperparámetros dependen del número de ejemplos de entrenamiento, por ejemplo, para una SVM lineal, el problema de optimización primario es

$\mathrm{min} \frac12\|w\|^2 + C\sum_{i=1}^\ell \xi_i$

con sujeción a

$y_i(x_i\cdot w _ b) \geq 1 - \xi_i, \quad \mathrm{and} \quad \xi_i \geq 0 \quad \forall i$

Obsérvese que el problema de optimización es básicamente una medida del término de desajuste de los datos (la suma sobre $\xi_i$ ) y un término de regularización, pero el parámetro de regrularización habitual se coloca con el término de desajuste de los datos. Evidentemente, cuanto mayor sea el número de patrones de entrenamiento que tengamos, mayor será el sumatorio y menor $C$ debe ser mantener el mismo equilibrio con la magnitud de los pesos.

Algunas implementaciones de la SVM reparametrizan como

$\mathrm{min} \frac12\|w\|^2 + \frac{C}{\ell}\sum_{i=1}^\ell \xi_i$

para compensar, pero algunos no lo hacen. Así que un punto adicional a considerar es si los hiperparámetros óptimos dependen del número de ejemplos de entrenamiento o no.

Estoy de acuerdo con Jim en que es probable que el sobreajuste del criterio de selección del modelo sea más bien un problema, pero si tiene suficientes datos, incluso en la submuestra, puede que no sea un problema sustancial.

19voto

lrobb Puntos 25

¿Es una mala idea ajustar los hiperparámetros en la muestra del conjunto de datos?

R: Sí, porque se corre el riesgo de sobreajustar (los hiperparámetros) en ese conjunto de pruebas específico resultante de la división entrenamiento-prueba elegida.

¿Limito la precisión de mi clasificación?

R: Sí, pero la sabiduría común del aprendizaje automático es: con sus hiperparámetros óptimos, digamos $\lambda^*$ En el caso de que se produzca un cambio en el modelo, éste se ajustará a todo el conjunto de datos y se convertirá en el modelo final para los nuevos casos futuros que no se hayan visto.

¿Evito utilizar toda la potencia de predicción que puede ofrecer mi conjunto de datos ajustando sólo un subconjunto?

R: véase la respuesta anterior.

Si se produce ese daño en el rendimiento, ¿está limitado de alguna manera por algún factor?

R: ídem.

Mido mi exactitud utilizando 10 veces la cruz como yo uso para evaluar también los parámetros

R: Tenga en cuenta que esto es diferente de lo que se pregunta en el título. El CV de 10 veces itera sobre 10 divisiones de prueba-entrenamiento para llegar a una estimación "insesgada" (menos sesgada) de la generalizabilidad (medida en este caso por la precisión). El CV 10 veces aborda exactamente la cuestión de la que hablo en la primera respuesta.

la precisión de la predicción que obtengo del entrenamiento en todo mi conjunto de datos

R: se trata de una medida "en la muestra" que podría ser optimista. Pero no olvides que tienes muchos casos y relativamente pocas características, por lo que este sesgo de optimismo puede no ser un problema. Nugget de aprendizaje automático: "el mejor regularizador es más datos".

[cont.], siempre se acerca mucho a la evaluación que obtengo al sintonizar los parámetros para el mejor conjunto de parámetros.

R: véase la respuesta anterior. Observe los gráficos de los hiperparámetros: ¿el ajuste disminuye el error y en qué medida? Por lo que dices, la sintonización no hace mucho.

Puedes probarlo de la siguiente manera. Tome una división del 70%-30% de entrenamiento-prueba. Compare el rendimiento predictivo de:

  1. un modelo no sintonizado entrenado en el conjunto de trenes,
  2. un modelo sintonizado de 10 pliegues-CV entrenado en el conjunto de trenes.

Deje que ambos modelos predigan el conjunto de pruebas. Si el rendimiento es muy parecido, entonces el ajuste no sirve de mucho. Si el rendimiento es diferente a favor del modelo ajustado, entonces continúe con el enfoque de ajuste.

5voto

Franck Dernoncourt Puntos 2128

Responderé por las redes neuronales artificiales (RNA).

Los hiperparámetros de las RNA pueden definir su proceso de aprendizaje (por ejemplo, la tasa de aprendizaje o el tamaño de los minilotes) o su arquitectura (por ejemplo, el número de unidades ocultas o capas).

Ajustar los hiperparámetros de la arquitectura en un subconjunto del conjunto de entrenamiento no es probablemente una buena idea (a menos que el conjunto de entrenamiento carezca realmente de diversidad, es decir, que el aumento del tamaño del conjunto de entrenamiento no aumente el rendimiento de la RNA), ya que los hiperparámetros de la arquitectura cambian la capacidad de la RNA.

A mí me preocuparía menos afinar los hiperparámetros que definen el proceso de aprendizaje en un subconjunto de su conjunto de entrenamiento, pero supongo que habría que validarlo empíricamente.

4voto

Philipp_P Puntos 1

Este artículo trata sobre el tema de tomar otros/pequeños conjuntos de datos para la puesta a punto de conjuntos de datos más grandes: https://papers.nips.cc/paper/5086-multi-task-bayesian-optimization.pdf

Creo que no es una mala idea en contraste con lo que dijo Jim .

0voto

Metaxal Puntos 173

Se pueden utilizar algoritmos de optimización de hiperparámetros que admitan evaluaciones de multifidelidad, es decir, evaluaciones en subconjuntos de sus datos para obtener una estimación aproximada pero útil sobre los valores óptimos de los hiperparámetros para todo el conjunto de datos. Estos enfoques suelen permitir reducir el coste computacional total necesario para ejecutar la optimización de hiperparámetros.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X