A CONTINUACIÓN SON LAS 5 COSAS BÁSICAS PARA APRENDER EL APRENDIZAJE DE MAQUINAS !!
¡ESPERO QUE SEA ÚTIL!
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 de NP completo, 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 la 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 para la aplicación de 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 su aplicación 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 diferentes piezas, 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 (incluidos 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.