¿Cuál es el tiempo de entrenamiento promedio y el tiempo de prueba de los algoritmos de aprendizaje automático más comunes?

No hay un corte claro al respecto. Solo puedo responder esto en parte basado en mi propia experiencia.

Si su tamaño de entrada (dimensionalidad) es grande y su máquina no puede manejarlo, todo será lento, tanto en entrenamiento como en pruebas. Si su máquina puede manejarlo, entonces:

  • La regresión logística (o la mayoría de los tipos de regresión simple) suele ser la más rápida tanto en tiempo de entrenamiento como en tiempo de prueba.
  • SVM también puede ser muy rápido porque la rutina de entrenamiento es un problema de programación cuadrática, es un problema establecido y las personas ofrecen muchas formas rápidas de optimizarlo. SVM en las pruebas también es muy rápido (a menos que tenga mala suerte y tenga millones de vectores de soporte.
  • Para la red neuronal , depende principalmente de algunos factores:
    • Hardware: ¿tienes una GPU? Si es así, ¿cuál es el tamaño de su red?
    • ¿Es su función objetivo convexa (o al menos cuasi convexa) con respecto a sus parámetros?
    • Tus hiperparámetros.

Si tiene una GPU y su red más su entrada puede encajar perfectamente en la memoria de la GPU, entonces puede tener un tiempo de prueba decente a rápido. Pero, su tiempo de entrenamiento puede ser muy lento si está tratando de optimizar un objetivo altamente no lineal, los gradientes están desapareciendo, las unidades están muertas, los gradientes no están equilibrados entre las diferentes unidades, etc.

Sin embargo, si no tiene una GPU, puede ser muy largo calcular un pase directo de red neuronal a menos que su red sea pequeña.

Cuando todo lo demás es fluido, su progreso de aprendizaje puede ser muy lento si sus hiperparámetros (como la tasa de aprendizaje, la tasa de impulso, la pérdida de peso, la tasa de abandono, etc.) no están configurados correctamente. Creo que encontrar un buen conjunto de hiperparámetros requiere tanto tiempo como entrenar la red misma.

  • Adaboost es extremadamente lento en el tiempo de entrenamiento, pero es muy rápido en el tiempo de prueba, también es muy robusto en muchas situaciones.
  • La mayoría de los algoritmos de agrupamiento pueden ser muy rápidos o muy lentos, dependiendo de qué tan grandes sean sus datos y cómo se distribuyan. Aunque no es tan malo como una red neuronal profunda porque sabes que en un momento el proceso de agrupación tendrá que terminar.

No hay una respuesta simple, aunque uno puede analizar algunos algoritmos por el número de puntos de datos en general. Por ejemplo, las implementaciones de OLS a menudo usan la descomposición de valores singulares para calcular la matriz de sombreros. Sin embargo, si tiene multicolinealidad, debe ajustarse. Etc.

Si los datos son demasiado grandes para caber en la memoria, las cosas cambian.

Si el algoritmo es vergonzosamente paralelizable (observando el ensacado y los bosques aleatorios aquí) y tiene un procesador multinúcleo, las cosas cambian.

Si tienes muchas filas en comparación con tus columnas, o al revés … bueno, entiendes la idea.

Los MCO pueden estar teóricamente limitados, y algunos otros que se me ocurren. La regresión logística no se limita fácilmente en la complejidad del tiempo simplemente porque la optimización es no lineal. Los árboles son rápidos, a menos que tenga datos categóricos con muchos niveles.

Hay tantas maneras en que las cosas pueden cambiar con los datos que tales límites no son fáciles de expresar matemáticamente. Y la naturaleza estocástica de algunos algoritmos (bosques aleatorios, MCMC, etc.) que solo podemos obtener matemáticamente límites realistas muy generales. Eso cambia con los datos reales y el poder de cómputo simplemente porque este último puede ser inundado por el primero.

Me encantan las respuestas cortas y útiles, así que espero que mi respuesta sea breve y útil:

Depende de muchos parámetros como:

Entrenamiento / prueba. Tamaño del conjunto de datos?

Características del tamaño?

Metodologia?

More Interesting

Acabo de completar el primer año de ingeniería informática. Quería mejorar mi pensamiento lógico y algorítmico resolviendo problemas de un juez en línea. ¿Dónde empiezo?

¿Qué lenguaje de programación debo usar para implementar algoritmos que creo?

¿Cuáles son algunos algoritmos de agrupamiento teórico de gráficos exitosos?

Cómo resolver esta recurrencia T (n) = T (sqrt (n)) + log_2 n

¿Cuál es la diferencia entre los métodos de búsqueda y los algoritmos utilizados por los motores de búsqueda de Google, Yahoo y Bing? ¿Cómo lo explicarías de una manera simple?

¿Cómo elige Chrome el color de las rayas en las miniaturas de la página "Más visitadas"? Está claramente basado en el favicon, pero no puedo decir exactamente cómo se deriva.

¿Se necesitarán estructuras de datos y algoritmos para los ingenieros de diseño analógico o EDA?

¿Cómo uso cualquier biblioteca en Java que implemente la selección de funciones del algoritmo RELEIFF?

Cómo revertir un número promedio de números sin los números

¿Hay alguna lista de problemas de árbol AVL similares a los problemas de árbol binario de Stanford?

Cómo hacer búsquedas difusas eficientes usando la distancia levenshtein

¿Cómo mantiene Google en secreto su algoritmo de sus empleados cuando son sus empleados quienes lo prueban?

Cómo probar la profundidad del primer recorrido utilizando listas de adyacencia

¿Puedes darme una idea para un juego simple que implemente el algoritmo (como el algoritmo A *) o la inteligencia artificial para NPC en el juego?

¿Cuáles son las ventajas y desventajas de los enfoques de espera ocupada y sueño y vigilia para la exclusión mutua con respecto al kernel de Linux?