¿Qué tan fácil es cambiar una carrera de Ingeniería de Software a una carrera de Aprendizaje Automático? ¿Cuál debería ser mi primer conjunto de pasos de bebé?

Hay muchas similitudes entre los dos y los ingenieros de software se están moviendo cada vez más hacia la ingeniería de datos y la ciencia de datos.

Para empezar, debe aprender las principales herramientas utilizadas para el aprendizaje automático: Python (scikit-learn), R, Scala y spark.

Comprender las matemáticas detrás de los algoritmos de aprendizaje automático probablemente será el mayor obstáculo. Es posible que desee aprender algunas matemáticas básicas y estadísticas: álgebra lineal, cálculo, probabilidad, estadísticas bayesianas, etc. Hay videos gratuitos disponibles en la academia Khan.

Yo personalmente recomendaría la introducción al aprendizaje estadístico por Timoshin, que está disponible gratuitamente en línea: Introducción al aprendizaje estadístico. Puede usar esto junto con el aprendizaje de R ya que los códigos se implementan en R.

Existen varios MOOC de aprendizaje automático que también lo ayudarán en su viaje:

  • curso de aprendizaje automático de udacity
  • Ventaja analítica del MIT
  • Kaggle: muy bueno para implementar diferentes algoritmos en conjuntos de datos disponibles libremente. Esto lo ayudará a desarrollar una cartera que luego podrá mostrar a posibles empleadores.

Me gusta diferenciar entre Aprendizaje automático aplicado y Aprendizaje automático teórico. Tratos teóricos con el desarrollo de nuevos algoritmos de ML; Ofertas aplicadas con aplicaciones del mundo real.

En el caso de Teórico, ese es un cambio difícil, principalmente porque hay pocos lugares que respalden su investigación. También hay muchas matemáticas detalladas que debes dominar para realmente hacer Aprendizaje teórico de máquinas.

Para aplicado es relativamente fácil. La mayoría de los algoritmos de ML están disponibles en R o Python. Hay muchos cursos en línea para guiarlo por los conceptos básicos. Una vez que haya completado, aplique los métodos a algunos problemas. Intente usar ML en cosas como los datos de Lending Club para predecir posibles incumplimientos de préstamos.

Me gusta recomendar eso porque resalta una de las grandes diferencias entre Ingeniería de Software y Machine Learning. Los objetivos en ingeniería de software están mejor definidos; los requisitos son conocidos y el software que produce es comprobable.

El aprendizaje automático es un paradigma diferente. Es muy basado en datos. Entonces, incluso si los algoritmos están codificados correctamente, diferentes conjuntos de datos requieren mucha afinación. Con el aprendizaje automático comienzas a lidiar con el concepto de Verdadero Positivo, Falso Positivo, Verdadero Negativo y Falso Negativo. Debe aceptar la idea de que el algoritmo tendrá errores. Mucha gente lucha con esto.

Otra diferencia es que sus modelos envejecerán y serán menos efectivos a medida que pase el tiempo. Esto es especialmente cierto en aplicaciones donde hay un adversario: un estafador, un ciberdelincuente, un lavador de dinero. La mayoría de los programas de computadora funcionarán durante años una vez que hayan sido suficientemente probados.

Uno de los mayores desafíos será su aceptación del paradigma basado en datos. Los algoritmos y la tecnología los encontrará relativamente simples.

More Interesting

¿Para qué se utiliza Amazon AWS (Amazon Web Services)? ¿Cómo lo usan usted o su empresa?

¿Por qué hay tanta necesidad de un mejor hardware de computadora? ¿No puede mejorar la velocidad y la memoria de la computadora simplemente escribiendo un mejor software?

¿Qué se discute durante una reunión de Scrum?

Trabajo con muchos lenguajes de programación todos los días. ¿Leer un montón de código y ajustarlo para mis propósitos sería un método de aprendizaje efectivo?

¿Por qué veo los desarrollos de software tan fácilmente, mientras que la mayoría de los demás no? Por ejemplo, ¿veo el lenguaje de programación como una herramienta que puedo cambiar en cualquier momento, o construyendo software buscando referencias y construyéndolo como un rompecabezas 'enchufar cosas'?

¿Existe una herramienta UML mejor que la estrella UML?

¿Cómo sabes en qué idioma / tecnología usar para construir un sitio web?

¿Cuáles son algunos de los trabajos de desarrollo de Python en empresas como Google, Amazon y Microsoft? ¿Cómo se debe preparar para ellos?

¿Cuál es la intención principal detrás de la siembra de defectos?

¿Por qué se requiere una arquitectura asincrónica para lograr la escalabilidad? ¿Puede por favor proporcionar una aplicación / ejemplo de la vida real?

Si planea crear eventualmente una nueva empresa, ¿cuáles serían las ventajas y desventajas de obtener un título de Doctor en Filosofía (PhD) en ingeniería eléctrica o de software para alguien con un título universitario en ingeniería química?

¿Por qué el código abierto es 'bueno'?

¿A los INFP en ingeniería de software o una carrera altamente técnica les gusta lo que están haciendo?

¿Cuál es el mejor software para presentaciones?

¿Por qué algunos programas comerciales se desarrollan solo para el sistema operativo Linux?