¿Es el estado aleatorio un parámetro para sintonizar?

9

Un problema que ocurre con bastante frecuencia en mis experimentos es que el modelo varía en rendimiento cuando se cambia el estado aleatorio del algoritmo. Entonces la pregunta es simple, ¿debería tomar el estado aleatorio como un hiperparámetro? ¿Porqué es eso? Si mi modelo supera a otros con un estado aleatorio diferente, ¿debería considerar que el modelo se ajusta demasiado a un estado aleatorio particular?

un registro del árbol de decisión en sklearn: (random_rate debería ser un estado aleatorio) un registro del árbol de decisión en sklearn

PeterLai
fuente
Con el poder computacional moderno, es posible identificar una semilla que proporciona un resultado de caso límite. Digamos que eres un investigador y has realizado un experimento, pero tus resultados no están funcionando de la manera que deseas. Sería bastante fácil realizar tu experimento a través de millones de semillas para ver cuáles cuentan la historia que estás buscando. Es mejor tener una semilla fija que siempre uses. Te mantiene honesto!
Brandon Bertelsen

Respuestas:

5

No, no deberías.

Los hiperparámetros son variables que controlan algunos aspectos de alto nivel del comportamiento de un algoritmo. A diferencia de los parámetros regulares, el algoritmo mismo no puede aprender automáticamente los hiperparámetros de los datos de entrenamiento. Por esta razón, un usuario experimentado seleccionará un valor apropiado basado en su intuición, conocimiento de dominio y el significado semántico del hiperparámetro (si lo hay). Alternativamente, uno podría usar un conjunto de validación para realizar la selección de hiperparámetros. Aquí, tratamos de encontrar un valor óptimo de hiperparámetro para toda la población de datos probando diferentes valores candidatos en una muestra de la población (el conjunto de validación).

Con respecto al estado aleatorio, se utiliza en muchos algoritmos aleatorios en sklearn para determinar la semilla aleatoria que se pasa al generador de números pseudoaleatorios. Por lo tanto, no gobierna ningún aspecto del comportamiento del algoritmo. Como consecuencia, los valores de estado aleatorio que funcionaron bien en el conjunto de validación no corresponden a los que funcionarían bien en un nuevo conjunto de prueba invisible. De hecho, dependiendo del algoritmo, puede ver resultados completamente diferentes simplemente cambiando el orden de las muestras de entrenamiento.

Le sugiero que seleccione un valor de estado aleatorio al azar y lo use para todos sus experimentos. Alternativamente, podría tomar la precisión promedio de sus modelos sobre un conjunto aleatorio de estados aleatorios.

En cualquier caso, no intente optimizar estados aleatorios, esto seguramente producirá medidas de rendimiento sesgadas de manera optimista.

Daniel López
fuente
0

¿Qué hace el efecto random_state? formación y validación de la división de conjuntos, ¿o qué?

Si es el primer caso, creo que puede intentar encontrar diferencias entre el esquema de división en dos estados aleatorios, y esto podría darle cierta intuición en su modelo (quiero decir, puede explorar por qué funciona entrenar el modelo en algunos datos, y usa el modelo entrenado para predecir algunos datos de validación, pero no funciona para entrenar el modelo en otros datos y predecir algunos otros datos de validación. ¿Se distribuyen de manera diferente?) Tal análisis puede darle cierta intuición.

Y, por cierto, también encontré este problema :), y simplemente no lo entiendo. Tal vez podamos trabajar juntos para investigarlo.

Salud.

Janzen LIU
fuente
1
No entiendo la pregunta y no entiendo esta respuesta.
Michael R. Chernick
La pregunta es, ¿cuál es el uso de random_state en su caso? ¿Se usa como semilla para generar un número aleatorio?
Janzen LIU