A partir de mi experiencia en diversos cursos, artículos y lecturas voy a describir qué es el Machine Learning. Veremos algunas definiciones ya existentes. Este es un compilado que intentará dar mejor comprensión sobre esta revolucionaria materia.
Definiendo Machine Learning
El Machine Learning -traducido al Español como “Aprendizaje Automático”- es un subcampo de la Inteligencia Artificial que busca resolver el “cómo construir programas de computadora que mejoran automáticamente adquiriendo experiencia”.
Esta definición indica que el programa que se crea con ML no necesita que el programador indique explícitamente las reglas que debe seguir para lograr su tarea si no que este mejora automáticamente.
Grandes volúmenes de datos están surgiendo de diversas fuentes en los últimos años y el Aprendizaje Automático relacionado al campo estadístico consiste en extraer y reconocer patrones y tendencias para comprender qué nos dicen los datos. Para ello, se vale de algoritmos que pueden procesar Gygas y/o Terabytes y obtener información útil.
Una Definición Técnica
Durante mi cursada de Aprendizaje Automático en Coursera, encontré la siguiente “definición técnica”:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
La experiencia E hace referencia a grandes volúmenes de datos recolectados (muchas veces el Big Data) para la toma de decisiones T y la forma de medir su desempeño P para comprobar que mejoran con la adquisición de más experiencia.
Diagrama de Venn
Drew Conway creó un simpático diagrama de Venn en el que inerrelaciona diversos campos. Aquí copio su versión al Español traducida por mi:
En esta aproximación al ML, podemos ver que es una intersección entre conocimientos de Matemáticas y Estadística con Habilidades de Hackeo del programador.
Aproximación para programadores
Los programadores sabemos que diversos algoritmos de búsqueda pueden tomar mucho tiempo en resolverse y que cuanto mayor sea el campo de búsqueda crecerán potencialmente las posibilidades de combinación de una respuesta óptima, haciendo que los tiempos de respuesta tiendan al infinito o que tomen más tiempo de lo que un ser humano tolerar (por quedarse sin vida o por impaciencia). Para poder resolver este tipo de problemas surgen soluciones de tipo heurísticas que intentan dar “intuición” al camino correcto a tomar para resolver un problema. Estos pueden obtener buenos resultados en tiempos menores de procesamiento, pero muchas veces su intuición es arbitraria y pueden llegar a fallar. Los algoritmos de ML intentan utilizar menos recursos para “entrenar” grandes volúmenes de datos e ir aprendiendo por sí mismos. Podemos subdividir el ML en 2 grandes categorías: Aprendizaje Supervisado o Aprendizaje No Supervisado.
Entre los Algoritmos más utilizados en Inteligencia Artificial encontramos:
- Arboles de Decisión – Ejemplo de clasificación y predicción con árbol python
- Regresión Lineal – Ejercicio Python con una o múltiples variables
- Regresión Logística – Ver un ejercicio práctico
- k Nearest Neighbor – Ejemplo Python con Visualización
- PCA / Principal Component Analysis – Nuevo: Ejemplo y teoría
- SVM
- Gaussian Naive Bayes – Nuevo: Ejemplo código Python toma de decisiones
- K-Means – Código Python con Visualización 3D
- Redes Neuronales Artificiales – Una sencilla Red Neuronal Python Español
- Aprendizaje Profundo ó Deep Learning– Breve historia de las Redes Neuronales
- Clasificación de imágenes – Teoría CNN – Práctica CNN
Una mención a las Redes Neuronales Artificiales
Una mención distintiva merecen las RNAs ya que son algoritmos que utilizan un comportamiento similar a las neuronas humanas y su capacidad de sinopsis para la obtención de resultados, interrelacionándose diversas capas de neuronas para darle mayor poder. Aunque estos códigos existen desde hace más de 70 años, en la última década han evolucionado notoriamente –Breve Historia de las RNA– (en paralelo a la mayor capacidad tecnológica de procesamiento, memoria RAM y disco, la nube, etc) y están logrando impresionantes resultados para analizar textos y síntesis de voz, traducción de idiomas, procesamiento de lenguaje natural, visión artificial, análisis de riesgo, clasificación y predicción y la creación de motores de recomendación. Aquí comparto este artículo sobre Deep Learning que puede ampliar tu conocimiento y aquí un ejemplo de código en 15 líneas usando Python y Keras para crear la compuerta XOR.
En Conclusión
Creo que el Machine Learning es una nueva herramienta clave que posibilitará el desarrollo de un futuro mejor para el hombre brindando inteligencia a robots, coches y casas. Las Smart Cities, el IOT ya se están volviendo una realidad y también las aplicaciones de Machine Learning en Asistentes como Siri, las recomendaciones de Netflix o Sistemas de Navegación en Drones. Para los ingenieros o informáticos es una disciplina fundamental para ayudar a crear y transitar este nuevo futuro.
¿Y tu cómo entiendes al Machine Learning? ¿Cómo ves de importante esta disciplina para los próximos años? Déjame tus comentarios para poder debatir!
¡Gracias por las aclaraciones Juan!
Yo estoy desarrollando un proyecto con aprendizaje profundo. En mi proyecto, de momento encuentro la palabra más cercana a una palabra dentro del fichero adecuado.
Tengo el proyecto separado en módulos, de esa forma puedo canviar una pieza y todo sigue funcionando igual. Por ejemplo, cambiar el LM que quiero usar.
Yo he separado mi proyecto en:
– WS Deep Learning que aprende a buscar la palabra más cerana.
– WS Call To Internet que busca en internet las frases que deben añadirse en los ficheros que usa el WS Deep Learning para aprender.
– WS File Generator que añade frases a un fichero en el servidor.
– WS How Do You Learn que hace el CRUD de usuarios, robots, conceptos y relaciones.
Verás los diferentes proyectos publicados en mi web: https://davidmartinezros.com con los links necesarios.
¡Espero que encontréis interesante mi proyecto!
¡Toda colaboración será bienvenida!
¡Un abrazo amigo!
Hola David, muchas gracias por comentar!. Parece que está muy bien estructurado tu proyecto de Procesamiento de Lenguaje. Muy interesante tus proyectos, ya los había estado mirando, pero te sigo para estar al día! Espero que colaboremos juntos pronto!
Excelente blog, voy iniciando en este maravilloso mundo del Machine Learning. Saludos desde México
Muchas gracias por escribirme! Espero seguir escribiendo artículos que puedan servir a la comunidad de Machine Learning… esto recién comienza!
Excelente Blog. espero aprender, muchas gracias por compartir tus conocimientos, saludos desde Chile
Hola Riki, gracias por visitar mi blog y por tus comentarios! Espero que sigamos en contacto.
Saludos
Hola Juan, excelente el blog, y muy claras tus explicaciones, saludos
Hola Walter, muchas gracias por la visita! Seguimos en contacto!
Naccio, genio total! Lei un par de artículos, ahora manos a la obra. Voy a intentar hacerlos todos.
Abrazo desde Argentina!
Gracias Martin!! qué bueno que sigamos en contacto después de tantos años! Espero que vaya todo bien! Cualquier cosa que te pueda dar una mano me decís!
Abrazo!
Excelente blog , explicas muy bien y esto es bueno para quienes estamos iniciando en este mundo del Machine Learning , Saludos.
Hola Luis, muchas gracias por escribir y participar! Espero que sigamos en contacto
Genial , soy nuevo en este mundo y me interesa mucho la verdad , seguiré la guía que preparaste , muchas gracias!
Hola Miguel gracias por escribir. Espero que te sirva la guía. En estoy días estaba pensando en agregar más contenidos! Cuando puedas me comentas como lo vas llevando!
Saludos y seguimos en contacto
Muy bueno, dan ganas de meterse de cabeza ! muchas gracias por este blog.
Hola Noé, gracias por escribir y participar en el Blog! Saludos!
Excelente blog, excelente contenido, excelente además, la forma sencilla de explicar y transmitir. Me ha servido tanto para aprender algunos conceptos, como para reforzar otros ya adquiridos… Felicitaciones y gracias. Saludos desde Medellín, Colombia
Hola, gracias por los artículos. Yo estoy interesado más en la aplicación de ML en Física de Altas Energías.
Saludos desde Perú.
Excelente contenido, seguiré visitando su sitio. Muchas gracias!
Hola Hernán, muchas gracias por comentar! Siempre dan ánimo esas líneas para seguir creando nuevos contenidos!
Saludos
He dado con este artículo de casualidad y de verdad que me ha encantado. Voy a seguir leyendo tus post porque son relamente interesantes. Tengo una página-blog donde trato diferentes temas relacionados con la Industria 4.0 y todo lo que ello conlleva y la verdad que es una gozada leer artículos como el tuyo. Te invito a que pases por mi sitio, es algo más modesto pero la verdad que me apasiona el tema mucho y voy tratando de informar con todo lo que puedo. Hace nada traté sobre el Machine Learning y el Deep Learning, te dejo aquí el enlace: Deep Learning Espero que te guste. Un saludo y te sigo leyendo 🙂
Hola Juan. Un placer. Voy iniciando en el tema de ML y por lo que veo se requiere saber Python. Al respecto. ¿Qué libro y qué curso (en línea) recomiendas para aprender a programar en Python enfocado a ML? Saludos y gracias.
Saludos a todos desde Cataluña,
Yo también estoy empezando en esto del ML y todavía hay cosas que se me escapan. Pero lo cierto es que, por lo que he visto en este blog todo está muy bien estructurado y muy bien enlazado. Así que nos vamos hablando por aquí.
Un Saludo
Hola Rafael muchas gracias por el comentario, espero que el blog sea de ayuda para tu aprendizaje!
Saludos y seguimos en contacto!
Hola Muchas gracias por la información que brindas. 🙂 saludos desde Argentina.