Creo que “cuanto más matemáticas, mejor” es cierto para todo en la vida, pero probablemente solo soy yo.
En su mayor parte, encuentro que comprender la idea detrás de algo es mucho más importante que los detalles técnicos.
Algunas maneras en las que he encontrado útil la intuición de las matemáticas más abstractas:
- ¿Cómo un nuevo graduado que no es CS ingresa a la ciencia de datos?
- ¿Qué es un programa de análisis de datos en línea que puedo usar?
- ¿Deberían los investigadores de educación adaptar R y alejarse del software estadístico minorista (SAS, Stata, SPSS)?
- Scala es conocido por Big Data Analytics pero no es por análisis de datos / ciencia ¿es esto un error o está fundado?
- ¿Cuáles son algunos algoritmos de aprendizaje automático que todo estudiante de informática debe saber?
Aprendizaje automático:
- Saber qué podría salir mal
- Sí, las redes neuronales pueden aproximarse de manera arbitraria a una función continua por partes, pero hay una razón por la que a menudo convergerán en una solución que funciona mal alrededor de las discontinuidades. En lugar de pasar horas ejecutando experimentos en esto, puedo adivinarlo y ejecutar un control de cordura de media hora.
- Saber que salió mal
- Lo mismo, pero la retrospectiva hace las cosas más fáciles (y a veces más difíciles)
- Para encontrar la manera correcta de pensar en su modelo.
- Por ejemplo, los núcleos en SVM provienen de transformaciones entre espacios internos de productos. En problemas de clasificación, esto le permite elegir un espacio interno del producto en el que los datos se separan más fácilmente y asignar esa separación de nuevo a su espacio de características de una manera eficiente. A veces esta es una forma útil de pensarlo. Otras veces, es más útil ver un núcleo gaussiano como un algoritmo ponderado de vecinos más cercanos.
- Para saber cuándo ML es innecesario .
- Recientemente, después de enterarme de que estaba usando redes neuronales convolucionales en mi investigación, alguien se acercó a mí con su problema de investigación y me pidió que le aplicara CNN. En cambio, encontré una solución analítica y probé que, dada la información que tenían, era imposible construir una solución más precisa. Se necesitaron dos horas para desarrollar la solución, 30 minutos para implementarla y otras tres horas para demostrar que era óptima. En ese momento, podría haber entrenado a una CNN mediocre que tardó más en evaluar la entrada, tuvo que ser reentrenada para cada aplicación y nunca sería tan precisa.
- Lo que digo es que creo que ML debería ser el último recurso. Si obviamente no hay una solución analítica viable o no tiene tiempo para buscarla, continúe y salte al último recurso. Si su objetivo es encontrar la mejor solución, generalmente es mejor probar primero un enfoque analítico.
Comprender las matemáticas me ha permitido omitir algunas de las cientos de horas de experimentación que normalmente se necesitan para obtener una intuición para el aprendizaje automático porque puedo hacer conjeturas fundamentadas sobre lo que sucederá y por qué, y simplemente realizar controles rápidos de cordura. Sin embargo, todavía tengo un largo camino por recorrer.
Estadística
Obviamente, las estadísticas son vitales para la ciencia de datos y comprender las matemáticas puede ayudar mucho a comprender las estadísticas. Hasta hace muy poco, había evitado estadísticas como la peste. Solo me interesaban las matemáticas “puras”.
Al igual que en ML, las matemáticas te permiten entrar directamente. Puedes entender rápidamente qué suposiciones importan en la práctica y cuáles son realmente solo importantes para la teoría.
A veces su problema no encaja bien en un paradigma en su libro de texto. Esos tiempos, una base sólida en matemáticas te ayuda a desarrollar tu propia teoría.
¿Qué matemática es más útil?
Álgebra lineal: por supuesto que lo es. Lo necesita si va a hacer casi cualquier otra cosa en esta lista. Si tiene una sólida comprensión de la descomposición de valores singulares, estará bien.
Análisis numérico: el análisis numérico se trata de determinar si un algoritmo funcionará en la práctica . Las computadoras no almacenan números exactamente, por lo que incluso cuando las matemáticas se verifican, el algoritmo aún puede fallar.
Seamos honestos. Nadie más que la NASA analiza su código tan intensamente antes de ejecutarlo , por lo que la mayoría de los días el análisis numérico no aparecerá. Pero un día, escribes un código, lo ejecutas y devuelve algunos valores disparatados. El análisis numérico te dice exactamente dónde te equivocaste.
No estoy abogando por hacer un análisis completo de su algoritmo cada vez que se vuelve loco porque el análisis numérico es realmente tedioso y poco práctico cuando su trabajo es explorar datos rápidamente. (Quizás para algún código de producción). Un poco de práctica con el análisis numérico es lo más importante para la intuición que te brinda para que puedas adivinar dónde está el problema.
Regla número 1 del análisis numérico: ¡Taylor Series es el rey!
Sin embargo, el análisis numérico incluye algunas otras herramientas.
- Métodos de interpolación
- Polinomios, trigonométricos, splines, etc.
- Transformada rápida de Fourier !!!
- Absolutamente entiendo las transformadas de Fourier! Aceleran la convolución, encuentran patrones en series de tiempo e imágenes, y mucho más.
Teoría de la medida, particularmente la integral de Lebesgue:
Profundizar no es necesario. Simplemente entienda las ideas básicas y realmente mejorará su intuición para la probabilidad.
¡¡¡¡¡Mejoramiento!!!!!
Este es uno enorme. Las diferentes técnicas de optimización afectan la tasa de convergencia, así como la cantidad de memoria requerida. Saber cuál usar será la diferencia entre construir un buen modelo y bloquear su computadora. Confía en mí, he hecho las dos cosas.
Pero, de nuevo, creo que el mayor beneficio es la intuición que obtienes sobre cómo converge un algoritmo.
Estadísticas: eso es solo una especie de matemática … pero obviamente es un gran problema. Conozca todo lo que pueda.
Geometría diferencial: no es necesario profundizar aquí. Sin embargo, debo admitir que, al comenzar a escribir un ejemplo de algunos conceptos de geometría diferencial que nunca necesitará saber, pensé en una aplicación potencial interesante para el aprendizaje automático, así que no tenga miedo de aprender demasiado.
Cuando especifica un tipo de modelo ML o la estructura de su red neuronal, está definiendo una variedad sobre el espacio de todas las funciones posibles e hipotetizando que la función que desea aproximar existe “cerca” de esa variedad. Una vez que ha ajustado su modelo, ha definido otra variedad (su función) que hipotetiza que cada punto en su conjunto de prueba también estará cerca.
Es prácticamente imposible visualizar estos múltiples con precisión, pero aún puede ganar un poco … sí, intuición de nuevo. Encontré esto particularmente útil al diseñar un algoritmo para optimizar varios modelos al mismo tiempo para eliminar el ruido de cada uno de ellos.
Esas son las cosas principales que me vienen a la mente en este momento, pero editaré esto si pienso en otra cosa.