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:

Reconocimiento de Imágenes

Se utilizan diversos algoritmos para poder comprender imágenes sobre todo Deep Learning), encontrar algo en particular o agrupar zonas. Sabemos que las imágenes son conjuntos de pixeles continuos y cada uno contiene información del color que tiene que “iluminar” (por ejemplo RGB). Los ejemplos comunes son los de OCR Reconocimiento de Caracteres ópticos, es decir, encontrar letras, agruparlas, encontrar espacios y poder descifrar textos y el otro ejemplo es el de detectar personas en imágenes, presencia humana en cámaras de seguridad o más recientemente se utilizan redes neuronales convolucionales para detectar rostros: reconocimiento facial, seguramente más de una vez Facebook fue capaz de localizar a tus primos y hermanos en tus álbumes de fotos.

Nuevo: Clasificación de imágenes en Python

Reconocimiento de Voz

A partir de las ondas de sonido sintetizadas por el micrófono de tu ordenador, smartphone o de tu coche, los algoritmos de Machine Learning son capaces de limpiar ruido, intuir los silencios entre palabras y comprender tu idioma para interpretar tus ordenes, ya sea “Siri, Agregar un Recordatorio para el lunes que viene” o “Ok Google, Poner música de Coldplay” o hasta hacer reservas y pedir pizza.

Clasificación

Consiste en identificar a que Clase pertenece cada individuo de la población que estamos analizando. Se le asignará un valor discreto de tipo 1, 0 como en la clasificación de Spam o no. También podría ser clasificar si un tumor es benigno o no o al clasificar flores según las características obtenidas.

Ver un ejemplo de Arbol de Decisión con Clasificación

¿Comprar casa ó Alquilar? Resuelve el dilema con Naive Bayes

Predicción

Similar a la clasificación pero para valores continuos, nos permite intentar predecir qué valor obtendremos dado un conjunto de datos de entrada con resultado desconocido. Como comentábamos antes, se puede utilizar para predecir precios de inmuebles, alquileres, coches o la probabilidad de que ocurra algún evento utilizado con frecuencia en estadística con Regresión Lineal.

Segmentación de Audiencia

Se suele utilizar el aprendizaje no supervisado para crear y descubrir patrones no conocidos en el comportamiento de los clientes de una web, app o comercio. Estos algoritmos pueden descubrir grupos que desconocíamos por completo o agrupar ciertas características que se correlacionan y que nosotros difícilmente lo hubiéramos identificado.

Juegos

Podemos utilizar ML para dar inteligencia a los enemigos que tenga que enfrentar el usuario (protagonista) del juego. También se utiliza para hacer que nuestras tropas sepan como moverse y saltear obstáculos en un campo de batalla.

Coche Autónomo

En este campo se están ejecutando muchas de las investigaciones en Machine Learning para darle vida propia a los automóviles. Uno de los usos será para que el coche mueva el volante por si solo, analizando las imágenes, también para detectar otros vehículos y no chocar y hasta predecir cómo se están moviendo los demás para evitar accidentes. Detectar símbolos  de velocidad, Stop, zona escolar en la carretera. El coche tiene muchísimas decisiones que tomar y en muy poco tiempo, siendo todos cruciales y de alta prioridad. Es un caso muy interesante de estudio para el Machine Learning y se está volviendo una realidad.

Salud

Dados los sintomas presentados por un paciente en una base de datos de pacientes anónimos nuestra máquina deberá ser capas de predecir si es probable que esa persona pueda sufrir una enfermedad específica. Este tipo de Aprendizaje Automático es de suma delicadeza y puede servir como soporte para un equipo médico.

Economía y Finanzas

Se podrá dar soporte a analistas financieros intentando predecir determinadas cotizaciones de acciones en la Bolsa, ayudando a decidir si conviene comprar, mantener o vender.

Motores de Recomendación

Vemos una peli o una serie. Millones de personas ven esa misma serie. ¿No sería lógico que a mi me guste otra peli que vieron otros usuarios con un perfil similar al mio? Pues eso es lo que aprovechan Netflix y otros proveedores para poder recomendar contenidos a sus usuarios. Amazon es famoso por sus… “Si llevas ese producto, también te interesará este otro”. Esto también se consigue con este tipo de Aplicaciones del Aprendizaje Automático.

¿Te sientes con ganas de instalar un ambiente de desarrollo Python y comenzar a programar? Lee las Prácticas del blog

¿Qué otras aplicaciones  del Machine Learning conoces? ¿Utilizas Inteligencia Artificial en tu trabajo, estudios o investigación? Escríbeme un comentario y ayúdame a mejorar esta lista!

GuardarGuardar

GuardarGuardar

7 Replies to “Aplicaciones del Machine Learning”

  1. Hola Juan Ignacio, primero que todo felicitarte por este blog sobre ML, ha sido de gran ayudar.
    Con base a este post, tengo una duda. Me podrías explicar por qué Neural Networks y Deep Learning se consideran como algoritmos del aprendizaje supervisado?
    Muchas gracias!

    1. Hola David, gracias por escribir y por tu comentario! Me alegra saber que el blog ayuda 🙂
      Te contesto: La realidad es que las redes neuronales pueden crearse con algoritmos de aprendizaje supervisado o no supervisado.
      Lo frecuente estos días es que se utilice de manera supervisada, en donde el científico de datos le provee una fuente abundante de etiquetas, gracias al big data, y la red aprenda gracias a numerosos ejemplos que ayudan a lograr la generalización. Un ejemplo de esto son las Redes Neuronales Convolucionales (CNN) que reconocen imágenes, que suelen entrenarse con miles y miles de imágenes de gatitos y perros…
      Pero hay que decir que se puede programar una red neuronal para que se “auto organice” y modifique sus pesos internos sin tener etiquetas para que detecte y clasifique clusters de datos de manera similar a como lo pueden hacer otros algoritmos no supervisados.
      Saludos!

  2. Juan Ignacio, qué tal.

    Gracias infinitas por compartir tu conocimiento.

    Quisiera contar con tu opinión al respecto sobre sí es posible resolver la creación mes a mes de cronogramas de trabajo variables mediante Machine Learning.

    Te suelto el rollo con detalle (ojalá tengas tiempo para leerlo):

    Para mi tesis de grado de Ingeniería de Sistemas he de resolver una actividad que implica varios días de labor humana. Consiste en la programación mes a mes de los cronogramas de trabajo y descanso para una empresa que tiene 36 puntos de atención y sobre el cual se manejan muchas reglas, como por ejemplo que los días de descanso (4) varían entre un mes y otro, y éstos deben ser cubiertos por otro personal que también debe descansar otros 4 días del mes. Además, ningún punto de atención se debe quedar sin trabajador, ni siquiera los fines de semana

    Como los empleados solicitan los descansos para el mes siguiente, se ha optado por una aplicación Blockchain con Hyperledger para tal fin, incluso para que los puedan intercambiar.

    Para el resto de programación se ha estipulado que una máquina deba aprender a hacerlo.

    Como insumo para que la máquina aprenda, tengo ya los registros (punto de atención, fecha, empleado) de quién trabajó cada día en todos los puntos de atención desde el año 2013 hasta la fecha

    Mi duda inicial es sobre cómo presentarle estos datos al algoritmo y cuál sería el mejor para tal fin.

    ¿Se puede (supongo que sí) ? ¿Pudieras aportarme una ruta a seguir, un hilo del qué empezar a tirar?

    Mis gracias excederían el infinito, te lo aseguro. 🙂

    1. Hola Javen, y disculpa la demora en responder, recién hoy pude leer al completo tu comentario. Así en principio se me ocurre que podría ser una solución usar algoritmo genético.
      Déjame ver si se me ocurre algo mejor y te vuelvo a escribir. También intentaré pasar algún enlace sobre algoritmo genético, pues aún no escribí sobre él en el blog, pero lo utilice para mi tesis de la universidad hace unos cuantos años!
      Saludos

      1. Hombre, Juan Ignacio, muchas gracias.

        Leyendo por aquí y por allá, me viene a la mente la idea de que con Random Forrest se pudiera lograr el cometido.

        Según voy entendiendo, este algoritmo haría árboles de decisión por cada variable:
        -Punto de atención
        -Fecha
        -Tipo de día (si es hábil o feriado)
        -Empleado

        Y promediando determinaría los nodos y las bifurcaciones para hacer la predicción, que para este caso no tendría que coindicir con la realidad sino que por el contratio sería ya la decisión final que se tomaría en relación a cómo ubicar a cada trabajador por fecha disponible.

        Estudiaré lo de los algoritmos genéticos.

        Estaré atento a cualquier otra sugerencia.

        Gracias infinitas.

        1. Hola Javen, te cuento que estuve investigando el tema y tengo casi seguro que la mejor elección sería Algoritmo genético. Pues verás, encontré varios enlaces que resuelven problemas similares al tuyo (aunque por supuesto deberás adecuar tus datos y funciones particulares). Es decir, problemas de optimizar: stocks, cargas de tareas de un ordenador, horarios para conferencias o los turnos de enfermeras.
          Te dejaré aqui varios enlaces. Si te recomendaría comprender BIEN el tema primero, o puede que algunos de los ejemplos te resulten difíciles al principio, sin contar con una base en este tipo de algoritmos.
          Intentaré yo mismo escribir algún artículo en el futuro sobre Algoritmo Genético.
          Espero que te sean de ayuda y ya me contarás!
          PD: tu enfoque con Random Forest no logré comprenderlo :S

          ENLACES (Tienes mucho para leer!):

          1. Juan Ignacio, muchísimas gracias.

            ¡Qué cantidad de información! A vuelo de pájaro ya vi que tratan temas muy relacionados con el mío.

            Muy seguramente tienes razón en cuanto al Algoritmo Genético sobre el Random Forest.

            Te estaré comentando. Mi idea también es publicar la aplicación en Github.

            Estaré atento a tus post.

Leave a Reply