¿Cuáles son algunos algoritmos que un científico de datos debe saber y comprender?

Dado que esta pregunta parece estar precedida por “Big Data”, hay un par de algoritmos importantes que vienen a la mente.

Una clase importante de algoritmos para conocer son aquellos que son adecuados para datos que son demasiado grandes para ser leídos en la memoria / RAM. Estos incluyen métodos de clasificación y muestreo. Dos de los algoritmos más comunes, que vale la pena conocer, en este espacio son:

  • Muestreo de yacimientos
  • Ordenar fusión

También vale la pena conocer los métodos de optimización numérica que pueden encajar perfectamente en un entorno de división / conquista (por ejemplo, método de bisección). Menciono Bisection principalmente porque es un método poderoso que a menudo se saca de la mira por métodos más populares como Newton-Raphson y, en menor medida, el método de Brent. Algunos otros métodos importantes incluyen: BFGS de memoria limitada, descenso de gradiente estocástico, método de Brent, solo por nombrar algunos.

En lo que respecta a las técnicas estadísticas y de aprendizaje automático, se beneficiará enormemente al conocer las técnicas que pueden manejar / abordar todas las peculiaridades extrañas que vienen con los datos del “mundo real”. Por ejemplo, ser capaz de manejar problemas de multicolinealidad (a través de técnicas como la regresión de Ridge / Lasso, selección de características), valores atípicos (regresión cuantil, entre otros), errores en las variables, censura, etc., son muy importantes. Por experiencia personal, a menudo me sorprende la frecuencia con que una métrica simple, como la distancia de Hamming, se puede aplicar fácilmente a muchos problemas del mundo real.

Los algoritmos de álgebra lineal numérica también pueden ser extremadamente útiles. Algunos de los más importantes son la descomposición de Cholesky, la descomposición de QR y el proceso de Gram-Schmidt. Esta lista de ninguna manera es exhaustiva, pero estos son varios métodos que a menudo se emplean en la evaluación de muchas técnicas de ML y estadísticas. Otra área que es importante de entender, especialmente si está implementando técnicas en un marco de MapReduce, son las técnicas de multiplicación de matrices paralelas.

No creo que una lista finita de técnicas califique, dada la diversidad de los campos aquí … Dependiendo del área de investigación, uno podría necesitar estar familiarizado con las siguientes áreas (y algoritmos que ayudan a lograr estas técnicas de manera eficiente). Esta es una lista rápida que se me ocurre:

  • Clasificación / regresión / Minería de patrones: regresión logística, aprendizaje automático (SVM?), Etc.
  • Agrupación: agrupación k-significa (basada en centroide), agrupación jerárquica, etc.
  • Modelado estadístico / análisis de datos: intervalos de confianza, ruido / error, transformación rápida de Fourier, correlación.
  • Modelado predictivo: red bayesiana / cadenas de Markov, etc.
  • Modelado de series de tiempo: modelo de media móvil autorregresiva, etc.
  • Optimización: programación lineal, optimización convexa (multiplicador de Lagrange, condiciones de Karush-Kuhn-Tucker), técnicas no lineales: cómo hacerlo de manera eficiente (técnicas de descenso de gradiente y barrido)

No creo que esta lista esté cerca de ser exhaustiva. También quería señalar que, si simplemente está buscando emplear cualquiera de estas técnicas para modelar su problema, existen herramientas populares que están disponibles para resolverlas de manera inmediata. Consulte las herramientas de modelado, optimización y visualización de datos como Matlab, R, Gurobi para lograr esto. Nuevamente, si los datos involucrados son Big Data, entonces es posible que necesite algoritmos completamente diferentes para poder emplear estas técnicas (algunos de ellos no son fáciles de modelar como algoritmos distribuidos)

Intente echar un vistazo al algoritmo de bosques aleatorios distribuidos. Aquí hay una charla al respecto. Es muy importante para Big Data: Big Data – Bosque aleatorio distribuido por Jan Vitek