¿Qué plan de estudios debo seguir para convertirme en ingeniero de software, especialmente en el aprendizaje automático, después de aprender una cantidad suficiente de Python?

En lo que a mí respecta, para entrar en el aprendizaje profundo del aprendizaje automático, necesita estas 5 habilidades para los idiomas y las bibliotecas para el aprendizaje automático.

Resumen de habilidades

1. Fundamentos y programación de la informática.

Los fundamentos informáticos importantes para los ingenieros de Machine Learning incluyen estructuras de datos (pilas, colas, matrices multidimensionales, árboles, gráficos, etc.), algoritmos (búsqueda, clasificación, optimización, programación dinámica, etc.), computabilidad y complejidad (P vs NP, problemas completos de NP, notación big-O, algoritmos aproximados, etc.) y arquitectura de la computadora (memoria, caché, ancho de banda, puntos muertos, procesamiento distribuido, etc.).

Debe poder aplicarlos, implementarlos, adaptarlos o abordarlos (según corresponda) al programar. Los problemas de práctica, las competencias de codificación y los hackatones son una excelente manera de perfeccionar tus habilidades.

2. Probabilidad y estadística

Una caracterización formal de la probabilidad (probabilidad condicional, regla de Bayes, probabilidad, independencia, etc.) y las técnicas derivadas de ella (redes de Bayes, procesos de decisión de Markov, modelos de Markov ocultos, etc.) están en el corazón de muchos algoritmos de Machine Learning; Estos son un medio para hacer frente a la incertidumbre en el mundo real. Estrechamente relacionado con esto está el campo de la estadística, que proporciona varias medidas (media, mediana, varianza, etc.), distribuciones (uniforme, normal, binomial, Poisson, etc.) y métodos de análisis (ANOVA, prueba de hipótesis, etc.) que son necesarios para construir y validar modelos a partir de datos observados. Muchos algoritmos de Machine Learning son esencialmente extensiones de procedimientos de modelado estadístico.

3. Modelado y evaluación de datos

El modelado de datos es el proceso de estimar la estructura subyacente de un conjunto de datos dado, con el objetivo de encontrar patrones útiles (correlaciones, grupos, vectores propios, etc.) y / o predecir propiedades de instancias nunca antes vistas (clasificación, regresión, detección de anomalías, etc. .). Una parte clave de este proceso de estimación es evaluar continuamente qué tan bueno es un modelo dado. Dependiendo de la tarea en cuestión, deberá elegir una medida de precisión / error adecuada (por ejemplo, pérdida de registro para clasificación, suma de errores al cuadrado para regresión, etc.) y una estrategia de evaluación (división de prueba de entrenamiento, secuencial vs. validación cruzada aleatoria, etc.). Los algoritmos de aprendizaje iterativo a menudo utilizan directamente los errores resultantes para modificar el modelo (por ejemplo, la propagación hacia atrás para redes neuronales), por lo que comprender estas medidas es muy importante incluso solo aplicando algoritmos estándar.

4. Aplicación de algoritmos y bibliotecas de aprendizaje automático

Las implementaciones estándar de los algoritmos de Machine Learning están ampliamente disponibles a través de bibliotecas / paquetes / API (por ejemplo, scikit-learn, Theano, Spark MLlib, H2O, TensorFlow, etc.), pero aplicarlos de manera efectiva implica elegir un modelo adecuado (árbol de decisión, vecino más cercano, neuronal net, máquina de vectores de soporte, conjunto de modelos múltiples, etc.), un procedimiento de aprendizaje para ajustar los datos (regresión lineal, descenso de gradiente, algoritmos genéticos, embolsado, refuerzo y otros métodos específicos del modelo), así como comprender cómo los hiperparámetros afectar el aprendizaje También debe tener en cuenta las ventajas y desventajas relativas de los diferentes enfoques, y las numerosas trampas que pueden hacer que se tropiece (sesgo y varianza, sobreajuste y falta de ajuste, datos faltantes, pérdida de datos, etc.). Los desafíos de la ciencia de datos y el aprendizaje automático, como los de Kaggle, son una excelente manera de exponerse a diferentes tipos de problemas y sus matices.

5. Ingeniería de software y diseño de sistemas

Al final del día, la salida o entrega típica de un ingeniero de Machine Learning es software. Y a menudo es un componente pequeño que encaja en un ecosistema más grande de productos y servicios. Debe comprender cómo funcionan estas piezas diferentes, comunicarse con ellas (mediante llamadas a la biblioteca, API REST, consultas de bases de datos, etc.) y crear interfaces apropiadas para su componente de las que dependerán otros. Puede ser necesario un diseño cuidadoso del sistema para evitar cuellos de botella y permitir que sus algoritmos se escalen bien con el aumento de los volúmenes de datos. Las mejores prácticas de ingeniería de software (incluido el análisis de requisitos, el diseño del sistema, la modularidad, el control de versiones, las pruebas, la documentación, etc.) son invaluables para la productividad, la colaboración, la calidad y el mantenimiento.

  • Roles de trabajo de aprendizaje automático

Los trabajos relacionados con el aprendizaje automático están creciendo rápidamente a medida que las empresas intentan aprovechar al máximo las tecnologías emergentes. La tabla a continuación muestra la importancia relativa de las habilidades básicas para estos tipos generales de roles, con un rol típico de Analista de datos para la comparación.

ML Graph

Importancia relativa de las habilidades básicas para diferentes roles de trabajo de Machine Learning (haga clic para ampliar)

  • El futuro del aprendizaje automático

Lo que quizás sea más convincente sobre Machine Learning es su aplicabilidad aparentemente ilimitada. Ya hay muchos campos afectados por el aprendizaje automático, incluidos la educación, las finanzas, la informática y mucho más. También hay prácticamente NO campos a los que no se aplica Machine Learning. En algunos casos, las técnicas de Machine Learning son de hecho desesperadamente necesarias. La asistencia sanitaria es un ejemplo obvio. Las técnicas de aprendizaje automático ya se están aplicando en ámbitos críticos dentro del ámbito de la atención médica, lo que afecta todo, desde los esfuerzos de reducción de la variación de la atención hasta el análisis de exploración médica. David Sontag, profesor asistente en el Instituto Courant de Ciencias Matemáticas de la Universidad de Nueva York y el Centro de Ciencia de Datos de la Universidad de Nueva York, recientemente dio una charla sobre Aprendizaje automático y el sistema de atención médica, en la que discutió “cómo el aprendizaje automático tiene el potencial de cambiar la atención médica en todos la industria, desde habilitar el registro electrónico de salud de próxima generación hasta la estratificación del riesgo a nivel de población a partir de las reclamaciones de seguro de salud “.

El mundo está cambiando indudablemente de manera rápida y dramática, y la demanda de ingenieros de Machine Learning seguirá aumentando exponencialmente. Los desafíos del mundo son complejos y requerirán sistemas complejos para resolverlos. Los ingenieros de Machine Learning están construyendo estos sistemas. Si este es SU futuro, entonces no hay tiempo como el presente para comenzar a dominar las habilidades y desarrollar la mentalidad que necesitará para tener éxito.

Fuente -google

¡¡Espero que esto te ayude!!

En primer lugar, debe cubrir el curso de Andrew Ng en COURSERA. Es muy detallado en algoritmos de ML

Si quieres ir prácticamente allí, entonces udacity tiene el mejor contenido.

Además, necesitaría desarrollar una sólida comprensión en los módulos PANDAS, NUMPY, SCIPY, SCIKIT, MATPLOTLIB de Python

Disfruta aprendiendo.

PD: yo también soy aprendiz

Hiciste python en suficiente. Detente por un momento antes de saltar a otra nueva tecnología. Realice la mayor cantidad de certificaciones posible, reconocidas internacionalmente principalmente por Europa y Australia. Haga la certificación de Google, si se está quedando sin dinero para eso, solicite a su organización que lo patrocine. Ahora, cuando tengas 10 grandes certificados, bienvenido al mundo de la competencia. Muestra tu currículum a todas y cada una de las grandes empresas de TI. Ese es el currículum real que debes seguir. Suficientes estudios que hiciste. Ahora obtenga experiencia en tiempo real y conviértase en el ingeniero informático. Cuando interactúes con personas de primera clase de esas grandes empresas, tendrás la oportunidad de hacer la pregunta más básica que me has hecho y recibirás el mejor consejo de ellos.

Supongo que habías aprendido scipy, pandas, matplotlib, numpy.

Debe tener algún conocimiento sobre el tensorflow.

Y vea videos de aprendizaje automático de siraj ravel en YouTube (para que pueda ser fácilmente comprensible para todos).

Hacer algunos proyectos en ml.

Google algunas cosas, hacer algún curso de certificación.

Ahí tienes.

More Interesting

¿Por qué Windows requiere la combinación de teclas Ctrl + Alt + Supr para iniciar sesión?

¿Es razonablemente posible hacer una maestría en biología si su licenciatura estaba en ingeniería de software?

Quiero crear o hacer un prototipo para un proyecto de software que sea muy similar al proyecto de presa para el seguimiento de computadoras portátiles. Cuales son los pasos?

¿Cuáles son las ventajas de programar en Haskell? ¿Dónde se usa comúnmente hoy?

¿Cómo es trabajar en OPOWER?

¿Cómo funciona Squwaka (o cualquier otro software que proporcione actualizaciones de fútbol en tiempo real)?

¿Se incorporan las mejores prácticas modernas de desarrollo (TDD, patrones de diseño, separación de preocupaciones, etc.) en los cursos universitarios de desarrollo de software?

Cómo ser un buen gerente de producto para un producto de software

¿Hay alguna forma de optimizar el doble bucle: for (int I = 0; I <n-1; I ++) {for (int j = I + 1, j <n, j ++) {doSomething (i, j);} }?

Para los ingenieros de software, ¿es productivo su entorno de desarrollador en el trabajo?

¿No debería usar una biblioteca de códigos por simplicidad?

¿Por qué ArrayList implica Lista mientras se extiende AbstractList?

¿Qué tecnologías o aplicaciones debo saber si quiero cambiar mi trabajo al dominio de programación de red (lea la descripción)?

¿Cómo afecta la cultura corporativa y organizacional al proceso de desarrollo de software?

¿Cuál es la diferencia entre los programas del sistema y las llamadas al sistema y la API?