¿Qué es mejor para mí como estudiante? ¿Debería codificar los modelos de aprendizaje automático (donde pueda) o debería usar la biblioteca tanto como pueda?

La respuesta a su pregunta en realidad depende del tipo de problema que está tratando de resolver y también del contexto.

  1. Si está tratando de implementar / implementar un algoritmo de ML existente con muy poca o ninguna modificación, siempre hay buenas bibliotecas para ayudarlo. Elija la biblioteca que pertenece a su lenguaje de programación favorito y comience a desarrollar. Por ejemplo, Java-ML (en Java), libsvm (muchos idiomas disponibles y solo para SVM) son bibliotecas comerciales que ya han encontrado una gran cantidad de aplicaciones en la industria.
  2. Si está tratando de resolver un problema de investigación y desea modificar el algoritmo y necesita una flexibilidad absoluta, puede comenzar a escribir su propio código. Pero espera … no necesitas escribir todo desde cero. También hay bibliotecas para ayudar a los investigadores. Hay muchas bibliotecas que lo ayudarán al proporcionarle un montón de herramientas útiles . Puedes construir tu algoritmo además de eso. Por ejemplo, Theano (Python), Torch (Lua), etc. proporciona un marco de optimización de expresiones matemáticas bastante útil y cosas como el motor de diferenciación automática que se puede usar como un bloque de construcción para problemas complejos de ML.

En este contexto, vale la pena mencionar MATLAB. Su conjunto compacto de herramientas y funciones integradas suelen ser lo suficientemente buenas como para implementar algoritmos ML con gran flexibilidad. Aparte de MATLAB, Python y su marco numérico (numpy) es bastante popular en la comunidad ML.

Si está aprendiendo la implementación de cada concepto, lo ayudará a comprender la intuición detrás del algoritmo y cuál puede extender a una contribución de código abierto en el futuro.

Después de lo cual, para un desarrollo rápido, puede usar las bibliotecas que desee.