¿Es bueno hacer un muestreo estratificado para la regresión cuando se le da con grandes conjuntos de datos?

Independientemente del método que elija, el uso de solo una fracción del conjunto de datos tabulares no afectará drásticamente el rendimiento del modelo . Más de 100 mil filas es difícil ver grandes mejoras de AUC al agregar más datos.

Además, SVM es notoriamente lento .

Si puedes usar un algoritmo lineal

  • Pruebe LinearSVR en lugar del núcleo lineal (u otro) dentro de SVR.
  • Pruebe SGDRegressor en lugar de SVR. Más rápido y puede hacer un aprendizaje incremental a través de partial_fit , por lo que todo el conjunto de datos no se guarda en la memoria. Requiere más afinación.

Si tiene que usar un algoritmo no paramétrico (por ejemplo, para la precisión del modelo)

  • Pruebe NuSVR en lugar de SVR. Puede restringir el número de vectores de soporte para una solución más rápida (pero menos precisa).
  • Prueba RandomForestRegressor. Puede ser rápido con poca necesidad de sintonización.

El muestreo estratificado es bueno cuando tiene grupos raros y datos desequilibrados. Si no hay buena evidencia de que tenga resultados raros o predictores raros en sus datos, una muestra aleatoria simple será suficiente (y reducirá el tamaño de sus datos). Si es grande y desordenado, puede considerar usar un método con menos complejidad computacional (modelo de regresión penalizado como LASSO o red elástica) o una capacidad para ejecutarse dentro de un marco MapReduce (paquete de guardabosques de bosque aleatorio en R, por ejemplo). Eso reducirá el tiempo de cálculo y la memoria requerida.

El muestreo estratificado es más apropiado cuando el tamaño de la muestra es limitado y pequeños subgrupos o “estratos” pueden estar sobre o sub representados en la muestra y, por lo tanto, sesgar los resultados.

Para un tamaño de muestra decente y suponiendo que cada elemento del conjunto de datos es igualmente probable que se seleccione, el muestreo aleatorio simple suele ser el más apropiado. Otros métodos de muestreo tienden a emplearse solo cuando no es factible obtener una muestra verdaderamente aleatoria.

En mi opinión, una simple muestra aleatoria de sus datos originales debería funcionar bien. La muestra aleatoria simple es imparcial y, en teoría, la muestra que obtenga debería ser la misma que su conjunto de datos completo.

Si usa Python, puede notar la función train_test_split que hace la división por usted. Es la función que utilizo personalmente con más frecuencia cuando quiero dividir aleatoriamente los datos de mi tren en trenes y conjuntos de validación. La función tiene una opción para especificar el uso de la técnica de muestreo estratificado para los datos de clasificación. En mi opinión, esto podría ser útil para tareas de clasificación con etiquetas muy desequilibradas, ya que le asegura obtener algunas muestras de las clases menores.

En su caso, dado que mencionó el análisis de regresión, no estoy seguro de cómo va a hacer un muestreo estratificado (¿desea hacerlo en una de las variables x?). Probablemente una muestra aleatoria simple sería la mejor en este caso.

Usaría una muestra de los datos. No estoy seguro de cómo se ven sus datos, por lo que no estoy seguro acerca de la estratificación, pero al menos usaría una simple muestra de datos randon.