¿Es una mala idea ajustar el hiperparámetro en una muestra del conjunto de datos?

19

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

En muchos casos, el ajuste de hiperparámetros en todo el conjunto de datos mediante Grid o Búsqueda aleatoria es demasiado costoso en cuanto al tiempo.

Empecé a usar la siguiente técnica

  • Sub muestra mi conjunto de datos
  • Use la fracción obtenida para ajustar los hiperparámetros en
  • Use los parámetros obtenidos para entrenar un modelo usando todo el conjunto de datos

Para evaluar cada conjunto de parámetros en el segundo paso, uso sklearn's GridSearchCVcon cv = 10. Para evaluar el modelo final que creo en el tercer paso que uso sklearn's cross_val_predict. En ese sentido, evalúo mis modelos dejando un 10% por ciento de datos, entreno en el resto y mido la precisión predictiva en el 10%, iterativamente 10 veces, luego tomo el promedio de los puntajes.

Lo que me hizo preocuparme es que la precisión de predicción que obtengo del entrenamiento en todo mi conjunto de datos, está muy cerca de la evaluación que obtengo al ajustar los parámetros para el mejor conjunto de parámetros (cada conjunto de parámetros probados genera una puntuación obtenida de un promedio de 10- resultados de validación cruzados).

La mayoría de las veces, la precisión que se cross_val_predictmidió con 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 que describí 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 los puntajes promedio (de cross_val_predict) que obtuve de la capacitación 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 puede ver, la capacitación en todo el conjunto de datos mejora los resultados. También he validado que el modelo mal ajustado (por ejemplo, utilizando los valores predeterminados o valores aleatorios para Cy gamma) conduce a una precisión de predicción mucho peor.

En general, creo que ajustar los hiperparámetros en un subconjunto no es ideal, pero puede conducir a resultados relativamente buenos sin tener que esperar demasiado. Por ejemplo, antes de usar ese enfoque, utilicé el optunitypaquete para ajustar el hiperparámetro en todo el conjunto de datos. Este procedimiento tardaría entre 3 y 5 días en completarse y produciría resultados que tuvieran una muy buena precisión o un muy buen recuerdo, pero no ambos, por lo que, aunque para cada clase, la precisión o el recuerdo fueron realmente altos (más altos que cualquiera de mis otros clasificadores habían logrado) la medida f1 era realmente baja. Por el contrario, el uso del enfoque posterior conduce a algunas horas de entrenamiento y a una mejor medición de f1.

Mis preocupaciones son:

¿Limito la precisión de mi clasificación? ¿Evito usar todo el poder de predicción que puede ofrecer mi conjunto de datos sintonizando solo un subconjunto? Si está ocurriendo tal daño de rendimiento, ¿está de alguna manera limitado por algún factor?

LetsPlayYahtzee
fuente
Aclare los dos métodos que conducen a la precisión de predicción cercana. ¿Divide los datos en un conjunto de entrenamiento y un conjunto de validación, donde el conjunto de validación se usa solo para optimizar los hiperparámetros y no para el entrenamiento?
Iliyan Bobev
Ver mi pregunta actualizada. Espero que sea más claro ahora.
LetsPlayYahtzee

Respuestas:

15

Además de la respuesta de Jim (+1): para algunos clasificadores, los valores de los hiperparámetros dependen de la cantidad de ejemplos de entrenamiento, por ejemplo, para un SVM lineal, el problema principal de optimización es

metroyonorte12w2+Cyo=1ξyo

sujeto a

yyo(Xyowsi)1-ξyo,unnortereξyo0 0yo

Tenga en cuenta que el problema de optimización es básicamente una medida del término de ajuste de datos (la suma de más de ) y un término de regularización, pero el parámetro de regularización habitual se coloca con el término de ajuste de datos. Obviamente, cuanto mayor sea el número de patrones de entrenamiento que tengamos, mayor será la suma y menor debería ser para mantener el mismo equilibrio con la magnitud de los pesos.ξyoC

Algunas implementaciones de SVM reparameterise como

metroyonorte12w2+Cyo=1ξyo

para compensar, pero algunos no. Entonces, 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 el ajuste excesivo del criterio de selección de modelo probablemente sea un problema mayor, pero si tiene suficientes datos incluso en la submuestra, entonces esto puede no ser un problema sustancial.

Dikran Marsupial
fuente
11

¿Es una mala idea ajustar el hiperparámetro en una muestra del conjunto de datos?

R: Sí, porque corre el riesgo de sobreajustar (los hiperparámetros) en ese conjunto de prueba específico resultante de la división de prueba de tren 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, diga , vuelva a ajustar sus modelos en todo el conjunto de datos y haga de ese modelo su modelo final para casos nuevos, invisibles y futuros.λ

¿Evito usar todo el poder de predicción que puede ofrecer mi conjunto de datos sintonizando solo un subconjunto?

A: ver respuesta anterior.

Si está ocurriendo tal daño de rendimiento, ¿está de alguna manera limitado por algún factor?

A: idem.

Mido mi precisión usando una cruz de 10 veces como también la uso para evaluar los parámetros

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

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

R: esta es una medida "en muestra" que podría estar sesgada de manera optimista. Pero no olvide que tiene 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 está muy cerca de la evaluación que obtengo al ajustar los parámetros para el mejor conjunto de parámetros.

A: ver respuesta anterior. Mire las gráficas de hiperparámetros: ¿el ajuste disminuye el error y en cuánto? Por lo que dices, la sintonización no está haciendo mucho.

Puede probar esto de la siguiente manera. Tome una división de prueba de tren del 70% -30%. Compare el rendimiento predictivo de:

  1. un modelo sintonizado entrenado en el set de trenes,
  2. un modelo sintonizado de 10 CV CV entrenado en el conjunto del tren.

Deje que ambos modelos predigan el conjunto de prueba. Si el rendimiento es muy cercano, entonces el ajuste no está haciendo mucho. Si el rendimiento es diferente a favor del modelo ajustado, continúe con el enfoque de ajuste.

Jim
fuente
1

Responderé para redes neuronales artificiales (ANN).

Los hiperparámetros de los ANN pueden definir su proceso de aprendizaje (p. Ej., Tasa de aprendizaje o tamaño de mini lote) o su arquitectura (p. Ej., Número de unidades o capas ocultas).

Ajustar hiperparámetros arquitectónicos en un subconjunto de su conjunto de entrenamiento probablemente no sea una buena idea (a menos que su conjunto de entrenamiento realmente carezca de diversidad, es decir, aumentar el tamaño del conjunto de entrenamiento no aumenta el rendimiento de ANN), ya que los hiperparámetros arquitectónicos cambian la capacidad del ANN.

Me preocuparía menos ajustar los hiperparámetros que definen el proceso de aprendizaje en un subconjunto de su conjunto de entrenamiento, pero supongo que uno debería validarlo empíricamente.

Franck Dernoncourt
fuente
0

Puede usar algoritmos de optimización de hiperparámetros que admitan evaluaciones de múltiples fidelidades, es decir, evaluaciones en subconjuntos de sus datos para obtener una estimación aproximada pero útil sobre valores óptimos de hiperparámetros para todo el conjunto de datos. Tales enfoques generalmente permiten reducir el costo computacional total necesario para ejecutar la optimización de hiperparámetros.

IndieSolver
fuente