¿Un científico de datos necesita conocer algoritmos y estructuras de datos, así como un ingeniero de software?

Estoy de acuerdo con varias de las otras respuestas en esta página en que es útil para los científicos de datos tener una sólida formación en estructuras de datos y algoritmos, al menos al nivel de uno de los cursos de pregrado con ese nombre. La competencia básica en este material es con frecuencia importante para los roles de ciencia de datos, y a veces es valioso poder encontrar soluciones algorítmicas más creativas cuando se procesan grandes volúmenes de datos.

Al mismo tiempo, me siento bastante cómodo admitiendo que la mayoría de los ingenieros de software con los que he trabajado son mucho mejores en estructuras de datos y algoritmos que yo. Si eligió uno de ellos al azar y nos pidió a cada uno de nosotros que implementemos un árbol rojo-negro, tal vez podría hacerlo, pero no creo que haya mucho misterio sobre quién lo hará más rápido y mejor. Creo que está bien: la ingeniería de software y la ciencia de datos son roles diferentes por una razón y corresponden a conjuntos de habilidades diferentes (pero superpuestos).

Lo que creo que está menos bien es si un científico de datos es informado por un ingeniero de software (o cualquier otra persona) de que hay una mejor manera de escribir un algoritmo o abstracción, y el científico de datos no tiene curiosidad por saber más. Deberíamos aspirar a ser mejores ingenieros de software con el tiempo, y a menudo podemos aprender mucho de nuestros colegas a este respecto.

Por supuesto, lo mismo se aplica a la inversa para los ingenieros de software y las metodologías para una mejor toma de decisiones con datos.

Analizar datos es una tarea enorme. Requiere mucha lógica y si tiene las estructuras de datos correctas, entonces agregaría la eficiencia a su conjunto de datos. Definitivamente puede usar la computación distribuida para facilitarle la vida, pero es realmente importante tener el algoritmo correcto en su lugar. De lo contrario, llevará mucho más tiempo de lo que piensas. Y como dije, es mucha lógica y pensar en sus datos. Despejó el primer paso cuando comprende los datos, pero también puede finalizar con éxito su tarea en términos de precisión mediante el uso de una estructura de código y lógica adecuadas.

Sugeriría leer sobre matrices, pares de valores clave, tabla hash, diccionario, colas, pila, ya que los usaría mucho. Estudie los subprocesos también para que pueda analizar varios archivos al mismo tiempo ejecutándose en subprocesos. Por lo tanto, todo se reduce a 1 cosa, si conoce las estructuras de datos y dónde usarlas, también puede implementarlas en el lugar correcto mientras analiza los datos.
Un científico de datos con menos conocimiento sobre ingeniería de software está limitado de lo contrario.

¡SÍ!

En cada campo de trabajo, puede encontrar personas con un gran conocimiento, personas con menos conocimiento, personas con conocimientos viables y personas sin conocimiento.

¿Y quién crees que sobresale en su trabajo?

Personas con muy buen conocimiento en su campo.

Lo mismo ocurre con la ciencia de datos.

Un buen científico de datos es uno con un conocimiento profundo en su campo. Un buen científico de datos debe acumular tanto conocimiento como pueda.

Existe una muy buena explicación de por qué un científico de datos debería tener un conocimiento profundo sobre cada Algoritmo.

La respuesta de Roman Trusov a ¿Por qué debería uno aprender el aprendizaje automático desde cero en lugar de simplemente aprender a usar las bibliotecas disponibles?

Definitivamente ayuda. No estoy seguro si está preguntando desde una perspectiva de reclutamiento. Si bien esta respuesta no es específica de la ciencia de datos, sino del aprendizaje automático. El aprendizaje automático es de todos modos una subtarea de ciencia de datos, por lo que mi respuesta aún sería relevante. Hace un año, estaba escribiendo código para una tarea de procesamiento de lenguaje natural. En ese momento no tenía mucha experiencia escribiendo buen código. Escribí el programa en Python, que tardó unas horas en ejecutarse y, a veces, mi idea terminó congelándose. Fue extremadamente insoportable depurar mi código. Además de mis no tan buenas habilidades de codificación, estaba trabajando con un conjunto de datos realmente grande (varias páginas de Wikipedia). Un año después, con una exposición decente a algoritmos y estructuras de datos, reescribí el código para la misma tarea con el mismo hardware pero con un corpus de datos mucho más grande. Pude reducir el tiempo de ejecución a unos segundos, máximo uno o dos minutos. No necesariamente tiene que ser excelente para aplicar algoritmos y estructuras de datos que realiza una codificación competitiva para practicarlo. Solo un poco de conocimiento de alto nivel de complejidad asintomática, habilidades de implementación y un buen sentido de hacer las compensaciones óptimas de complejidad de espacio-tiempo para su tarea.

Versión corta, en general, diría que sí.

Versión larga:

Es como ajustar modelos, cualquiera puede elegir un conjunto de datos, seguir un video de Youtube y ajustar un modelo en R, Python, etc. Nadie realmente necesita saber las matemáticas detrás de él para poder obtener un resultado.

Sin embargo, eso no significa que sea el mejor o el mejor resultado. Es solo un resultado. Tal vez es el modelo incorrecto para la pregunta o los datos, tal vez no está (y a menudo no será) validado.

Es lo mismo con algoritmos y estructuras de datos. Si puede escribir un par de líneas de código, probablemente pueda obtener un resultado. Lo más probable es que no funcione como podría o se pueda mantener como debería, pero es un resultado.

Hoy en día, con las herramientas y la información disponibles, ya no se trata de hacer algo, sino de hacerlo bien. Ese tipo de conocimiento es, en mi humilde opinión, el factor diferenciador entre los dos.

Sin embargo, no veo la conexión con la parte de programación competitiva. 🙂

Si le preocupa el rendimiento de su solución, entonces debería importar. En la mayoría de las aplicaciones analíticas, el tiempo no debería ser una limitación, a menos y hasta que esté realizando algunas tareas de misión crítica como el comercio algorítmico, etc., que exige soluciones en tiempo real, para que las decisiones se puedan tomar a un ritmo más rápido.

De acuerdo con lo que más se ha dicho y agregando más contexto.

Según este sitio web, hay 9 tipos diferentes de científicos de datos: http://www.datasciencecentral.co
e incluso entre estas categorías, será la especialización de la industria específica. Creo que para todos ellos, excepto para la visualización y los datos comerciales, los científicos necesitarán conocer las estructuras de datos y los algoritmos. (Si se dedica principalmente a la visualización y a los negocios, es probable que haya muchas herramientas disponibles que optimicen los números para usted, por lo que no necesita saber qué sucede debajo del capó). que, si trabaja con datos sin procesar en sí mismos utilizando herramientas como R, Python, Matlab, Octave, scala o incluso Java, apreciará este conocimiento cuando sus datos sean GRANDES. Simplemente conociendo los diferentes algoritmos, puede procesar sus datos mucho más rápido y obtener los resultados. He conocido a analistas de datos que no tienen experiencia en informática que trabajan en sus consultas SQL y esperan que los resultados vuelvan después de días. En cuanto a la implementación de algoritmos específicos, solo necesita saber cómo funciona para modificarlo de la forma en que desea usarlo. Simplemente copiar de youtube puede no adaptarse a su caso de uso. En el cálculo de conjuntos de datos no estructurados, como la comparación de dos archivos de texto (que puede ser un caso de uso para clasificar artículos para la misma categoría de “Noticias”), las herramientas tradicionales son limitadas. Es posible que necesite usar alguna forma de MinHashing o LSH para hacer esto, que sorprendentemente utiliza muchos conceptos de Hash Map similares al lenguaje de programación Java.

Un desarrollador de software apenas tiene que lidiar con algoritmos complejos en su trabajo diario. Sin embargo, muchas empresas contratan a Desarrolladores de software por sus habilidades algorítmicas, como resultado de lo cual muchos de esos desarrolladores de software también obtienen esas habilidades algorítmicas. Pero en lo que respecta a la esencialidad, las habilidades de pensamiento algorítmico son mucho más esenciales para la posición de un Científico de Datos que para la de un Desarrollador de Software.

More Interesting

¿Están sobrevaloradas las estimaciones de la escasez de científicos de datos? La inversión en herramientas y productos de big data está en aumento, al igual que los institutos que ofrecen títulos en Big Data / Data Science. ¿La inversión y el desarrollo de infraestructura significarán una disminución en el empleo?

¿Cuáles son los conceptos erróneos comunes sobre la ciencia de datos?

¿Cuál es la diferencia entre análisis inferencial y descriptivo de datos?

Cómo comenzar una carrera como ingeniero de datos, no como científico de datos

¿Cuáles son los requisitos previos para aprender Hadoop y big data en master of science para nosotros?

¿Cómo se puede pasar del nivel principiante avanzado al nivel intermedio en ciencia de datos?

¿Podemos obtener automáticamente datos de prueba / entrenamiento para un sistema Machine Learning to Rank (MLR)?

¿Podemos hacer aprendizaje automático escalable con R? ¿Puede R trabajar con Hadoop para procesar una matriz de 100 GB?

Tengo experiencia con React and Angular, y desarrollo de JavaScript de pila completa, ¿debería incluirlos cuando busco entre ciencia de datos?

¿Cuál es la diferencia entre la minería de datos y el desguace web?

¿Qué tan difícil es ser admitido en el campo de entrenamiento de ciencia de datos de Insight?

¿Cuál es la diferencia entre analista de negocios, analista de datos, científico de datos, analista de inteligencia de negocios, analista de sistemas de negocios y gerente de producto?

Para algoritmos de bandidos con múltiples brazos, ¿tiene sentido dejar de muestrear un brazo si el límite de confianza superior p% es menor que el límite de confianza inferior p% de un brazo de diferencia?

¿Cuáles son los modelos de confianza utilizados en la seguridad de big data?

¿En qué mercados e industrias destaca más R (lenguaje de programación)? ¿Es big data / data science?