Introducción a Machine Learning Ligdi González 1.ª edición Parte 1: Introducción ...........................................4 ¿Quién debería leer esto? .................................................................................................4 ¿Por qué Machine Learning o aprendizaje automático es importante? ..........................4 Parte 2: Historia .................................................6 Parte 3: Definición ............................................10 Parte 4: Clasificación .........................................11 Aprendizaje Supervisado (Supervised Learning) ...........................................................11 Aprendizaje No Supervisado (Unsupervised Learning) .................................................11 Aprendizaje por Refuerzo (Reinforced Learning) .......................................................... 12 Aprendizaje por Procesamiento de Lenguaje Natural (Natural Language Processing) 13 Aprendizaje Profundo (Deep Learning) .........................................................................13 Parte 4.1: Aprendizaje Supervisado: Linear Regression ..........................................................15 Parte 4.2: Aprendizaje Supervisado: Polynomial Regression ..........................................................18 Parte 4.3: Aprendizaje Supervisado: Support Vector Regression ..............................................18 Parte 4.4: Aprendizaje Supervisado: Decision Tree Regression .........................................................20 Parte 4.5: Aprendizaje Supervisado: Random Forest Regression ..............................................23 Parte 4.6: Aprendizaje Supervisado: Logistic Regression .........................................................25 Parte 4.7: Aprendizaje Supervisado: K-Nearest Neighbors ..........................................................28 Parte 4.8: Aprendizaje Supervisado: Support Vector Machine .................................................30 Parte 4.9: Aprendizaje Supervisado: Decision Tree Classification .....................................................32 Parte 4.10: Aprendizaje Supervisado: Random Forest Classification .........................................34 Parte 4.11: Aprendizaje No Supervisado: K-Means Clustering ..........................................................36 Parte 4.12: Aprendizaje No Supervisado: Hierarchical Clustering .....................................39 Parte 1: Introducción ¿Quién debería leer esto? Personas técnicas que desean aprender rápidamente sobre Machine Learning. Personas no técnicas que quieren una introducción a Machine Learning y están dispuesta a comprometerse con conceptos técnicos. Cualquier persona que tenga curiosidad sobre cómo piensan las máquinas. Esta guía está destinada a ser accesible para cualquier persona . Se discutirán conceptos básicos pero no es necesario tener un conocimiento previo para obtener valor de esta serie. ¿Por qué Machine Learning o aprendizaje automático es importante? Machine Learning moldeará nuestro futuro con más fuerza que cualquier otra innovación en este siglo. Cualquiera que no lo entienda pronto se sentirá abandonado, despertando en un mundo lleno de tecnología que se siente cada vez más como magia. La velocidad de aceleración ya es asombrosa. Después de varios periodos de falsas esperanzas en las últimas cuatro décadas, los rápidos avances en el almacenamiento de datos y el poder de procesamiento de las computadoras, han cambiado drásticamente el juego en los últimos años. Los algoritmos de Machine Learning los utilizamos diariamente y, en ocasiones, es tan normal su uso que no nos damos cuenta que se encuentran programado con esta tecnología. Los correos electrónicos es uno de los primeros ejemplos que nos dan al momento de aprender sobre Machine Learning. Se puede decir que fue uno de los algoritmos que se empezaron a utilizar de manera masiva y, que en su momento y hasta el día de hoy, lo hemos agradecido infinitamente. El simple hecho que se pueda detectar si un correo recibido es algo que nos interesa o simplemente un correo no deseado hace que nos ahorremos mucho tiempo en el día a día. Otra de las aplicaciones que usamos diariamente es el reconocimiento facial en las fotos que publicamos en Facebook. Este es uno de los algoritmos que ha perfeccionado en los últimos años Facebook y es considerado uno de los mejores en está área. Con el simple hecho de publicar una foto en la plataforma, el modelo realiza un escaneo de la misma y lo compara con los datos que tiene almacenado, relacionando los nombres de cada una de las personas que se encuentran en la foto. Las recomendaciones de las películas de Netflix conjuga una serie de algoritmos que unidos realiza las recomendaciones de las películas y series. Acá el algoritmo aprende tanto de las películas vistas, las películas que dejamos de ver, las que incluimos en nuestra lista de visualización, así como también si utilizamos un celular una tableta o una pantalla, y muchas más información que se utiliza para realizar las mejores recomendaciones para cada uno de los usuarios. Un dato curioso de Netflix es que para el año de 2006 publicó un concurso de Machine Learning y minería de datos que revolucionaría por el completo el mundo de la ciencia de datos. El propósito era sencillo: Netflix quería mejorar la precisión de sus predicciones respecto a cuánto le gustaría a un usuario determinada película, basada en su historial de preferencias. Para ese entonces, Netflix ya había desarrollado un sistema de recomendación propio, el cual hacía recomendaciones personales de nuevas películas basado en cuanto le guste o disguste al usuario otras películas. Sin embargo, la empresa estaba deseosa de experimentar nuevos enfoques y abrió el concurso a cualquier persona que pudiese desarrollar un algoritmo que mejorara, en por lo menos 10%, las predicciones del algoritmo propio sobre el mismo set de datos. El premio para quien lograra este objetivo era de 1 millón de dólares. El equipo ganador de este concurso fue BellKor’s Pragmatic Chaos quienes registraron un algoritmo que generaba una mejora de 10.06%. Sin embargo, Netflix nunca llegó a utilizar el algoritmo ganador ya que el mismo contaba con más de 800 algoritmos lo que hacía un cambio significativo de tecnología para soportar cientos de algoritmos trabajando simultáneamente. Estos son tan solo algunos de los ejemplos de aplicaciones que usamos cotidianamente y funcionan bajo algoritmos de Machine Learning. Cada día es más común descubrir máquinas en roles tradicionalmente ocupados por humanos. En esta serie exploraremos los conceptos básicos de Machine Learning detrás de estas tecnologías. Al final, deberías ser capaz de describir cómo funciona a nivel conceptual y estar equipado con las herramientas para comenzar a entender está área. Parte 2: Historia Para algunos les parece que no es necesario conocer la historia sobre Machine Learning, pero estudiando la misma podrás ver la evolución que ha tenido con el pasar de los años y a su vez observarás el progreso que ha tenido últimamente. Vamos a hacerla de manera breve, solamente resaltando los puntos más importantes. 1950. Alan Turing publica un articulo titulado Computación e Inteligencia, en donde plantea lo que ahora conocemos como la Prueba de Turing. Esta es una prueba de habilidad de una máquina de mostrar un comportamiento inteligente similar al de un humano. La misma no evalúa el conocimiento de la máquina en cuanto a su capacidad de responder preguntas correctamente, solo se toma en cuenta la capacidad de ésta de generar respuestas similares a las que daría un humano. 1952. Arthur Samuel escribe el primer programa de ordenador capaz de aprender. El software era simplemente un programa que jugaba a las damas y que podía aprender de sus errores partida tras partida. 1957. Fran Rosenblatt diseña el Perceptron, una red neuronal en hardware para reconocimiento de caracteres. El propósito era el de explicar y modelar las habilidades de reconocimiento de patrones de los sistemas visuales biológicos. 1979. Estudiantes de la Universidad de Stanford, diseñan un carro capaz de moverse autónomamente por una habitación evitando obstáculos. 1981. Gerald DeJong crea el concepto de Aprendizaje Basado en Experiencia, haciendo que un computador analice información de entrenamiento y cree una regla general que le permita descartar información no importante. 1985. Terry Sejnowski inventa NetTalk, un software que aprende a pronunciar palabras de la misma manera que lo haría un niño. Primeros años de los 90s. Científicos empiezan a crear programas que analicen grandes cantidades de datos y saquen conclusiones, o aprendan, de los resultados. 1996. El computador Deep Blue de IBM vence una partida de ajedrez a Gary Kaspárov, campeón del mundo vigente, aunque al final Kaspárov ganó 3 partidas más, derrotando a Deep Blue. Para mayo de 1997 se vuelven a enfrentar pero esta vez con una nueva versión de computador llamado Deeper Blue, esta vez se jugaron 6 partidas siendo el vencedor el computador. 2006. Geoffrey Hinton presenta el concepto de Deep Learning o aprendizaje profundo. Con este concepto se explicaron los nuevos algoritmos que permiten que los computadores distingan diversos objetos y textos tanto en imágenes como en videos. 2010. El Kinect de Microsoft es capaz de reconocer 20 características del cuerpo humano a una velocidad de 30 veces por segundo. 2011. El ordenador Watson de IBM vence a dos inteligentes concursantes en la tercera ronda del concurso estadounidense de preguntas y respuestas Jeopardy. 2011. Se crea GoogleBrain por Jeff Dean de Google y Andrew Ng profesor de la Universidad de Stanford. El propósito de este proyecto fue de crear una red neuronal utilizando toda la capacidad de infraestructura de Google para detectar patrones en vídeos e imágenes. 2012. Los laboratorios Google X, ahora llamado solamente X, desarrollan un algoritmo de aprendizaje automático que puede navegar de forma autónoma por los videos de Youtube para identificar los videos que contienen gatos. 2014. Un programa de ordenador ha logrado convencer a más del 30% de los jueces que era genuinamente humano. Se trata de un chatbot (robot programado para charlas online) que obedece al nombre de Eugene Goostman, el programa fue capaz de convencer al 33% de los jueces que participaron en la prueba de que estaban chateando con un niño ucraniano de 13 años. 2014. Facebook desarrolla DeepFace, un algoritmo de software que puede reconocer individuos en fotos al mismo nivel que los humanos. 2015. Amazon lanza su propia plataforma de aprendizaje automático o Machine Learning. 2015. Microsoft crea el kit de herramientas para el aprendizaje de máquinas distribuidas, que permite la distribución eficiente de problemas de aprendizaje automático en múltiples computadoras. 2015. Google entrena un agente conversacional de inteligencia artificial, que no solo puede interactuar convincentemente con humanos como un servicio de soporte técnico, sino también discutir la moralidad, expresar opiniones y responder preguntas generales basadas en hechos. 2015. OpenAI es creada. Esta es una compañía de investigación de inteligencia artificial sin fines de lucro que tiene como objetivo promover y desarrollar inteligencia artificial amigable de tal manera que beneficie a la humanidad en su conjunto. Entre sus fundadores se encuentra Elon Musk, el mismo de Tesla y SpaceX. 2015. Debido a los grandes avances obtenidos en el área de Machine Learning e inteligencia artificial, más de 3000 investigadores de estas áreas, respaldados por Stephen Hawking, Elon Musk y Steve Wozniak, firman una carta abierta advirtiendo del peligro de las armas autónomas que seleccionan y atacan objetivos sin intervención humana. 2016. El algoritmo de inteligencia artificial de Google vence a un jugador profesional en el juego de mesa chino Go, que es considerado el juego de mesa más complejo del mundo y es muchas veces más difícil que el ajedrez. El algoritmo desarrollado por Google DeepMind logró ganar cinco juegos de cinco en la competencia de Go. 2017. OpenAI entrena chat bots o agentes conversacionales, que inventan su propio lenguaje para cooperar y lograr su objetivo de manera efectiva. Poco después, Facebook también capacitó exitosamente a agentes para negociar e incluso mentir. 2017. Un algoritmo desarrollado también por OpenAI derrota a los mejores jugadores en partidos 1 contra 1 del juego en línea Dota 2. Si observamos la línea de tiempo podemos ver que los avances en Machine Learning han crecido de manera exponencial en los últimos años esto se debe en gran medida en que la cantidad de datos se ha incrementado pero a su vez la tecnología ha mejorado haciendo posible crear nuevos algoritmos más eficientes y con mejores resultados. Parte 3: Definición Definir Machine Learning no es fácil ya que abarca muchas áreas y cada vez se agregan nuevos avances que hace más robusto esta definición. Veamos, primeramente, cómo la definen varios expertos y empresas reconocidas en esta área. Andrew Ng, Profesor de la Universidad de Stanford, la define como la ciencia de hacer que las computadoras actúen sin estar explícitamente programadas. Los expertos de Nvidia, lo define como la práctica de usar algoritmos para analizar datos, aprender de ellos y luego hacer una determinación o predicción sobre algo en el mundo. McKinsey y Compañía, una de las consultoras más grande en está área, indica que el aprendizaje automático o Machine Learning se basa en algoritmos que pueden aprender de los datos sin depender de la programación basada en reglas. Tom Mitchell, profesor del departamento de Machine Learning de la Universidad Carnegie Mellon, indica que el campo de aprendizaje automático o Machine Learning busca responder a la pregunta ¿cómo podemos construir sistemas informáticos que mejoren automáticamente con la experiencia, y cuales son las leyes fundamentales que rigen todos los procesos de aprendizaje? Si observamos las 4 definiciones vemos que todas tienen sus similitudes y que en cierta forma se complementan unas con otras. Si buscamos una sola definición podemos decir: El Aprendizaje Automático o Machine Learning, es utilizar algoritmos para que puedan decir algo interesante en base a un conjunto de datos sin tener que escribir ningún código específico para el problema. Esta definición conjuga todas las anteriores. Parte 4: Clasificación Existen muchas clasificaciones de Machine Learning, esto se debe a que cada vez se mejoran las tecnologías y por consiguiente se desarrollan nuevos algoritmos, pero podemos decir que Machine Learning se clasifica de la siguiente forma: Aprendizaje Supervisado (Supervised Learning) En los problemas de aprendizaje supervisado, comenzamos el análisis con un conjunto de datos que contiene ejemplos de entrenamiento con etiquetas correctas asociadas. El algoritmo aprenderá la relación entre los datos y sus etiquetas y aplicará esa relación aprendida para clasificar datos completamente nuevos que la máquina no haya vista antes. Por ejemplo, cuando se aprende a clasificar imágenes de gatos, el algoritmo toma miles de imágenes de gatos junto con la etiqueta “gato”. El algoritmo aprenderá esta relación y cuando se le muestre una nueva imagen, esta vez sin etiquetas, podrá aplicar esa relación aprendida y determinar si es un gato o no. Aprendizaje No Supervisado (Unsupervised Learning) ¿Cómo se encuentra la estructura subyacente de un conjunto de datos? ¿Cómo lo resumes y lo agrupas más útilmente? ¿Cómo se representan datos de manera efectiva en un formato comprimido? Estos son algunos de los objetivos del aprendizaje no supervisado, que se denomina “sin supervisión” porque comienza con datos no etiquetados. En contraste con el aprendizaje supervisado, no siempre es fácil obtener métricas sobre qué tan bien está funcionando un algoritmo de aprendizaje sin supervisión. El “rendimiento” a menudo es subjetivo y específico del dominio. Un ejemplo de esto es que tenemos un conjunto de imágenes de distintos animales, el algoritmo no supervisado simplemente va a agrupar cada uno de los tipos de animales de acuerdo a las características y similitudes que poseen. Este agrupamiento sería el resultado final o solución del algoritmo. Acá, a diferencia del aprendizaje supervisado, no se sabe exactamente qué animal es. El algoritmo aprenderá a agrupar los tipos de animales, por ende cuando se le introduzca un nuevo animal, podrá aplicar esa relación aprendida y determinar a qué grupo pertenece. Aprendizaje por Refuerzo (Reinforced Learning) En este aprendizaje no hay una clave de repuesta, pero el algoritmo aún tiene que decidir cómo actuar para realizar su tarea. En ausencia de datos de capacitación, el algoritmo aprende de la experiencia, recoge los ejemplos de entrenamiento (esta acción fue buena – esta acción fue mala) a través de ensayo y error mientras intenta su tarea, con el objetivo de maximizar la recompensa a largo plazo. Un ejemplo de esto lo vemos al introducir una imagen de una mariposa al algoritmo, este no conoce qué es por lo que “adivina” indicando que es un gato. Obviamente la respuesta es incorrecta por lo que se le indica al algoritmo y a su vez se le puede dar la respuesta correcta, en ocasiones el algoritmo tiene que seguir dando respuestas hasta que obtenga la correcta. Una vez dada esta información al algoritmo, la aprende para una nueva oportunidad. Si ahora a este algoritmo, ya aprendido, se le introduce nuevamente una foto de una mariposa, la respuesta que dará será la correcta ya que ha aprendido. Aprendizaje por Procesamiento de Lenguaje Natural (Natural Language Processing) Este es una de las clasificaciones que en ocasiones se le atribuye a la Inteligencia Artificial, aunque al final son mejoras a algoritmos propios de Machine Learning para cumplir un propósito bien claro. Este aprendizaje formula mecanismos eficaces para la comunicación entre personas y máquinas por medio de lenguajes naturales. Por ejemplo se le puede introducir al algoritmo la palabra “gracias” en distintos idiomas y este podrá determinar los idiomas y el significado de cada una de las palabras. Este algoritmo es utilizado en un sin fin de aplicaciones hoy en día, como el análisis de discursos, documentos, entre otros, sin importar el idioma en que se encuentre. Aprendizaje Profundo (Deep Learning) Es el aprendizaje que ha tenido más auge en los últimos años, por todo lo que ha podido conseguir. Utiliza los principios de los algoritmos básicos de Machine Learning, en conjunto, intentando modelar abstracciones de alto nivel en datos, usando arquitecturas compuestas. Esta definición puede ser compleja, pero es que con este aprendizaje se puede hacer prácticamente cualquier cosa, la desventaja es que requiere un número superior de datos, comparado con los otros algoritmos, pero el mayor inconveniente que tiene es que se requiere tecnología de punta para poder procesar los algoritmos, razón por la cual es, hasta ahora, que se ha venido desarrollando este aprendizaje. Un ejemplo de lo que puede hacer este algoritmo es tomar una foto en blanco y negro y colocarle color, determinando cada uno de los elementos que contiene para así determinar qué color se beneficia y cuál no. Existen muchas otras clasificaciones que en ocasiones se le atribuye a la Inteligencia Artificial pero al final son mejoras a los algoritmos propios de Machine Learning. Seguramente con el pasar de los años esta clasificación se irá ampliando, sobretodo con las mejoras en las tecnologías para procesar la información y los algoritmos, pero la base siempre será la misma, razón por la cual en esta serie nos enfocaremos en los algoritmos bases que son los que todos debemos conocer. Estos algoritmos se encuentran dentro de la clasificación de Aprendizaje Supervisado y No Supervisado y en estos nos enfocaremos solamente. Parte 4.1: Aprendizaje Supervisado: Linear Regression La regresión es una forma estadística de establecer una relación entre una variable dependiente y un conjunto de variables independientes. Es un enfoque muy simple para el aprendizaje supervisado. Aunque puede parecer algo aburrido en comparación con algunos de los algoritmos más modernos, este algoritmo sigue siendo un método de aprendizaje estadístico útil y ampliamente utilizado. La regresión lineal o linear regression es un método para predecir la variable dependiente (y) en función de los valores de las variables independientes (X). Se puede usar para los casos donde queremos predecir alguna cantidad continua, por ejemplo, predecir el tráfico en una tienda minorista, predecir el tiempo de permanencia de un usuario o el número de páginas visitas en un blog, etc. Pero, ¿qué son las variables dependientes y las variables independientes? Variables independientes (características): es una variable que se manipula para determinar el valor de una variable dependiente. Simplemente, son las características que queremos usar para predecir algún valor dado de y. Variable dependiente (objetivo): la variable dependiente depende de los valores de la variable independiente. En pocas palabras, es la característica que estamos tratando de predecir. Esto también se puede conocer comúnmente como una variable de respuesta. Este algoritmo consiste en hallar una línea recta que mejor encaje en un conjunto de datos dados, este conjunto de datos comprende las variables independientes e dependiente. Para esto podremos utilizar métodos matemáticos como el de los mínimos cuadrados, para buscar minimizar la distancia vertical de todos los puntos a la línea recta. Una vez obtenida esta línea recta, seremos capaces de hacer predicciones hipotéticas sobre cuál será el valor de “y” dado “X”. Para ajustar una línea de regresión lineal, los datos deben satisfacer algunas suposiciones básicas pero importantes, si sus datos no siguen los suposiciones, sus resultados pueden ser incorrectos y engañosos. Linealidad y aditivo. Debe existir una relación lineal, los datos deben satisfacer algunas suposiciones básicas pero importantes. Si los datos no siguen las suposiciones, los resultados pueden ser incorrectos y engañosos. Suposición lineal. La regresión lineal supone que la relación entre la entrada y salida es lineal. No es compatible con nada más. Esto puede ser obvio, pero es bueno recordar cuando tenemos muchos atributos. Eliminar el ruido. La regresión lineal asume que sus variables de entrada y salida no son ruidosas. Consideremos usar operaciones de limpieza de datos que permitan exponer mejor y aclarar la señal en los datos. Eliminar la colinealidad. La regresión lineal se ajustará demasiado a los datos cuando tenga variables de entrada altamente correlacionadas. Considera calcular correlaciones por pares para sus datos de entrada y eliminar los más correlacionados. Distribuciones gaussianas. La regresión lineal hará predicciones más confiables si sus variables de entrada y salida tienen una distribución normal. Podemos obtener algún beneficio utilizando transformaciones en sus variables para hacer que su distribución tenga un aspecto más gaussiano. Parte 4.2: Aprendizaje Supervisado: Polynomial Regression Este algoritmo es muy parecido al anterior, la diferencia es que los datos acá no son lineales por lo que se debe implementar polinomios de grado n para obtener el modelo. Este algoritmo es un ensayo y error en donde se debe probar con distintos grados de polinomios para obtener el que mejor se adecue a los datos. No siempre aumentar el grado del polinomio hará que el modelo mejore, en ocasiones hace más bien que se empeore el algoritmo por lo que esto es un proceso de experimentación para obtener el más adecuado y que reduzca los errores entre el modelo y los datos. Parte 4.3: Aprendizaje Supervisado: Support Vector Regression Este algoritmo se basa en buscar la curva o hiperplano que modele la tendencia de los datos de entrenamiento y según ella predecir cualquier dato en el futuro. Esta curva siempre viene acompañada con un rango (máximo margen), tanto del lado positivo como en el negativo, el cual tiene el mismo comportamiento o forma de la curva. Todos los datos que se encuentren fuera del rango son considerados errores por lo que es necesario calcular la distancia entre el mismo y los rango. Esta distancia lleva por nombre epsilon y afecta la ecuación final del modelo. Los datos pueden ser lineales o no lineales, ya que al final el modelo se ajusta al comportamiento de los datos, lo importante es que se cumplan ciertos criterios para que el modelo obtenga resultados óptimos. Algunos de los criterios que se deben considerar son los siguientes: Los datos deben estar limpios, por lo que se deben preprocesar con anterioridad. No es adecuado para conjuntos de datos grandes ya que el tiempo de entrenamiento puede ser alto. No es tan efectivo en conjuntos de datos con clases superpuestas o características muy similares. Parte 4.4: Aprendizaje Supervisado: Decision Tree Regression Los algoritmos de aprendizaje basados en árbol se consideran uno de los mejores y más utilizados métodos de aprendizaje supervisado. Potencian modelos predictivos con alta precisión, estabilidad y facilidad de interpretación. Crear un árbol de decisiones es en un proceso de dividir los datos de entrada, este es un procedimiento numérico en el que se alinean todos los valores y se prueban diferentes puntos de división utilizando distintos métodos. Todas las variables de entrada y todos los puntos de división posibles se evalúan y se elige la que tenga mejor resultado. Este algoritmo es muy bueno en el manejo de datos tabulares con características numéricas o características categóricas con menos de cientos de categorías. A diferencia de los modelos lineales, los árboles de decisiones pueden capturar la interacción no lineal entre las características y el objetivo. Las ventajas que tiene este tipo de algoritmo son: Fácil de entender. La salida del árbol de decisión es muy fácil de entender, incluso para personas con antecedentes no analíticos, no se requiere ningún conocimiento estadístico para leerlos e interpretarlos. Útil en la exploración de datos. El árbol de decisiones es una de las forma más rápidas para identificar las variables más significativas y la relación entre dos o más. Con la ayuda de los árboles de decisión podemos crear nuevas variables o características que tengan mejor poder para predecir la variable objetivo. Se requiere menos limpieza de datos. Requiere menos limpieza de datos en comparación con algunas otras técnicas de modelado. A su vez, no esta influenciado por los valores atípicos y faltantes en la data. El tipo de datos no es una restricción. Puede manejar variables numéricas y categóricas. Método no paramétrico. Es considerado un método no paramétrico, esto significa que los árboles de decisión no tienen suposiciones sobre la distribución del espacio y la estructura del clasificador. Ya vista las ventajas, ahora se deben mencionar las desventajas que posee este algoritmo: Sobreajuste. Es una de las dificultades más comunes que tiene este algoritmo, este problema se resuelve colocando restricciones en los parámetros del modelo y eliminando ramas en el análisis. No apto para variables continuas. Al trabajar con variables numéricas continuas, el árbol de decisiones pierde información cuando categoriza variables en diferentes categorías. Los modelos basados en árboles no están diseñados para funcionar con características muy dispersas. Cuando se trata de datos de entrada dispersos (por ejemplo, características categóricas con una gran dimensión), podemos preprocesar las características dispersas para generar estadísticas numéricas, o cambiar a un modelo lineal, que es más adecuado para dichos escenarios. Parte 4.5: Aprendizaje Supervisado: Random Forest Regression El algoritmo de bosque aleatorio o Random Forest Regressión es un algoritmo de clasificación supervisado. Como su nombre lo sugiere, este algoritmo crea el bosque con varios árboles. En general, cuantos más árboles haya en el bosque, más robusto será el bosque. Del mismo modo, en el clasificador aleatorio de bosques, cuanto mayor sea el número de árboles en el bosque, mayor será la precisión. Una vez calculado cada árbol de decisión, el resultado de cada uno de ellos se promedian y con este se obtiene la predicción del problema. Las ventajas que tiene este algoritmo son las siguientes: Puede resolver ambos tipos de problemas, es decir, clasificación y regresión, y realiza una estimación decente en ambos frentes. Unos de los beneficios que más llama la atención es el poder de manejar grandes cantidades de datos con mayor dimensionalidad. Puede manejar miles de variables de entrada e identificar las variables más significativas, por lo que se considera uno de los métodos de reducción de dimensionalidad. Además el modelo muestra la importancia de la variable, que puede ser una característica muy útil. Tiene un método efectivo para estimar datos faltantes y mantiene la precisión cuando falta una gran proporción de los datos. A su vez las desventajas que tiene este algoritmo son las siguientes: Hace un buen trabajo en la clasificación, pero no es tanto bueno como para los problemas de regresión, ya que no proporciona predicciones precisas y continuas sobre la naturaleza. En caso de regresión, no predice más allá del rango en los datos de entrenamiento, y que pueden sobreajustar los conjuntos de datos que son particularmente ruidosos. En ocasiones se puede parecer este algoritmo como una caja negra, ya que se tiene muy poco control sobre lo que hace el modelo. Puedes, en el mejor de los casos, probar diferentes parámetros y datos aleatorios. Parte 4.6: Aprendizaje Supervisado: Logistic Regression La regresión logística o Logistic Regression es un algoritmo de clasificación que se utiliza para predecir la probabilidad de una variable dependiente categórica. En la regresión logística, la variable dependiente es una variable binaria que contiene datos codificados como 1 - 0, sí - no, abierto – cerrado, etc. Este modelo logístico binario se utiliza para estimar la probabilidad de una respuesta binaria basada en una o más variables predictoras o independientes. Permite decir que la presencia de un factor de riesgo aumenta la probabilidad de un resultado dado un porcentaje específico. Como todos los análisis de regresión, la regresión logística es un análisis predictivo. Se usa para describir datos y explicar la relación entre una variable binaria dependiente y una o más variables independientes nominales, ordinales, de intervalo o de nivel de razón. La regresión logística requiere tamaños de muestra bastante grandes. La razón por la cual la regresión logística es ampliamente utilizada, a pesar de los algoritmos avanzados como redes neuronales profunda, es porque es muy eficiente y no requiere demasiados recursos computacionales que hacen que sea asequibles ejecutar la producción. Algunas de las características que debes considerar para este algoritmo son las siguientes: Variable de salida binaria. Esto puede ser obvio, pero la regresión logística está destinada a problemas de clasificación binarios (dos clases). Predicará la probabilidad de que una instancia pertenezca a la clase predeterminada, que puede dividirse en una clasificación 0 ó 1. Eliminar ruido. La regresión logística no asume ningún error en la variable de salida (y). Considera la eliminación de los valores atípicos y posiblemente las instancias más clasificadas de sus datos de entrenamiento. Distribución gaussiana. La regresión logística es un algoritmo lineal, con una transformación no lineal en la salida. Las transformaciones de datos de sus variables de entrada que exponen mejor esta relación lineal pueden dar como resultado un modelo más preciso. Eliminar entradas correlacionadas. Al igual que la regresión lineal, el modelo puede sobreajustarse si tiene múltiples entradas altamente correlacionadas. Consideremos calcular las correlaciones por pares entre todas las entradas y eliminar las entradas altamente correlacionadas. No se puede converger. Es posible que el proceso de estimación de probabilidad esperado aprenda que los coeficientes no convergen, esto puede suceder si hay muchas entradas altamente correlacionadas en sus datos o si los datos son muy escasos. Parte 4.7: Aprendizaje Supervisado: K-Nearest Neighbors El algoritmo KNN es uno de los algoritmos de clasificación más simples, incluso con tal simplicidad puede dar resultados altamente competitivos. Pertenece al dominio de aprendizaje supervisado y puede ser utilizado para el reconocimiento de patrones, extracción de datos y detección de intrusos. Es un clasificador robusto y versátil que a menudo se usa como un punto de referencia para clasificadores más complejos como las redes neuronales artificiales y vectores de soporte (SVM). A pesar de su simplicidad, KNN puede superar a los clasificadores más potentes y se usa en una variedad de aplicaciones tales como pronósticos económicos, compresión de datos y genética. Este algoritmo consiste en seleccionar un valor de K. Al momento del análisis los K datos más cercanos al valor que se desea predecir será la solución. Acá lo importante es seleccionar un valor de K acorde a los datos para tener una mayor precisión en la predicción. Las ventajas que tiene este algoritmo son las siguientes: No paramétrico. No hace suposiciones explícitas sobre la forma funcional de los datos, evitando los peligros de la distribución subyacente de los datos. Algoritmo simple. Para explicar, comprender e interpretar. Alta precisión (relativa). Es bastante alta pero no competitiva en comparación con modelos de aprendizaje mejor supervisados. Insensible a los valores atípicos. La precisión puede verse afectada por el ruido o las características irrelevantes. Las desventajas de este algoritmo son: Basado en instancia. El algoritmo no aprende explícitamente un modelo, en su lugar, elige memorizar las instancias de capacitación que se utilizan posteriormente como conocimiento para la fase de predicción. Concretamente, esto significa que solo cuando se realiza una consulta a nuestra base de datos, es decir cuando le pedimos que prediga una etiqueta dada una entrada, el algoritmo usará las instancias de entrenamiento para escupir una respuesta. Computacionalmente costoso. Porque el algoritmo almacena todos los datos de entrenamiento. Requisito de memoria alta. Almacena todos (o casi todos) los datos de entrenamiento. Predicción lenta. La etapa de predicción puede ser lenta con N grande. Parte 4.8: Aprendizaje Supervisado: Support Vector Machine El algoritmo de vectores de soporte o Support Vector Machine es un clasificador discriminatorio definido formalmente por un hiperplano de separación. En otras palabras, dados los datos de entrenamiento etiquetados el algoritmo genera un hiperplano óptimo que clasifica los nuevos ejemplos en dos espacios dimensionales, este hiperplano es una linea que divide un plano en dos partes donde en cada clase se encuentra en cada lado. Los vectores de soportes se basan en el concepto de planos de decisión que definen los límites de decisión. Un ejemplo de esto se muestra a continuación, los objetos pertenecen a la clase verde o rojo, la línea de separación define un límite en el lado derecho del cual todos los objetos son verdes, y a la izquierda de los cuales todos los objetos son rojos. Cualquier objeto nuevo que caiga hacia la derecha está clasificado como verde, o clasificado como rojo si cae a la izquierda de la línea de separación. La siguiente ilustración muestra la idea básica detrás de los vectores de soporte, aquí vemos los objetos originales mapeados, es decir reorganizados, usando un conjunto de funciones matemáticas, conocidas como núcleos. El proceso de reorganización de los objetos se conoce como mapeo. Ten en cuenta que en esta nueva configuración, los objetos mapeados son linealmente separables y, por lo tanto, en lugar de construir la curva compleja, todo lo que tenemos que hacer es encontrar una línea óptima que pueda separar el verde y los objetos rojos. En vectores de soporte, es fácil tener un hiperplano lineal entre estas dos clases, aunque también se emplea la técnica llamada kernel. Estas son funciones que toman un espacio de entrada de baja dimensión y lo transforman en un espacio dimensional más alto, es decir, convierte el problema no separable en un problema separable, esta funciones se llaman núcleos. Es principalmente útil en el problema de separación no lineal. En pocas palabras, realiza transformaciones de datos extremadamente complejas y luego descubre el proceso para separar los datos en función de las etiquetas o resultados que ha definido. Parte 4.9: Aprendizaje Supervisado: Decision Tree Classification Árbol de decisión o Decisión Tree Classification es un tipo de algoritmo de aprendizaje supervisado que se utiliza principalmente en problemas de clasificación, aunque funciona para variables de entrada y salida categóricas como continuas. En esta técnica, dividimos la data en dos o más conjuntos homogéneos basados en el diferenciador más significativos en las variables de entrada. El árbol de decisión identifica la variable más significativa y su valor que proporciona los mejores conjuntos homogéneos de población. Todas las variables de entrada y todos los puntos de división posibles se evalúan y se elige la que tenga mejor resultado. Los algoritmos de aprendizaje basados en árbol se consideran uno de los mejores y más utilizados métodos de aprendizaje supervisado. Los métodos basados en árboles potencian modelos predictivos con alta precisión, estabilidad y facilidad de interpretación. A diferencia de los modelos lineales, mapean bastante bien las relaciones no lineales. Las ventajas que tiene este tipo de algoritmo son: Fácil de entender. La salida del árbol de decisión es muy fácil de entender, incluso para personas con antecedentes no analíticos, no se requiere ningún conocimiento estadístico para leerlos e interpretarlos. Útil en la exploración de datos. El árbol de decisión es una de las formas más rápidas para identificar las variables más significativas y la relación entre dos o más. Con la ayuda de los árboles de decisión podemos crear nuevas variables o características que tengan mejor poder para predecir la variable objetivo. Se requiere menos limpieza de datos. Requiere menos limpieza de datos en comparación con algunas otras técnicas de modelado. A su vez, no esta influenciado por los valores atípicos y faltantes en la data. El tipo de datos no es una restricción. Puede manejar variables numéricas y categóricas. Método no paramétrico. Es considerado un método no paramétrico, esto significa que los árboles de decisión no tienen suposiciones sobre la distribución del espacio y la estructura del clasificador. Ya vista las ventajas, ahora se deben mencionar las desventajas que posee este algoritmo: Sobreajuste. Es una de las dificultades más comunes que tiene este algoritmo, este problema se resuelve colocando restricciones en los parámetros del modelo y eliminando ramas en el análisis. Los modelos basados en árboles no están diseñados para funcionar con características muy dispersas. Cuando se trata de datos de entrada dispersos (por ejemplo, características categóricas con una gran dimensión), podemos preprocesar las características dispersas para generar estadísticas numéricas, o cambiar a un modelo lineal, que es más adecuado para dichos escenarios. Parte 4.10: Aprendizaje Supervisado: Random Forest Classification Random Forest es un método versátil de aprendizaje automático capaz de realizar tanto tareas de regresión como de clasificación. También lleva a cabo métodos de reducción dimensional, trata valores perdidos, valores atípicos y otros pasos esenciales de exploración de datos. Es un tipo de método de aprendizaje por conjuntos, donde un grupo de modelos débiles se combinan para formar un modelo poderoso. En Random Forest se ejecutan varios algoritmos de árbol de decisiones en lugar de uno solo. Para clasificar un nuevo objeto basado en atributos, cada árbol de decisión da una clasificación y finalmente la decisión con mayor “votos” es la predicción del algoritmo. Las ventajas que tiene este algoritmo son las siguientes: Puede resolver ambos tipos de problemas, es decir, clasificación y regresión, y realiza una estimación decente en ambos casos. Unos de los beneficios que más llama la atención es el poder de manejar grandes cantidades de datos con mayor dimensionalidad. Puede manejar miles de variables de entrada e identificar las variables más significativas, por lo que se considera uno de los métodos de reducción de dimensionalidad. Además el modelo muestra la importancia de la variable, que puede ser una característica muy útil. Tiene un método efectivo para estimar datos faltantes y mantiene la precisión cuando falta una gran proporción de los datos. A su vez la desventaja que tiene este algoritmo es la siguiente: En ocasiones se puede parecer este algoritmo como una caja negra, ya que se tiene muy poco control sobre lo que hace el modelo. Puedes, en el mejor de los casos, probar diferentes parámetros y datos aleatorios. Parte 4.11: Aprendizaje No Supervisado: K-Means Clustering K-Means es un tipo de aprendizaje no supervisado, que se utiliza cuando tienes datos no etiquetados, es decir, datos sin categorías o grupos definidos. El objetivo de este algoritmo es encontrar grupos en los datos, los puntos de datos se agrupan según la similitud de características. Este tipo de análisis de datos es muy útil en muchas aplicaciones que requieren clasificación de datos, como identificar células cancerosas dentro de una muestra grande, agrupar palabras con definiciones similares para una mejor precisión del motor de búsqueda, identificar valores atípicos en el rendimiento académico del estudiantes para un mejor refinamiento de hábitos o incluso para detectar minas terrestres en un campo de batalla. Los pasos para desarrollar este algoritmo son los siguientes: 1. Agrupa los datos en K grupos, donde K está predefinido. 2. Selecciona K puntos al azar como centros de grupo. 3. Asigne objetos a su centro de clúster más cercano según la distancia. 4. Calcule el centroide o la media de todos los objetos en cada grupo. 5. Repita los pasos 2, 3 y4 hasta asignar los mismos puntos a cada grupo en rondas consecutivas. Este procedimiento se debe repetir tantas veces hasta que se encuentren el agrupamiento de datos más óptimos. En ocasiones se deberá cambiar el valor de K para mejorar los resultados. K-Means es un método relativamente eficiente, sin embargo, debemos especificar el número de clústeres de antemano, y los resultados finales son sensibles a la inicialización y, a menudo, terminan en un óptimo local. Lamentablemente, no existe un método teórico global para encontrar la cantidad óptima de clústeres. Un enfoque práctico es comparar los resultados de múltiples ejecuciones con diferentes K y elegir la mejor basada en un criterio definido. En general, una gran K probablemente disminuya el error, pero aumenta el riesgo de sobreajuste. Este es un algoritmo rápido, robusto y simple que proporciona resultados confiables cuando los conjuntos de datos son distintos o bien separados entre sí de forma lineal. Se utiliza mejor cuando se especifica el número de centros de clúster debido a una lista bien definida de tipos que se muestran en los datos. Sin embargo, es importante tener en cuenta que la agrupación de K-Means puede no funcionar bien si contiene datos muy superpuestos, si la distancia euclidiana no mide bien los factores subyacentes, o si los datos son unidos o están llenos de valores atípicos. Parte 4.12: Aprendizaje No Supervisado: Hierarchical Clustering Este algoritmo tiene una variedad de objetivos relacionados con agrupar o segmentar una colección de objetos, es decir, observaciones, individuos, casos o filas de datos, en subconjuntos o clústeres, de modo que los datos que están dentro de cada grupo están más estrechamente relacionados con unos a otros que los objetos asignados a diferentes grupos. En la agrupación jerárquica, los datos no se particionan en un clúster en particular en un solo paso. En su lugar, tiene lugar una serie de particiones, que pueden ejecutarse desde un único clúster que contiene todos los objetos, hasta n clústeres que contienen un solo objeto. Hierarchical Clustering o agrupación jerárquica se subdivide en métodos aglomerativos, que proceden de una serie de fusiones de los n objetos en grupos. Este algoritmo puede representarse mediante un diagrama bidimensional conocido como dendrograma, que ilustra las fusiones o divisiones realizadas en cada etapa sucesivas del análisis. Dado un conjunto de n elementos a agrupar y una matriz de distancia o similitud, el proceso de agrupamiento jerárquico es este: 1. Comience por asignar cada elemento a un clúster, de modo que si tiene N elementos, ahora tiene N clusters, cada uno con un solo elemento. 2. Encuentre el par más cercano de clústeres y combínalos en un único clúster, de modo que ahora tenga un clúster menos. 3. Calcule la distancia entre el nuevo clúster y cada uno de los clústeres antiguos. 4. Repita los pasos 2 y 3 hasta que todos los elementos estén agrupados en un solo grupo de tamaño N. Este tipo de agrupamiento jerárquico fusiona los clústeres de forma iterativa. A medida que se esta haciendo los agrupamientos jerárquicos se va creando el diagrama bidimensional o dendograma. Una vez que todos los elementos se encuentren agrupados, se verifica en el dendograma la distancia más larga entre todas las dibujadas. La misma no debe tener ningún corte con otra línea graficada en el agrupamiento de datos. Determinada esta distancia se realiza un corte allí determinando cuantos clústeres o subconjunto quedará nuestro modelo. Este algoritmo no supervisado puede agrupar los programas de televisión, por ejemplo, en grupos homogéneos en función de las características del espectador. También se puede usar para identificar segmentos para marketing, o puede agrupar las ciudades en grupos homogéneos para que se puedan seleccionar ciudades comparables para probar diversas estrategias de marketing. Algunas de las consideraciones que se deben tomar al utilizar este algoritmo son las siguientes: Datos. Las variables pueden ser datos cuantitativos, binarios o de recuento. El escalado de variables es un problema importante: las diferencias en la escalabilidad pueden afectar las soluciones del clúster. Si sus variables tienen grandes diferencias en la escala, por ejemplo, una variable se mide en dólares y la otra se mide en años, se debe considerar realizar un preprocesamiento de datos. Suposiciones. Las medidas de distancia o similitud utilizadas deberían ser apropiadas para los datos analizados. Además, debe incluir todas las variables relevantes en su análisis. La omisión de variables influyentes puede dar como resultado una solución engañosa. Debido a que el análisis jerárquico de conglomerados es un método exploratorio, los resultados deben tratarse como tentativos hasta que se confirmen con una muestra independiente. Si has llegado hasta aquí, te felicito. Espero que hayas disfrutado de la serie como una introducción muy básica sobre Machine Learning. Si quieres aprender un poco más sobre este tema te invito a que pases por mi página web ligdigonzalez.com en donde encontrarás muchas más información sobre este tema. De igual forma no dudes en comunicarte conmigo con sus preguntas, opiniones, comentarios. Hasta la próxima, Ligdi González