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

Read More

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. También es frecuente utilizar la técnica de web scraping para recopilar información de manera automática de diversas fuentes (y/o servicios rest/ APIs).

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. Habrá que hacer Selección de Características, pues las que elijamos impactarán directamente en los tiempos de ejecución y en los resultados, también podremos hacer reducción de dimensiones aplicando PCA si fuera necesario. Deberemos tener balanceada la cantidad de datos que tenemos para cada resultado(clase), 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

Read More

Aplicaciones del Machine Learning

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

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:

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:

Aprendizaje por Refuerzo

Nuestro sistema será un «agente autónomo» que deberá explorar «un espacio» desconocido y determinar las acciones a llevar a cabo mediante prueba y error. Aprenderá por sí mismo obteniendo premios -recompensas- y penalidades la forma óptima para recorrer un camino, resolver un puzzle o comportarse por ejemplo en el Pac Man o en el Flappy Bird. Creará la mejor estrategia posible (políticas) para obtener la mayor recompensa posible en tiempo y forma. Las políticas definirán qué acciones tomar ante cada situación a la que se enfrente.

  • Procesos de Decisión de Markov (MDP: Markov Decision Process)

Aplicaciones de ML  y Ejemplos

Las aplicaciones más frecuentes del Machine Learning son:

Read More

Review curso online Aprendizaje de Máquina Coursera

Curso de Machine Learning en Coursera: mi experiencia

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

Read More