Introducción a Machine Learning

Anuncio
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
Descargar