Qué es overfitting y underfitting y cómo solucionarlo

Las principales causas al obtener malos resultados en Machine Learning son el overfitting o el underfitting de los datos. Cuando entrenamos nuestro modelo intentamos “hacer encajar” -fit en inglés- los datos de entrada entre ellos y con la salida. Tal vez se pueda traducir overfitting como “sobreajuste” y underfitting  como “subajuste” y hacen referencia al fallo de nuestro modelo al generalizar -encajar- el conocimiento que pretendemos que adquieran. Lo explicaré a continuación con un ejemplo.

Generalización del Conocimiento

Como si se tratase de un ser humano, las máquinas de aprendizaje deberán ser capaces de generalizar conceptos. Supongamos que vemos un perro Labrador por primera vez en la vida y nos dicen “eso es un perro”. Luego nos enseñan un Caniche y nos preguntan: ¿eso es un perro? Diremos “No”, pues no se parece en nada a lo que aprendimos anteriormente. Ahora imaginemos que nuestro tutor nos muestra un libro con fotos de 10 razas de perros distintas. Cuando veamos una raza de perro que desconocíamos seguramente seremos capaces de reconocer al cuadrúpedo canino al tiempo de poder discernir en que un gato no es un perro.

Leer Artículo Completo

Regresión Logística con Python paso a paso

Breve Introducción a la Regresión Logística

Utilizaremos algoritmos de Machine Learning en Python para resolver un problema de Regresión Logística. A partir de un conjunto de datos de entrada (características), nuestra salida será discreta (y no continua) por eso utilizamos Regresión Logística (y no Regresión Lineal). La Regresión Logística es un Algoritmo Supervisado y se utiliza para clasificación.

Vamos a clasificar problemas con dos posibles estados “SI/NO”: binario o un número finito de “etiquetas” o “clases”: múltiple. Algunos Ejemplos de Regresión Logística son:

Leer Artículo Completo

Aprendizaje Profundo: una Guía rápida

Explicando Deep Learning y Redes Neuronales -sin código-

Intentaré explicar brevemente en qué consiste el Deep Learning ó Aprendizaje Profundo utilizado en Machine Learning describiendo sus componentes básicos.

Conocimientos Previos

Daré por sentado que el lector ya conoce la definición de Machine Learning y sus principales aplicaciones en el mundo real y el panorama de algoritmos utilizados con mayor frecuencia. Nos centraremos en Aprendizaje Profundo aplicando Redes Neuronales Artificiales.

Entonces, ¿cómo funciona el Deep Learning? Mejor un Ejemplo

El Aprendizaje Profundo es un método del Machine Learning que nos permite entrenar una Inteligencia Artificial para obtener una predicción dado un conjunto de entradas. Se puede utilizar Aprendizaje Supervisado o No Supervisado.

Explicaré como funciona el Deep Learning mediante un ejemplo hipotético de un servicio de predicción de quién ganará el próximo mundial de futbol. Utilizaremos aprendizaje supervisado mediante algoritmos de Redes Neuronales Artificiales.

Para lograr las predicciones de los partidos de fútbol usaremos como ejemplo las siguientes entradas:

Leer Artículo Completo

Principales Algoritmos usados en Machine Learning

En esta etapa de estudio sobre el Aprendizaje Automático me he topado con diversos algoritmos que voy reutilizando para la resolución de problemas y que se repiten con mayor frecuencia. Realizaré un listado con una breve descripción de los principales algoritmos utilizados en Machine Learning. Además cada uno contará con enlaces a ejemplos de desarrollo en código Python. Con el tiempo, agregaré mis propios ejemplos en español. También te recomiendo leer mi artículo sobre Deep Learning.

Empecemos!

Algoritmos de Regresión

Algoritmos de Regresión
Algoritmos de Regresión, Logístico o Lineal. Nos ayudan a clasificar o predecir valores. Se intentará compensar la mejor respuesta a partir del menor error.

Los algoritmos de Regresión modelan la relación entre distintas variables (features) utilizando una medida de error que se intentará minimizar en un proceso iterativo para poder realizar predicciones “lo más acertadas posible”. Se utilizan mucho en el análisis estadístico. El ejemplo clásico es la predicción de precios de Inmuebles a partir de sus características: cantidad de ambientes del piso, barrio, distancia al centro, metros cuadrados del piso, etc.
Los Algoritmos más usados de Regresión son:

Algoritmos basados en Instancia

Leer Artículo Completo

7 pasos del Machine Learning para construir tu máquina

Describiré los 7 pasos genéricos que debes seguir para construir tu propia Inteligencia Artificial con Machine Learning.

Paso 1: Colectar Datos

Dada la problemática que deseas resolver, deberás investigar y obtener datos que utilizaras para alimentar a tu máquina. Importa mucho la calidad y cantidad de información que consigas ya que impactará directamente en lo bien o mal que luego funcione nuestro modelo. Puede que tengas la información en una base de datos ya existente o que la debas crear desde cero. Si es un pequeño proyecto puedes crear una planilla de cálculos que luego se exportará fácilmente como archivo csv.

Paso 2: Preparar los datos

Es importante mezclar “las cartas” que obtengas ya que el orden en que se procesen los datos dentro de tu máquina no debe de ser determinante.
También es un buen momento para hacer visualizaciones de nuestros datos y revisar si hay correlaciones entre las distintas características (“features”, suelen ser las columnas de nuestra base datos o archivo) que obtuvimos. Deberemos tener balanceada la cantidad de datos que tenemos para cada resultado, para que sea representativo, ya que si no, el aprendizaje podrá ser tendencioso hacia un tipo de respuesta y cuando nuestro modelo intente generalizar el conocimiento fallará.
También deberemos separar los datos en en dos grupos: uno para entrenamiento y otro para evaluación del modelo. Podemos fraccionar aproximadamente en una proporción de 80/20 pero puede variar según el caso y el volumen de datos que tengamos.
En esta etapa también podemos preprocesar nuestros datos normalizando, eliminar duplicados y hacer corrección de errores.

Paso 3: Elegir el modelo

Leer Artículo Completo

Aplicaciones del Machine Learning

Para comentar las  diversas aplicaciones del ML primero vamos a diferenciar entre el Aprendizaje Supervisado y No Supervisado.

Aprendizaje Supervisado

En el Aprendizaje Supervisado los datos para el entrenamiento incluyen la solución deseada, llamada “etiquetas” (labels). Un claro ejemplo es al clasificar correo entrante entre Spam o no. Entre las diversas características que queremos entrenar deberemos incluir si es correo basura o no con un 1 o un 0. Otro ejemplo son al predecir valores numéricos por ejemplo precio de vivienda a partir de sus características (metros cuadrados, nº de habitaciones, incluye calefacción, distancia del centro, etc.) y deberemos incluir el precio que averiguamos en nuestro set de datos.

Los algoritmos más utilizados en Aprendizaje Supervisado son:

  • k-Nearest Neighbors
  • Linear Regression
  • Logistic Regression – Ejemplo en Python
  • Support Vector Machines
  • Decision Tress and Random Forest
  • Neural Networks
  • Deep Learning

Aprendizaje No Supervisado

En el aprendizaje No Supervisado los datos de entrenamiento no incluyen Etiquetas y el algoritmo intentará clasificar o descifrar la información por sí solo. Un ejemplo en el que se usa es para agrupar la información recolectada sobre usuarios en una Web o en una app y que nuestra Inteligencia detecte diversas características que tienen en común.

Los algoritmos más importantes de Aprendizaje No supervisado son:

  • Clustering K-Means
  • Principal Component Analysis
  • Anomaly Detection

Aplicaciones de ML  y Ejemplos

Las aplicaciones más frecuentes del Machine Learning son:

Leer Artículo Completo

Curso de Machine Learning en Coursera: mi experiencia

Review curso online Aprendizaje de Máquina Coursera

Quería comentar mi experiencia durante el curso On Line de Coursera sobre Machine Learning de la Universidad de Standford impartido por Andrew Ng.

Mi opinión

En general debo decir que el curso me encantó, lo disfruté y me pareció muy completo para iniciarse en Machine Learning. Tiene una duración de 11 semanas y en cada una tendremos una serie de Videos, Lecturas, exámenes multiple-choice y ejercicios prácticos. Además cuenta con un foro y un grupo de ayudantes dispuestos a resolver nuestras dudas. Puedes seguir las clases desde tu computadora o móvil ya que cuenta con apps de iOs y Android que permiten streaming o descarga de los videos para ver off-line.

Atención: el curso está en inglés aunque cuenta con subtítulos de los videos al español.

Mi Cursada

Debo reconocer que me costó seguir la cursada semana a semana porque me tocaron navidades y vacaciones en Argentina entre medio. En vez de completarlo en 11 semanas, lo terminé en 16. Esto lo permite la plataforma migrando tu perfil a nuevas aperturas de curso y manteniendo tus logros. La parte matemática de vectores y operaciones con matrices la tenía un poco oxidada, pero una vez que agarras lápiz y papel, te pones en ritmo. Los foros son muy útiles, al ser uno de los primeros cursos que se crearon en Coursera, cuenta con un largo historial de más de 2 millones de estudiantes que pasaron por él y que aportaron muy buenas colaboraciones y comentarios. Los ejercicios en programación también me parecieron interesantes, algunos más complicados pero sin disparates. Y está bien implementado la forma de enviar tus trabajos y el seguimiento de tu estado en la plataforma. Recibes correos y notificaciones con recordatorios y hasta para levantar tu ánimo y no abandonar.

Para quién es

En mi parecer, está dirigido a programadores interesados en comenzar a comprender el Machine Learning. Es importante destacar que se debe tener conocimientos de Matemáticas ya que durante el curso se utilizan Derivadas e Integrales y sobre todo operaciones sobre Matrices. Si no eres bueno con las mates, o te dan flaca y/o repulsión… no te lo recomiendo.

Los contenidos

Leer Artículo Completo

¿Qué es Machine Learning? Una definición

aprendizaje automático que es

Un artículo que intentará ayudar a comprender qué es el Machine Learning o Aprendizaje Automático

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”:

Leer Artículo Completo

Bienvenidos a Aprende Machine Learning

Hola a todos, quiero comenzar este blog sobre Machine Learning y sus aplicaciones para comentar mis experiencias en el campo del Aprendizaje Automático.

Soy Ingeniero en Sistemas de Información argentino, vivo en España y tengo más de 15 años trabajando como programador informático en grandes y pequeñas empresas. A lo largo de estos años he visto como la Inteligencia Artificial fue evolucionando hasta comenzar un período de madurez y popularidad actual. Soy padre de 4 niños pequeños que demandan mi atención pero que también me generan más y más ganas de “dejarles en herencia” algunas lecciones de lo que creo que será una de las herramientas más importantes del futuro.

Siempre tuve curiosidad por los algoritmos de aprendizaje y de hecho hice mi Proyecto Final de carrera utilizando el Algoritmo Genético y Redes Neuronales. Más adelante iré contando un poquito más sobre estos temas.

Hace poco finalicé el curso de Andrew Ng de Coursera y me decidí a realizar una serie de proyectos y documentos que compartiré con la red e intentaré ayudar un poco a la comunidad. Mi contribución será en artículos, experimentos en código y en contacto con ustedes.

Me gusta mucho la tecnología, emprender, el arte, los legos sumados al IoT + Arduino, la música y el fútbol.

Intentaré comentar sobre actualidad en IA, ML, Deep Learning, novedades de los grandes en este tema, Google, Microsoft y Apple -entre otros-.

Por el momento eso es todo, esto es sólo una pequeña introducción de lo que se vendrá, y espero que sea bueno 🙂