¿Un científico de datos / ingeniero de aprendizaje automático requiere un conocimiento profundo de las estructuras de datos y los algoritmos?

A2A.

Un científico de datos debe comprender en profundidad el algoritmo que está ejecutando, pero no necesita ser un experto en algoritmos y estructuras de datos desde el punto de vista de la informática. Por supuesto, es necesario un entendimiento básico, pero yo diría que no se requiere más que un curso de licenciatura en ciencias de la computación que sea de conocimiento.

Por ejemplo, necesita comprender la escalabilidad y la complejidad computacional. Debe saber si se enfrenta a un problema np-hard o algo con una solución más fácil y escalable. Debe poder ver el pseudocódigo de un nuevo algoritmo de aprendizaje automático y comprender de un vistazo lo que está haciendo. Necesita saber lo suficiente sobre las estructuras de datos de árbol para trabajar cómodamente con los clasificadores de árbol de decisión o ciertos tipos de modelos de optimización o incluso solo para trabajar con ciertos formatos de datos como XML.

PERO: ¿con qué frecuencia se le pedirá que cree una implementación de producción de un algoritmo nuevo o personalizado desarrollado por usted? Para un científico de datos típico que trabaja en un modo de “investigación aplicada” , casi nunca , usted trabaja dentro del marco de las bibliotecas existentes. Pero como señaló Ricardo Vladimiro, para ciertas clases de científico de datos, como los investigadores de aprendizaje automático, posiblemente a menudo .

Para darle una idea de mi experiencia personal: no tengo conocimientos de informática más allá de lo que me he enseñado a mí mismo. Vengo de un fondo de investigación de operaciones. Hasta ahora, nunca he enfrentado una necesidad en el trabajo para obtener una educación de posgrado en estructuras de datos o algoritmos.

Creo que encontrarás diferentes respuestas de diferentes experiencias de trabajo. Hay empresas en las que la ciencia de los datos profundiza en el aprendizaje automático y otras que no lo hacen. Mi respuesta solo está relacionada con mi expectativa de las personas que hacen este tipo de trabajo.

Espero que un científico de datos conozca las estructuras de datos lo suficientemente bien como para codificar la solución. Por ejemplo, codifiqué juegos y mi experiencia al hacerlo me da una gran ventaja porque tuve que lidiar con las consecuencias en tiempo real de las implementaciones de estructuras de datos. No espero que un científico de datos sepa tanto como yo, pero no duele en absoluto si lo hacen.

Con respecto a los algoritmos, espero que un científico de datos entienda los algoritmos que está utilizando tanto en términos del rendimiento del algoritmo en la tarea como también el costo de la capacitación y la predicción de esa implementación. No espero que conozcan la notación, por ejemplo.

Un ingeniero de aprendizaje automático / experto / investigador es diferente en mi perspectiva. Espero que tengan un conocimiento profundo tanto de las estructuras de datos como de los algoritmos. Esos son sus tuercas y tornillos.

Para mí la gran diferencia es el producto de los dos. La ciencia de datos produce productos de datos, el aprendizaje automático produce algoritmos. Esto separa fundamentalmente el conocimiento necesario sobre la ciencia de datos en su conjunto del aprendizaje automático específicamente.

Puede haber respuestas contradictorias a esto, pero yo diría que sí. Permítame explicarle la experiencia de mis amigos y de mí a través de las entrevistas de trabajo de Data Science en los últimos 1-2 años. Las compañías varían desde nuevas empresas geniales hasta gigantes de software.

> Hubo al menos una ronda en todas las entrevistas, que fue una ronda de codificación intensiva (sí, todos mis amigos se enfrentaron a esto)
> Todos los que fueron geniales en ML pero fueron rechazados fueron rechazados debido a sus habilidades de programación.
> Todos los que han estado trabajando durante más de 1 año aceptan que la codificación extensa es parte del trabajo.
> Muchas empresas utilizan herramientas disponibles para capacitar a los modelos, etc. Por lo tanto, la creación de software empresarial requiere más de sus habilidades algorítmicas.

Ricardo Vladimiro siempre viene al grano y retira mis Upvotes. Pero sí, se espera que podamos codificar la solución, integrarla con la pila de software, ajustar la herramienta y optimizar donde pueda.

Hola

¡Déjame explicarte esto!

El aprendizaje automático consta de 3 partes: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por refuerzo.

Los 3 algoritmos de aprendizaje se centran en enseñar una máquina para aprender, mejorar y mejorar a partir de sus errores. ¿Requiere necesariamente conocer estructuras de datos y algoritmos?

¡Realmente no! Nadie espera que sepas la lista vinculada, la búsqueda de árbol o la recursión para crear modelos predictivos. Sin embargo, debe tener la comprensión de la matriz y los vectores.

El modelado predictivo en R y Python, está impulsado principalmente por paquetes y bibliotecas. Estos paquetes y bibliotecas están codificados intrínsecamente de tal manera que, un usuario no necesita hacer ninguna codificación seria, excepto llamar a estas bibliotecas y realizar cálculos con ellos.

Pero, hay algo más que debes saber.

Puede ser que, en las etapas iniciales, no requiera estructuras de datos ni algoritmos, pero en el futuro, si aspira a trabajar en compañías como Google, Apple, IBM, Tesla, etc., estas compañías aprecian a los candidatos con conocimiento de la estructura de datos.

No solo estas compañías, sino que cuando alguien sube en la escalera en el aprendizaje automático, conceptos como algoritmos codiciosos, la estructura de árbol comienzan a lanzar desafíos prematuros. Y, aquí es donde la mayoría de la gente abandona el aprendizaje automático.

Por lo tanto,

Si eres un principiante, te sugeriré que comiences con el Aprendizaje Automático sin hacer estructuras de datos y algoritmos ahora. Una vez que tenga una idea básica del aprendizaje automático, puede aprender sobre las estructuras de datos en poco tiempo. Necesitas ser selectivo, no todos los temas son útiles.

Si usted es un profesional experimentado, no tiene por qué no conocer las estructuras de datos. Un amigo mío fue seleccionado por Apple, California. La única razón por la que se seleccionó es su fuerte dominio de las estructuras de datos. Él es un programador senior ahora.

Y, si desea hacer el aprendizaje automático para convertirse en un científico de datos, más que estructuras de datos, le sugiero que se centre en sus habilidades de pensamiento. Porque, descansa todo en este planeta se puede aprender. Pero, las habilidades de pensamiento son inherentes y su aprendizaje lleva más tiempo.

¡Todo lo mejor!

Un científico de datos / ingeniero de aprendizaje automático trabaja con grandes cantidades de datos. Es importante que comprendan las estructuras de datos y cómo manipularlas para obtener los mejores resultados. El conocimiento profundo permite que un científico de datos / ingeniero de aprendizaje automático desarrolle un enfoque “intuitivo” para trabajar con datos y aplicar los algoritmos correctos.

La razón por la cual una licenciatura en ciencias de la computación se considera “suficiente” es porque el conocimiento restante proviene de la experiencia adquirida mientras trabajaba en la industria.

Si desea diferenciarse de los otros candidatos y ser contratado fácilmente, es mejor aumentar su comprensión de las estructuras de datos y los algoritmos haciendo proyectos más pequeños y únicos por su cuenta.

En primer lugar, para aclarar una cosa: no es necesario ser un maestro de la programación competitiva para ser bueno en estructuras de datos y algoritmos, especialmente si su objetivo final es trabajar como científico de datos.

Trabajar con un Ingeniero de ML es algo completamente diferente porque estará creando sistemas a gran escala y conocerá varios dominios de CS además de ML y Estructura de datos / Algoritmos.

El estudio de DS / Algo le proporciona una comprensión que lo ayudará cuando desee implementar un algoritmo desde cero. Enseñará por qué la mayoría de los algoritmos ML son NP-completos.

Por lo tanto, te sugiero que al menos obtengas un buen conocimiento de DS / Algo si quieres crecer en ML. La solución de todos los problemas de CLRS debería ser suficiente. Si solo desea utilizar los algoritmos que otros usaron como caja negra, no vería la necesidad de aprender algoritmos.

Sí, entender ideas como la complejidad del tiempo y el espacio puede ayudarlo a evaluar cómo se desempeñará su algoritmo ML en una práctica. Tener un buen manejo de las estructuras de datos también lo ayudará a implementar sus algoritmos de manera eficiente.