Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
DESCRIPCIÓN DEL LIBRO Inteligencia artificial con ejemplos es un libro dirigido a estudiantes y profesionales que han escuchado hablar de inteligencia artificial y tienen conocimientos básicos al respecto. A lo largo de este libro se explican temáticas como modelos de predicción, modelos de clasificación, máquinas de soporte vectorial, redes neuronales, entre otras. Cada temática viene acompañada de ejemplos de complejidad baja y media, los cuales han sido desarrollados usando R, AWS, Azure y TensorFlow. Cada ejemplo es explicado paso a paso para que el lector pueda seguir las instrucciones y ejecutarlas en su computador. En una edición futura, los ejemplos estarán también disponibles en Python. 2 La inteligencia artificial con ejemplos. ÍNDICE 1. Introducción a la inteligencia artificial 1 Introducción 2 Los límites de la inteligencia artificial 3 ¿Cómo aprenden las máquinas? 4 La inteligencia artificial en la práctica 5 Tipos de algoritmos de inteligencia artificial 6 Identificar el algoritmo para los datos utilizados 7 Aprendizaje de conceptos con la ayuda del lenguaje R 2. Introducción al lenguaje R 1 Introducción 2 Las estructuras de datos de R 3 Explorar y comprender los datos 4 El estudio de la distribución de datos 3. Un primer modelo de predicción mediante regresión 1 Introducción 2 El Modelo de predicción del Precio del Vino 3 El Modelo de predicción MoneyBall 4 Modelos de regresión 5 Análisis de supervivencia 4. Modelos de clasificación 1 Introducción 2 Modelos de clasificación 3 Gestión de datos faltantes y datos sustituidos 5. Máquinas de vectores de soporte y redes neuronales artificiales 1 Introducción 2 Máquinas de vectores de soporte 3 3 Redes neuronales artificiales 4 Un ejemplo de aprendizaje profundo 6. Aprendizaje por Ensemble (Conjuntos de clasificadores) 1 Introducción 2 El modelo de apilamiento 3 El modelo de empaquetamiento (Bagging) 4 El modelo impulso Boosting 7. Análisis de datos masivos con R, H2o y Spark. 1 Introducción 2 Instalar el entorno de trabajo de R y H2o 3 Ejemplo de aprendizaje profundo con H2o 8. Análisis de texto con Amazon Web Services (AWS) Machine Learning 1 Introducción 2 Instalar el entorno de trabajo AWS ML 3 Automatizar un pipeline en tiempo real 4 Un ejemplo de análisis de texto 9. Azure Machine Learning Studio 1 Introducción 2 Creación de una cuenta de Azure 3 Cinco etapas para crear un modelo de predicción con Azure 4 Integrar Azure ML Studio a R 5 Reutilizar ejemplos de proyectos en Azure ML 10. Google Cloud Machine Learning - TensorFlow 1 Introducción 2 Cómo instalar Python y TensorFlow 3. Primeros pasos con TensorFlow 4. La mecánica de TensorFlow: Los gráficos y las sesiones 5. Primer ejemplo: Regresión lineal usando Jupiter 6. Segundo ejemplo: Regresión lineal con un estimador 7. Tercer ejemplo: Red circunvolutiva de neuronas 8. Referencias útiles sobre Python 4 La inteligencia artificial con ejemplos. 11. Evaluar el desempeño de un modelo de predicción 1 Introducción 2 Enfoques de evaluación del rendimiento de un modelo 3 Evaluar la multicolinealidad 4 Reducir la dimensión de sus datos 5 Reducir dimensiones utilizando la técnica PCA 6 Reducir las dimensiones de datos no lineales de grandes dimensiones 12. La búsqueda y los juegos 1 Introducción 2 La búsqueda en la práctica, ir de A a B 3 La importancia de la búsqueda y de los juegos para la IA 4 Los algoritmos de juego, MiniMax, Alpha-beta y Expectimax 5 La suerte y las probabilidades 6 La regla de Bayes 13. Aprendizaje por refuerzo 1 Introducción 2 Los cuatro elementos de un sistema de aprendizaje 3 El proceso de decisión de Markov 4 Un primer ejemplo con un caracol mecánico 5 Un segundo ejemplo con PacMan 6 Enseñarle a un robot bípedo a regatear 5 1 Introducción a la Inteligencia Artificial 1.1 INTRODUCCIÓN Desde nuestro nacimiento estamos inundados de datos. Los sensores de nuestro cuerpo (ojos, oídos, nariz, lengua y fibras nerviosas) son bombardeados continuamente con datos en bruto que nuestros cerebros traducen en imágenes, sonidos, olores, sabores y texturas. Al usar el lenguaje podemos compartir estas experiencias con otros. Desde el advenimiento del lenguaje escrito se han registrado observaciones humanas. Los cazadores observaron el movimiento de manadas de animales, los primeros astrónomos registraron la alineación de los planetas y las estrellas, y las ciudades registraron los pagos de impuestos, los nacimientos y las muertes. Hoy, tales observaciones y muchas más están cada vez más automatizadas y sistemáticamente registradas por sensores en las bases de datos computarizadas de rápido crecimiento. El aumento en el uso de sensores electrónicos también ha contribuido a una explosión en el volumen y la riqueza de los datos registrados y disponibles. Los sensores modernos son capaces de ver, oír, oler, probar y hasta sentir. Estos sensores tratan los datos de una manera muy diferente a como lo hace un ser humano. A diferencia de la atención limitada y subjetiva de un ser humano, un sensor electrónico nunca toma un descanso y nunca permite que su juicio distorsione su percepción. Con las bases de datos y los sensores se registran muchos aspectos de nuestras vidas. Los gobiernos, las empresas y los individuos recopilan y reportan información de todo tipo. Los sensores meteorológicos recolectan datos de temperatura y presión, las cámaras de vigilancia observan a las personas en las aceras y en los túneles del metro. Las placas de los automóviles son leídas automáticamente en las entradas de la ciudad y se monitorean comportamientos electrónicos tales como: transacciones, comunicaciones, enlaces entre personas y muchos más. Este diluvio de datos permite afirmar que hemos entrado en la era del uso masivo de datos. Los seres humanos siempre han estado rodeados de una gran cantidad de datos, pero la era actual es 6 La inteligencia artificial con ejemplos. única porque tenemos grabados estos datos, muchos de los cuales pueden ser accedidos directamente desde las computadoras. Los conjuntos de datos, cada vez más grandes e interesantes, son accesibles y están a nuestro alcance mediante una simple búsqueda en la web. Esta riqueza de información nos permite utilizarlos de una manera más sistemática para darles un significado, un contexto e incluso realizar predicciones cada vez más complejas de los fenómenos que nos rodean. La taxonomía del campo de IA puede parecer compleja debido a la cantidad de términos utilizados. El campo de la IA es parte del campo de la informática. Por lo tanto, es importante comprender bien la superposición entre los diferentes dominios de la IA. Aprendizaje automático (Machine Learning) puede considerarse como un subdominio de la IA, que en sí mismo es un subdominio de la computación. Estas categorías a menudo son un poco imprecisas y algunas partes del aprendizaje automático podrían pertenecer al campo de la estadística. Por ello, el aprendizaje automático permite soluciones adaptativas de inteligencia artificial. Una definición concisa puede ser la siguiente: Sistemas que mejoran su desempeño para una tarea específica al utilizar -cada vez más- su experiencia o datos. Aprendizaje profundo (Deep Learning) es un subdominio del aprendizaje automático, que a su vez es un subdominio de la IA y un subdominio de la computación. Discutiremos el aprendizaje profundo con más detalle en el Capítulo 5. Por ahora, simplemente hay que tener en cuenta que la "profundidad" del aprendizaje profundo se refiere a la complejidad de un modelo matemático, y que el mayor poder de cómputo de las computadoras modernas ha permitido a los investigadores aumentar esta complejidada niveles que no solo parecen ser cuantitativamente diferentes, sino también cualitativamente. La ciencia de datos (Data Science) es un término genérico reciente (un término que abarca varias subdisciplinas) que comprende el aprendizaje de máquina y estadísticas, y algunos aspectos de la computación; incluyendo algoritmos, almacenamiento de datos y desarrollo de aplicaciones web. La ciencia de datos es también una disciplina práctica que requiere una comprensión del campo en el que se la aplica. Por ejemplo, en negocios o ciencia: su propósito (¿Cuál es el valor agregado?), hipótesis y restricciones básicas. Las soluciones de la ciencia de datos a menudo implican al menos una pizca de IA, pero –generalmente- no tanto como se podría esperar. Robótica significa construir y programar robots para que puedan trabajar en escenarios complejos y reales. En cierto modo, la robótica es el último desafío de la IA porque requiere una combinación de prácticamente todas las áreas de la IA. Por ejemplo: – Visión por computador y reconocimiento de voz para detectar el entorno; – Procesamiento de lenguaje natural, recuperación de la información y razonamiento bajo incertidumbre para el procesamiento de instrucciones, y la predicción de consecuencias derivadas de acciones potenciales; – Modelado cognitivo y computación afectiva para interactuar y trabajar con humanos. 7 1.2 LOS LÍMITES DE LA INTELIGENCIA ARTIFICIAL Alan Turing (1912-1954) fue un matemático y lógico inglés. Se le considera legítimamente el padre de las computadoras. Turing estaba fascinado por la inteligencia y el pensamiento, y la posibilidad de simularlos con la ayuda de máquinas. La contribución más importante de Turing a la IA es su juego de imitación, más tarde conocido como la Prueba de Turing. En esta prueba, un interrogador humano interactúa con dos jugadores, A y B, intercambiando mensajes escritos (como un chat). Si el interrogador no puede determinar qué jugador, A o B, es una computadora o un ser humano, se dice que la computadora pasa la prueba. El argumento es que, si una computadora es indistinguible de un humano en una conversación general en lenguaje natural, entonces debe haber alcanzado la inteligencia del nivel humano. El término Inteligencia Artificial se le atribuye a menudo a John McCarthy (1927-2011), a quien también se lo conoce como el padre de la IA; sin embargo, negó haber encontrado el término. No obstante, el influyó en su adopción, así como en el nombre de este campo emergente. Este término se estableció cuando fue elegido como el tema de un seminario de verano, conocido como la Conferencia de Dartmouth, organizado por McCarthy que se llevó a cabo en 1956 en el Dartmouth College en New Hampshire. En la propuesta para organizar el seminario, McCarthy continuó con el argumento de Turing sobre el cálculo automatizado. La propuesta contiene la siguiente afirmación crucial: "El estudio debe partir de la conjetura de que cualquier aspecto del aprendizaje o cualquier otra característica de la inteligencia puede, en principio, describirse con tal precisión que una máquina pueda simularla". Aunque la noción de inteligencia artificial ya existía en 1950, esta era una ciencia más teórica que práctica debido al poder de las computadoras de la época. Los avances de IA se popularizaron en 1980 cuando el programa Moor ganó un juego de Othello en un partido de seis juegos contra el campeón del mundo. En 1994, el programa Chinook ganó un campeonato mundial de damas chinas; y en 1997, el programa Deep Blue ganó un juego de ajedrez al campeón del mundo. No obstante, fue en el 2011 cuando la computadora de IBM llamada Watson ganó el juego Jeopardy contra los mejores jugadores de todos los tiempos. Estos apenas son algunos ejemplos porque hay demasiados avances para elaborar una lista completa en este libro. Aunque la inteligencia artificial es ampliamente utilizada y tiene un enorme potencial, es importante entender sus límites. En este momento, la inteligencia artificial no es de ninguna forma un sustituto del cerebro humano. Las técnicas utilizadas tienen muy poca libertad para extrapolar a partir de parámetros estrictos aprendidos previamente. Además, también existe la ausencia del sentido común que poseen los humanos para detectar respuestas aberrantes. En este sentido, aún es difícil diseñar y ajustar un algoritmo para que pueda aprender correctamente y luego predecir con una tasa de éxito del 90% y más. Sin un programa con un algoritmo de inteligencia artificial, una computadora no tiene la capacidad de aprender de una experiencia de vida, ni la capacidad de inferir los próximos pasos lógicos a seguir. 8 La inteligencia artificial con ejemplos. Consideremos los banners vistos en muchos sitios web. Estos se eligen según los modelos aprendidos mediante la extracción de datos del historial de navegación de millones de usuarios de Internet. Por ejemplo, si usted visita un sitio web de zapatos, se le ofrecerán anuncios de zapatos, cordones y lustradores. Lo que estos modelos no toman en cuenta es que ahora usted desea buscar una película para ver el fin de semana. Esto plantea la pregunta: ¿en qué parte del camino estamos para la conquista de la comprensión completa de un fenómeno informático y su predicción? Al leer las noticias, es posible que veas los términos IA "general" y "estrecha". ¿Qué significa esto? IA estrecha se refiere a la capacidad de realizar tareas específicas mientras que la IA general (IAG) se refiere a la capacidad de realizar cualquier tarea intelectual, similar a la mente humana. Los métodos de inteligencia artificial que utilizamos hoy en día son principalmente de IA estrecha. La inteligencia general sigue siendo ciencia ficción. De hecho, el ideal de IAG casi ha sido dejado atrás por los investigadores debido a la ausencia de progreso en los últimos 50 años, a pesar de todos sus esfuerzos. En cambio, la IA estrecha está progresando a pasos agigantados. Otra terminología presente en las noticias es el concepto de la IA "fuerte" y "débil". Se reduce a la distinción filosófica entre ser inteligente y actuar con inteligencia, como lo ha demostrado Searle. La idea de que la inteligencia es igual que el comportamiento inteligente es cuestionada. El contraargumento más conocido es la experiencia de la Cámara China de John Searle (http://www.iep.utm.edu/chineser/). Searle describe una experiencia en la que una persona que no sabe chino está encerrada en una habitación. Fuera de la habitación hay otra persona que puede deslizar notas escritas en chino hacia dentro de la habitación a través de una casilla de correo. La persona que está dentro recibe un gran manual donde puede encontrar instrucciones detalladas para responder las notas que recibe del exterior. Searle demuestra que, incluso si la persona que está fuera de la habitación tuvo la impresión de conversar con una persona que habla chino, la persona en el interior de la habitación no entendió chino. De manera similar, su argumento continúa: incluso si una máquina se comporta de manera inteligente, por ejemplo, al pasar la prueba de Turing, no significa que sea inteligente o que tenga la "mente" de un humano. La palabra "inteligente" también puede ser reemplazada por la palabra "consciente" y se puede elaborar un argumento similar. Por lo tanto, una IA fuerte sería equivalente a una "mente" que es verdaderamente inteligente y consciente de sí misma. La IA débil es lo que realmente existe: sistemas que muestran comportamientos inteligentes, a pesar de ser "simples" computadoras. ¿Es un coche autónomo inteligente? El argumento de la Cámara China va en contra de la idea de que la inteligencia se puede dividir en pequeñas instrucciones mecánicas que pueden automatizarse. Por ello, un automóvil autónomo es el ejemplo de un elemento de inteligencia (es decir, conducir un automóvil)que se puede automatizar. No obstante, el argumento de la Cámara China sugiere que este no es realmente un pensamiento inteligente. El sistema de inteligencia artificial en el automóvil no ve ni comprende su entorno, y no sabe conducir con prudencia como un ser humano que ve, entiende y sabe. Según Searle, esto significa que el comportamiento inteligente del sistema es fundamentalmente diferente de ser realmente inteligente. 9 Desde 1995, ha habido un gran progreso en varias tareas que requieren inteligencia artificial. A continuación, se muestra un resumen de los avances a partir de diciembre de 2017, es decir, al momento de escribir este libro: – La tasa de error para la clasificación automática de imágenes pasó de 28.5% a 2.5%; – La tasa de respuesta a preguntas abiertas (con datos de VQA 2.0) es 68% mientras que los humanos alcanzan el 82%; – La comprensión de las oraciones pasó de 85% en 1995 a 92% en 2017 (ver Treebank WSJ); – Responder a una pregunta que se formula dentro de un documento en particular ha aumentado del 60% en el 2015 al 79% en el 2017 (ver SQuAD v1.1); – El reconocimiento de voz de una conversación en un teléfono celular ahora es del 100% (Switchboard HUB5’00); – Resolver varios problemas con un solo algoritmo de aprendizaje automático es del 82% (vea los torneos SAT). Aunque todavía existe mucho camino por recorrer para comprender completamente estos fenómenos, se puede esperar un mayor progreso en los próximos años. 1.3 ¿CÓMO APRENDEN LAS MÁQUINAS? El científico informático Tom M. Mitchell define el aprendizaje automático como la capacidad de una máquina para aprender de sus experiencias y usarlas para que su desempeño futuro en experiencias similares mejore. Aunque esta definición es intuitiva, ignora por completo el proceso de traducir con precisión la experiencia en acciones futuras. A diferencia del cerebro humano, que naturalmente es capaz de aprender desde el nacimiento, deben aclararse las condiciones necesarias para el aprendizaje de una computadora. Por este motivo, si bien no es estrictamente necesario comprender las bases teóricas del aprendizaje humano, esta base hace posible comprender, distinguir e implementar algoritmos de aprendizaje automático. Independientemente de si el aprendiz es un humano o una máquina, el proceso de aprendizaje básico es similar. Este se puede dividir en cinco componentes interdependientes: – El almacenamiento de datos de aprendizaje utiliza la observación, la memoria y el recuerdo de hechos pasados para proporcionar una base objetiva para otro razonamiento; – La abstracción implica la identificación de un contexto de negocios y un objetivo a alcanzar o una pregunta a responder; – La comprensión de los datos y su preparación tiene como objetivo garantizar que los datos ofrecidos hayan sido procesados y organizados previo a su uso; – El modelado consiste en utilizar algoritmos de inteligencia artificial en un subconjunto de datos para derivar un modelo; 10 La inteligencia artificial con ejemplos. – La evaluación utiliza el modelo en otro subconjunto de datos y, por lo tanto, proporciona un mecanismo de retroalimentación para medir la utilidad del conocimiento adquirido e informar las posibles mejoras del modelo. El siguiente diagrama ilustra los pasos involucrados en un proceso típico de implementación de un modelo de inteligencia artificial para resolver un problema de negocios: Figura 1.1 Proceso iterativo de desarrollo de un modelo de inteligencia artificial. En los seres humanos, este proceso se produce inconscientemente. Recordamos, deducimos, inducimos e intuimos usando nuestros sentidos y nuestra mente. Debido a que este proceso está oculto, todas las diferencias en el algoritmo utilizado de una persona a otra se atribuyen a una vaga noción de subjetividad. Por otro lado, con las computadoras, cada paso de este proceso es más explícito, y dado que el proceso es transparente y controlado, el conocimiento aprendido puede ser examinado, transferido y utilizado para acciones futuras. ALMACENAMIENTO DE DATOS Todo aprendizaje debe comenzar con el uso de datos. Los seres humanos y las computadoras utilizan datos sin procesar para crear un razonamiento más avanzado. En los humanos, es el cerebro el que utiliza señales electroquímicas dentro de una red de células biológicas para almacenar, procesar y recordar las observaciones a corto y largo plazo. Las computadoras tienen 11 capacidades similares, ya que almacenan los datos en su disco duro y estos son procesados por una unidad central de procesamiento (es decir, un procesador). Para la función de recuperación a corto y largo plazo de sus observaciones, la computadora utiliza su memoria de acceso aleatorio (RAM) en combinación con la unidad central de procesamiento para cargarlas desde el disco duro. Esto puede parecer obvio, pero la capacidad de almacenar y recuperar datos por sí sola no es suficiente para el aprendizaje. Sin un nivel más alto de comprensión, el conocimiento se limita exclusivamente a recordar la observación sin la generación de acciones o nuevas observaciones. Los datos son simplemente unos y ceros en memoria. Estos son recuerdos almacenados sin un significado más amplio. Para comprender mejor los matices de este concepto, puede ser útil pensar en la última vez que estudió para un examen de matemáticas. La memoria fotográfica es de poca utilidad. Incluso si pudiera memorizar perfectamente todas las ecuaciones posibles, aprender de memoria es inútil, porque el profesor siempre puede presentar una figura que nunca ha visto. Obviamente, es una estrategia imposible debido a su complejidad. Alternativamente, un mejor enfoque es intentar analizar los datos y darles un significado. De esta manera, se puede comprender una amplia variedad de datos sin la necesidad de aprender de memoria todas las posibilidades. ABSTRACCIÓN Este trabajo de asignación de significado a los datos almacenados se produce durante el proceso de abstracción, en el que los datos sin procesar adquieren un significado más abstracto. Este tipo de conexión, digamos entre un objeto y su representación, es ilustrada por el pintor René Magritte: Figure 1.2 Abstracción de un objeto. Leyenda «Esto no es una rosa» La pintura representa una rosa con el título "Esto no es una rosa". El punto que Magritte quiere ilustrar aquí es que una representación de una rosa en un lienzo en un museo no es realmente una rosa. Sin embargo, a pesar de que el elemento no es real, todos miran la pintura y reconocen fácilmente el objeto. Esto sugiere que la mente del observador es capaz de conectar la imagen de una rosa con la idea de una rosa, recordando una rosa física que se podría sostener en la mano. Las conexiones abstractas como estas son la base de la representación del conocimiento y la 12 La inteligencia artificial con ejemplos. formación de estructuras lógicas que ayudan a transformar la información sensorial en bruto en una comprensión significativa y útil. Durante el proceso de representación del conocimiento de una máquina, la computadora resume los datos almacenados que están en bruto con la ayuda de un modelo; una descripción explícita de los modelos en sus datos y metadatos. Al igual que la rosa de Magritte, la representación del modelo toma vida más allá de los datos en bruto. Representa una idea más grande que la suma de sus partes. Hay diferentes tipos de modelos que se pueden utilizar para este efecto y ya estás familiarizado con algunos de ellos. Los ejemplos incluyen: – Conceptos básicos; – Ecuaciones matemáticas; – Diagramas relacionales tales como los árboles y las gráficas; – Reglas de decisión lógica como instrucciones «if then else»;– Agrupaciones de datos conocidos como clústers y redes semánticas. Por lo general, la elección del modelo no se deja a la máquina. En su lugar, la tarea de aprendizaje a realizar y los datos disponibles son los que dictaminan la selección de un modelo que se adapte mejor a la situación. Más adelante en este capítulo, en la sección "Identificar el algoritmo de los datos utilizados", analizaremos los métodos para elegir el tipo de técnica que mejor se adapte a los datos que se tiene. El proceso de desarrollar un modelo de predicción para un conjunto de datos se denomina entrenamiento. Cuando se ha construido el modelo, los datos se transforman en una forma abstracta que resume la información original. Es importante tener en cuenta que el modelo resultante no proporciona datos nuevos, sino que su uso da como resultado un nuevo conocimiento. ¿Cómo puede ser esto? La respuesta es que la imposición de una estructura asumida sobre los datos subyacentes solo permite comprender lo invisible, suponiendo un concepto de cómo los elementos de los datos se relacionan entre sí. Tomemos, por ejemplo, el descubrimiento de la gravedad. Al proporcionar las ecuaciones que reflejan el comportamiento de los datos en observación, Isaac Newton dedujo el concepto de la gravedad. Sin embargo, la fuerza que ahora conocemos como gravedad siempre estuvo presente. Simplemente, no fue reconocida hasta que Newton lo hizo como un concepto abstracto que relaciona ciertos datos con otros en particular, inventando la noción de gravedad (g) en un modelo matemático que explica las observaciones de los objetos que caen. 13 La pregunta Las observaciones El modelo resultante Figure 1.3 Pasando de la pregunta a las observaciones y a un modelo final La mayoría de los modelos no pueden conducir al desarrollo de teorías que empujan el pensamiento científico. No obstante, un modelo puede llevar al descubrimiento de relaciones sin precedentes entre sus datos. En uno de los proyectos de investigación del Prof. April, el uso de datos genéticos de pacientes y datos clínicos de ADVANCE, el estudio más grande de diabetes en Europa, se encontró varios genes que, cuando se combinan, son responsables de la aparición de la diabetes. Así que hemos dado un paso más allá para prevenir la diabetes. En otro proyecto, con el Grupo NetSen de Montreal, las compañías de piezas automotrices pueden predecir dónde aparecerá el próximo defecto de fabricación antes de que la pieza sea fabricada. Como se ha visto, estos dos modelos de predicción parecen no tener nada en común, pero tienen un modelo subyacente común. Presentar simplemente la información en un formato diferente puede dar lugar a la revelación de un nuevo modelo, el cual podría ser utilizado para ayudarnos a mejorar todo tipo de situaciones. GENERALIZACIÓN Este proceso de aprendizaje no está completo hasta que el aprendiz sea capaz de utilizar su conocimiento abstracto en acciones futuras. Sin embargo, de los innumerables modelos subyacentes que pudieran identificarse durante el proceso de abstracción y las innumerables formas de modelar estos modelos, algunos serán más útiles que otros. A menos que la producción de abstracciones sea limitada, el aprendiz no podrá utilizarlas. Se bloquearía donde comenzó, es decir, con mucha información, pero no información explotable. La generalización describe el proceso de transformación del conocimiento abstracto en una forma que se puede utilizar para acciones futuras, en datos similares -pero no idénticos- a los que ya se utilizaron para entrenar el modelo. La generalización es un proceso un tanto vago que es difícil de describir. Tradicionalmente, se ha imaginado como una búsqueda de evaluación en todos los modelos (es decir, teorías o inferencias) que podrían resumirse durante el entrenamiento. En otras palabras, si puede imaginar un conjunto que contenga todos los modelos posibles que podrían construirse a partir de sus datos, la generalización implica reducir este conjunto a un número manejable de los modelos más importantes. En general, el aprendiz es responsable de limitar los modelos que descubre a aquellos 14 La inteligencia artificial con ejemplos. que serán más relevantes para sus futuras tareas, ya que no es posible reducir el número de modelos examinándolos uno por uno y clasificándolos para su uso futuro. En su lugar, los algoritmos de aprendizaje automático, generalmente, utilizan accesos directos que reducen el espacio de búsqueda a mayor velocidad. Para este propósito, el algoritmo utilizará heurísticas, que son supuestos ilustrados para encontrar las inferencias más útiles. Las heurísticas son comúnmente utilizadas por los seres humanos para generalizar de forma rápida la experiencia a nuevos escenarios. Si usted a través de su instinto toma una decisión rápida antes de evaluar completamente sus circunstancias, usted está utilizando intuitivamente la heurística mental. La increíble capacidad humana para tomar decisiones rápidas a menudo no se basa en una lógica explícita como la informática, sino en heurísticas guiadas por las emociones. A veces, esto lleva a conclusiones ilógicas. Por ejemplo, las personas expresan -cada vez más- su miedo a viajar en avión en comparación a viajar en automóvil, aunque los automóviles son estadísticamente más peligrosos que los aviones. Esta reacción puede explicarse por la heurística de disponibilidad, que es la tendencia de las personas a estimar la probabilidad de un evento por la facilidad con la que recuerdan ejemplos de estos. Los accidentes relacionados con el transporte aéreo son altamente publicitados. Al ser eventos traumáticos, es probable que se recuerden con mucha facilidad, mientras que los accidentes automovilísticos apenas merecen una mención en el periódico. El problema de las heurísticas mal aplicadas no se limita a los seres humanos. La heurística empleada por los algoritmos de inteligencia artificial a veces también conduce a conclusiones erróneas. Se dice que un algoritmo tiene un sesgo si las conclusiones son sistemáticamente erróneas o erróneas de una manera predecible. Por ejemplo, supongamos que un algoritmo de aprendizaje automático aprende a identificar caras cuando encuentra dos círculos negros, que representan ojos, colocados sobre una línea recta que representa una boca. El algoritmo puede tener problemas de detección o estar sesgado para las caras que no se ajustan a su modelo. Por ejemplo, las caras con gafas o mirando a diferentes lados pueden no ser detectadas por este algoritmo. Del mismo modo, el algoritmo podría estar inclinado hacia caras con ciertos tonos de piel, caras con forma distinta u otras características que no son consistentes con su comprensión del mundo. En la actualidad, la palabra sesgo tiene connotaciones negativas. Con frecuencia, varios medios de comunicación afirman informar los hechos de manera objetiva, libres de prejuicios y sin ser movidos por la emoción. Sin embargo, piense por un momento en la posibilidad de que un pequeño sesgo pueda ser útil. Sin la presencia de un sesgo, podría ser difícil decidir entre varias opciones, cada una con distintas fortalezas y debilidades. De hecho, estudios recientes en el campo de la psicología han sugerido que las personas que nacen con daños en las partes del cerebro responsables de las emociones son ineficaces en la toma de decisiones y podrían pasar horas debatiendo sobre decisiones simples como, por ejemplo, el color de una camisa o la selección de un almuerzo. Paradójicamente, el sesgo es lo que oculta cierta información, pero al mismo tiempo nos permite utilizar otra información para actuar. Así mismo, los algoritmos de aprendizaje automático eligen una forma de entender un conjuntode datos entre las innumerables alternativas que existen. 15 EVALUACIÓN Hemos visto que el sesgo es un mal necesario asociado con los procesos de abstracción y generalización inherentes a cualquier tarea de aprendizaje. Ante la presencia de estas posibilidades ilimitadas, cada algoritmo de aprendizaje debe estar sesgado de una manera particular. Por lo tanto, cada uno de ellos tiene debilidades y no hay ningún algoritmo de aprendizaje único para cada regla en todas las situaciones. El último paso en el proceso de generalización es evaluar o medir el éxito del algoritmo de aprendizaje a pesar de sus prejuicios, y utilizar esta información para reportar si su sesgo debe cambiarse a través de entrenamiento adicional. Generalmente, la evaluación se realiza después de haber entrenado el modelo con un conjunto de datos de aprendizaje inicial. Luego, el modelo se evalúa en otro conjunto de datos de prueba para juzgar hasta qué punto este aprendizaje se puede generalizar para nuevos datos. Cabe señalar que es extremadamente raro que un modelo se generalice de forma perfecta a todos los casos imprevistos. En algunos casos, los modelos no se generalizan de esta forma debido a la presencia de ruido, un término que describe variaciones inexplicables en los datos. Los datos ruidosos son causados por eventos aparentemente aleatorios, tales como: – Un error de medición por la imprecisión de los sensores, los cuales registran variaciones de los valores de lecturas. Es decir, valores mayores o menores para el mismo valor detectado; – Problemas con sujetos humanos. Por ejemplo, con los encuestados que respondieron al azar a las preguntas de una encuesta para terminar rápido; – Problemas de calidad de los datos, incluidos los valores faltantes, nulos, truncados, codificados incorrectamente o dañados; – La presencia de fenómenos complejos o poco comprendidos que tienen un impacto en los datos de una manera que no parece ser sistemática. Tratar de modelar el ruido es la raíz de un problema de sobreajuste (del inglés «overfitting»). Dado que la mayoría de los datos ruidosos son inexplicables por definición, intentar explicar el ruido llevará a conclusiones erróneas que no generalizarán bien los nuevos casos presentados al algoritmo. Por lo general, los esfuerzos para explicar el ruido darán como resultado modelos más complejos que no logran encontrar el modelo verdadero que el algoritmo de aprendizaje está tratando de identificar. El buen funcionamiento del algoritmo durante el entrenamiento, pero no durante la evaluación, nos indica que está sobreentrenado por el conjunto de datos de entrenamiento, ya que no generaliza de forma correcta el conjunto de datos de prueba. Las soluciones a los problemas de sobreentrenamiento son específicas para los enfoques particulares de aprendizaje automático. Por el momento, en un libro introductorio sobre aprendizaje automático, el punto importante es estar al tanto del problema y usar técnicas simples para tratar estos casos. 16 La inteligencia artificial con ejemplos. 1.4 LA INTELIGENCIA ARTIFICIAL EN LA PRÁCTICA Hasta ahora nos hemos centrado en cómo funciona la inteligencia artificial en teoría. Para aplicar el proceso de aprendizaje en tareas reales, usaremos un proceso de cinco pasos. Cualquier algoritmo de inteligencia artificial puede ser desplegado ampliamente siguiendo los pasos de la Figura 1.1 para cualquier tarea en cuestión. 1. Recolección de datos: Esta etapa implica la obtención de los materiales de aprendizaje que utiliza un algoritmo para generar conocimiento. En la mayoría de los casos, los datos son combinados en una sola fuente; por ejemplo, un archivo de texto, una hoja de cálculo o una base de datos. 2. Exploración y preparación de los datos: La calidad de cualquier modelo de aprendizaje automático se basa, en gran medida, en la calidad de los datos de entrada. Por lo tanto, es importante conocer más acerca de los datos y sus variaciones durante una actividad denominada minería de datos. Es común realizar actividades adicionales con el fin de preparar los datos para el proceso de aprendizaje; lo cual incluye eliminar, agregar, corregir y limpiar los datos de entrada para ajustarse a lo que el algoritmo espera recibir. 3. Diseño del modelo: Una vez que los datos han sido preparados para el análisis, es probable que usted tenga una idea de lo que puede aprender de ellos. De hecho, la selección de un algoritmo adecuado estará ligada a la tarea específica que su sistema inteligente debe realizar. Luego, el algoritmo representará los datos como un modelo mediante la comprensión de sus parámetros de operación. Por lo tanto, lo verdaderamente importante es conocer el comportamiento de estos parámetros para obtener buenos resultados. 4. Evaluación del modelo: Dado que cada modelo de aprendizaje automático conduce a una solución sesgada para el problema de aprendizaje, es importante evaluar qué tan bien el algoritmo está aprendiendo de su experiencia. Por ello, debemos evaluar la exactitud del modelo resultante en un conjunto de datos de prueba y obtener medidas de rendimiento específicas para la aplicación prevista. 5. Modelo mejorado: Si se requiere mejorar el rendimiento del modelo, se deben utilizar estrategias más avanzadas. La primera es ajustar los parámetros del modelo. También se pueden revisar las estadísticas de evaluación del modelo y clasificar los parámetros según su importancia para eliminar aquellos que impiden o no contribuyen al aprendizaje. Otra alternativa es complementar los datos existentes con datos adicionales o realizar un entrenamiento extra. En algunos casos, es necesario cambiar a otro tipo de modelo. Una vez que se completan estos pasos, si el modelo parece estar funcionando correctamente, este se puede utilizar para la tarea prevista. Por ejemplo, usted puede usar su modelo para predecir, realizar proyecciones de datos financieros, generar información útil en marketing o automatizar 17 tareas como la entrega por correo electrónico. Los éxitos y fracasos del modelo implementado pueden incluso proporcionar datos adicionales para el entrenamiento futuro de la próxima versión de su modelo. TIPOS DE DATOS DE ENTRADA La práctica del aprendizaje automático implica hacer coincidir las características de los datos de entrada. Por lo tanto, antes de aplicar el aprendizaje de máquina a problemas del mundo real, es importante entender la terminología que distingue a los conjuntos de datos de entrada. El término "unidad de observación" se utiliza para describir la entidad más pequeña de interés de un estudio, la cual tiene propiedades medibles. En general, la unidad de observación viene en forma de personas, objetos, cosas, transacciones, puntos de temporalidad, regiones geográficas o medidas. A veces, las unidades de observación se combinan para formar unidades, tales como años-persona, lo que define los casos donde la misma persona es seguida durante varios años. Cada año-persona corresponde a los datos de una persona en un año. Los conjuntos de datos que almacenan las unidades de observación y sus propiedades pueden ser imaginados como conjuntos que comprenden: – Muestras: Instancias de la unidad de observación para las cuales se han registrado propiedades. – Características: Propiedades registradas o atributos de ejemplos que pueden ser útiles para el aprendizaje automático. Es más fácil entender las características y ejemplos a través de casos concretos. Para crear un algoritmo de aprendizaje que identifique un correo no deseado, la unidad de observación puede ser el conjunto de mensajes electrónicos. Los ejemplos usados para el aprendizaje serían mensajes específicos y las características pueden consistir en palabras claves utilizadas en ellos. Para un algoritmo de detección de cáncer, la unidad de observación puede ser elpaciente. Los ejemplos pueden incluir una muestra aleatoria de pacientes con cáncer y las características pueden ser los marcadores genéticos de las células que se han biopsiado, así como el peso, la dieta, el tamaño y la presión arterial del paciente. Aunque los ejemplos y las características no tienen que recopilarse en una forma específica, generalmente se lo hace en una matriz; lo que significa que cada registro de datos posee las mismas características. La siguiente hoja de Excel proporciona un conjunto de datos en formato de matriz. Cada fila de la hoja de cálculo es un ejemplo y cada columna es una característica. Aquí, las filas muestran ejemplos de vino, mientras que las columnas presentan varias características por cada año como el precio, la cantidad de lluvia que cayó en invierno y verano en esa región, la población de Francia ese año, la edad de la botella y la temperatura promedio en la estación de crecimiento (AGST). Los datos en una matriz es la forma más utilizada para el aprendizaje automático. Sin embargo, existen otras formas que, a veces, se utilizan en casos especiales. 18 La inteligencia artificial con ejemplos. Las características también vienen en varias formas. Si una característica es medida en números, será numérica. Alternativamente, si una característica es un atributo compuesto de un conjunto de categorías, la función se llama nominal o categórica. Un caso especial de las variables categóricas se llama ordinal, que denota una variable nominal con categorías que corresponden a una lista ordenada. Algunos ejemplos de variables ordinales incluyen el tamaño de la ropa (pequeñas, medianas y grandes) o una medida de la satisfacción del cliente en una escala que va desde "insatisfecho" a "muy satisfecho". Es importante tomar en cuenta lo que las entidades representan, porque el tipo y la cantidad de entidades de su conjunto de datos lo ayudarán a determinar un algoritmo de aprendizaje automático apropiado para el propósito perseguido. 1.5 Los tipos de algoritmos de la inteligencia artificial Los algoritmos de aprendizaje automático se dividen en categorías según su finalidad, por ejemplo: predicción digital; clasificación; reagrupamiento; investigación y muchos otros. Muchos problemas pueden ser representados como problemas de investigación. Entonces, se comienza formulando los tipos de alternativas y sus consecuencias. Comprender los tipos de algoritmos de aprendizaje es el primer paso hacia la utilización de los datos para alcanzar la acción deseada. Un modelo predictivo se usa para tareas que involucran, como su nombre lo indica, la predicción de un valor utilizando otros valores en el conjunto de datos. El algoritmo de aprendizaje intenta descubrir y modelar la relación entre la característica objetivo a predecir (llamada variable dependiente) y las otras características (llamadas variables independientes). A pesar del uso común de la palabra "predicción" para denotar la previsión, los modelos de predicción no necesariamente siempre tienen que prever los acontecimientos futuros. Por ejemplo, un modelo predictivo puede usarse para predecir eventos pasados, como la fecha en que se concibió un bebé utilizando los niveles actuales de hormonas maternas. Los modelos predictivos también se pueden usar en tiempo real para controlar los semáforos durante las horas pico. 19 Debido a que los modelos predictivos reciben instrucciones claras sobre lo que deben aprender y cómo deben hacerlo, el proceso de entrenamiento se conoce como aprendizaje supervisado. La supervisión no se refiere a la intervención humana, sino más bien a que los valores esperados estén presentes en el conjunto de datos y permitan al aprendiz conocer en qué medida aprendió la tarea deseada. De manera más formal, podemos decir que, dado un conjunto de datos, un algoritmo de aprendizaje supervisado trata de optimizar una función (el modelo) para encontrar la combinación de los valores de las características de entrada que generan el valor esperado en la salida. Los modelos de aprendizaje supervisado son ampliamente utilizados. El proceso de aprendizaje supervisado toma un conjunto de datos, lo divide en un conjunto de entrenamiento y otro de prueba; utiliza los datos de entrenamiento para desarrollar un modelo y evalúa el rendimiento del modelo obtenido con los datos de prueba. Se dividen en varios tipos: 1) Clasificación: Estos modelos se utilizan para describir los datos en categorías. Por ejemplo, las tiendas que venden más de 10 unidades por semana pueden considerarse rentables, mientras que las que venden menos de 10 unidades serían no rentables. Es fácil pensar en los usos potenciales de un clasificador. Por ejemplo, se puede predecir si: – Un mensaje electrónico es un spam; – Una persona tiene cáncer; – Un equipo de fútbol va a ganar o perder; – Una persona entrará en mora por un préstamo. En la clasificación, la característica objetivo a prever es una característica categórica, conocida como clase, que se divide en categorías denominadas niveles. Una clase puede tener dos o más niveles, y los niveles pueden ser ordinales o no. Debido a que la clasificación es ampliamente utilizada en el aprendizaje automático, hay muchos tipos de algoritmos de clasificación, con fortalezas y debilidades adecuadas para diferentes datos de entrada. Por ejemplo, la técnica de regresión logística permite separar los datos en clases, como se muestra en la figura: Dos clases Tres clases: 20 La inteligencia artificial con ejemplos. La técnica de máquina de soporte vectorial también permite la clasificación: Los algoritmos por instancias forman también parte de los modelos de clasificación. Estos métodos construyen una base de datos de ejemplos proporcionados y comparan los nuevos datos con ese punto de referencia, usando una medida de similaridad para encontrar la mejor correspondencia y realizar una predicción. Entre ellos tenemos: las fichas de autoevaluación de adaptación, los K vecinos más cercanos, el aprendizaje de vectores cuantificados y el aprendizaje de pesos localizados. Otro tipo de algoritmo para el modelo de clasificación es el algoritmo de árboles de decisión. Este algoritmo construye un modelo de decisión sobre la base de los valores reales de los atributos en los datos. Un registro dado atraviesa el árbol de decisión. En cada ramificación hay una decisión basada en características. El registro baja por el árbol de decisión hasta que una terminación es alcanzada, entonces una categoría es asignada. Los árboles de decisión se forman a partir de los datos de clasificación y regresión. Entre los modelos de clasificación tenemos a los modelos bayesianos, basados en estadísticas de cada una de las características de un registro para predecir su clase. Se pueden utilizar tanto en modo supervisado o no supervisado. En general, el clasificador de Bayes (Naive) es versátil, simple de implementar y da buenos resultados para la mayoría de las aplicaciones de clasificación (por ejemplo: spam y detección de lenguaje y sentimientos). Entre los algoritmos están: Naive Bayes, Naive Bayes Gaussian, Naive Bayes Multi-nodal, One-Dependent Estimator y la red Bayesiana. 21 2) Regresión: La regresión tiene como objetivo modelar la relación entre las variables que se refinan iterativamente, utilizando una medida del error en las predicciones realizadas por el modelo. Estos modelos son muy comunes y usted los ha visto en sus clases de matemáticas. Se utilizan principalmente para visualizar la evolución de los datos en relación con una variablede referencia (por ejemplo, el tiempo) y tratar de predecir su valor en el futuro. Por lo tanto, los aprendices supervisados también son útiles para predecir datos numéricos como el salario o los precios de la vivienda en su vecindario. Para predecir tales valores, una forma común es proporcionar datos de entrada para modelos de regresión lineal. Aunque los modelos de regresión no son el único tipo de modelos numéricos, son los más utilizados. Estos métodos resultan de gran importancia para pronosticar porque cuantifican con precisión la asociación entre las entradas y los valores esperados, incluyendo la magnitud y la incertidumbre de la relación. Hay varios tipos de algoritmos de regresión como: regresión lineal, regresión logística MLR, regresión por etapas, regresión multivariada, red elástica, LASSo, entre otros. Otra familia de algoritmos es la familia de las redes neuronales. Estos son algoritmos de “coincidencia de patrones” comúnmente utilizados para problemas de regresión y clasificación. Los nuevos métodos de aprendizaje de redes neuronales profundas son una actualización de este concepto. Entre las técnicas conocidas se incluyen: el perceptrón, propagación hacia atrás, red Hopfield, máquina Boltzmann, redes convolucionales y aprendizaje profundo. 22 La inteligencia artificial con ejemplos. Los algoritmos de reglas de asociación Eclat y Apriori también son versátiles. Estos extraen reglas que explican mejor las relaciones observadas entre las variables en los datos. 3) Modelos descriptivos: Estos modelos se utilizan para tareas resultantes de la información obtenida al resumir los datos de una manera nueva e interesante. A diferencia de los modelos predictivos que predicen un objetivo de interés, en un modelo descriptivo ninguna característica es más importante que otra. De hecho, como no hay un objetivo para aprender, el proceso de formar un modelo descriptivo se llama aprendizaje no supervisado. Puede ser más difícil identificar las aplicaciones para modelos descriptivos. Después de todo, ¿para qué sirve un modelo que no tiene nada que ver con algo en particular? En resumen, se utilizan regularmente para la minería de datos. Por ejemplo, la tarea de modelado descriptivo llamada búsqueda de modelo se usa para identificar asociaciones útiles en los datos. El descubrimiento de patrones es requerido a menudo para el análisis de la cesta del consumidor en los datos de compras transaccionales de venta al por menor. Aquí, el objetivo es identificar juntos los artículos comprados con frecuencia, de modo que la información aprendida se pueda utilizar para ajustar las tácticas de marketing y ubicar los productos en la tienda en consecuencia. Por ejemplo, si un minorista se entera de que los pollos asados generalmente se venden al mismo tiempo que la salsa marrón, el minorista puede colocar ambos artículos más cerca en la tienda o lanzar una promoción para venderlos juntos. La tarea de modelado descriptivo que consiste en dividir un conjunto de datos en grupos homogéneos se denomina agrupación en clases (clustering en inglés). Esta técnica a veces se usa para el análisis de segmentación que identifica grupos de personas con comportamiento o información demográfica similar, de modo que las campañas publicitarias se puedan adaptar a audiencias específicas. Aunque el algoritmo es capaz de identificar grupos, se necesita la intervención humana para interpretarlos. Por ejemplo, el equipo de marketing necesitará comprender las diferencias entre los grupos de compradores en una tienda de comestibles para crear una promoción que mejor se adapte a cada uno de ellos. Finalmente, una clase de algoritmos de aprendizaje automático son llamados metaaprendices o de aprendizaje grupal cuyo objetivo es aprender de manera más efectiva. 23 Un algoritmo de metaaprendizaje utiliza el resultado de una serie de modelos de aprendizaje para realizar un aprendizaje adicional. Esto puede ser beneficioso para problemas muy complejos o cuando el rendimiento de un modelo es más bajo de lo esperado y el resultado producido no es útil. Los más populares son: Bagging, Boosting y Random Forest para usar clasificadores similares; y Stacking y Ensembles para el uso de diferentes clasificadores. 1.6 IDENTIFICAR EL ALGORITMO PARA LOS DATOS UTILIZADOS La siguiente tabla enumera los tipos de algoritmos de aprendizaje automático descritos en este libro. Un libro introductorio solo cubre una parte del conjunto de algoritmos de aprendizaje automático disponibles. El aprendizaje de los métodos elegidos aquí brinda una base suficiente para tener una visión general y comprender cualquier otro método que pueda encontrar en el futuro. 24 La inteligencia artificial con ejemplos. ¿Cómo elegir el algoritmo correcto? Para comenzar con la aplicación del aprendizaje automático en un proyecto real, se debe determinar cuál de las cuatro tareas de aprendizaje representa su proyecto: clasificación, predicción, detección de patrones o agrupación. La tarea impulsará la elección del algoritmo. Por ejemplo, si realiza la detección de modelos, probablemente utilizará reglas de asociación. De manera similar, un problema de clúster empleará el algoritmo k- means, y la predicción numérica elegirá al algoritmo de regresión o árboles de regresión. En la clasificación, se necesita un poco más de reflexión para hacer coincidir un problema de aprendizaje con un clasificador apropiado. En estos casos, es útil considerar varias distinciones entre algoritmos, distinciones que serán visibles solo al estudiar cada uno de los clasificadores en profundidad. Por ejemplo, dentro de los problemas de clasificación, los árboles de decisión proporcionan modelos que son fáciles de entender, mientras que los modelos de redes neuronales son notoriamente difíciles de interpretar. Si está diseñando un modelo de calificación crediticia, esta puede ser una distinción importante; porque la ley a menudo exige que se notifique al demandante las razones por las cuales se le rechazó el préstamo. Incluso si la red neuronal es más capaz que un ser humano en predecir problemas de crédito, si sus predicciones no pueden ser explicadas, entonces es inútil para esta aplicación. Para ayudar en la selección del algoritmo, las fortalezas y las debilidades de cada algoritmo serán presentadas, aunque en muchos casos la elección del algoritmo es arbitraria. Cuando esto sea cierto, no dude en utilizar el algoritmo con el que se sienta más cómodo. Otras veces, cuando la precisión de predicción es baja, usted puede probar varios algoritmos y elegir cuál es el mejor, o utilizar un algoritmo establecido que combine varios aprendices diferentes, aprovechando las fortalezas de cada uno o el aprendizaje profundo que ahora da buenos resultados en varios escenarios. 1.7 EL APRENDIZAJE DE CONCEPTOS UTILIZANDO EL LENGUAJE R Muchos de los algoritmos necesarios para el aprendizaje automático no forman parte de la instalación básica del software libre R. Estos algoritmos están disponibles a través de una gran comunidad de expertos que han compartido su trabajo libremente. Estos deben ser instalados manualmente durante cada ejercicio. Debido al estado del software libre de R, no hay cargo adicional por esta función. Una colección de funciones R que pueden compartirse entre usuarios se denomina paquete. Existen paquetes gratuitos para cada uno de los algoritmos de inteligencia artificial cubiertos en este libro. De hecho, este libro cubre solo una pequeña parte de todos los paquetes de aprendizaje automático de R. Si está interesado en conocer el alcance de los paquetes R, puede ver la lista en 25 Complete Network Archive R (CRAN), una colección de sitios web y FTP ubicadosen todo el mundo para proporcionar las versiones más recientes de R y los nuevos paquetes. Puede descargar el software R en la dirección siguiente http://www.rstudio El enlace "PACKAGES", en el lado izquierdo de la página, lo llevará a una página donde puede buscar paquetes en orden alfabético u ordenados por fecha de publicación. Al momento de escribir este artículo, un total de 6,779 paquetes estaban disponibles y progresando rápidamente. El enlace "Task Views" en el lado izquierdo de la página CRAN también proporciona una lista organizada de paquetes según el tema. El enlace para inteligencia artificial, que enumera los paquetes cubiertos en este libro (y muchos más), está disponible en http://cran.r- project.org/web/views/MachineLearning.html. Considere que los ejemplos en este libro no son software en producción y no se han probado exhaustivamente a gran escala. Se proporcionan "tal cual" y se entregan sin ningún tipo de garantía. http://cran.r-project.org/web/views/MachineLearning.html http://cran.r-project.org/web/views/MachineLearning.html 26 La inteligencia artificial con ejemplos. 2 Introducción al lenguaje R 2.1 INTRODUCCIÓN Un componente clave de cualquier proyecto de aprendizaje automático consiste en gestionar y comprender los datos. Si bien no es tan gratificante como construir y desplegar modelos, etapas en las que comienza a ver los frutos de su trabajo, es imprudente ignorar este importante trabajo preparatorio. La calidad de un algoritmo de aprendizaje está asociado a la calidad de los datos de entrada; y en muchos casos, los datos de entrada son complejos, están desordenados y provienen de múltiples fuentes y con diferentes formatos. Debido a esa complejidad, mucho esfuerzo es dedicado a la preparación y exploración de datos. Durante los ejercicios que siguen, es importante que intente encontrar la respuesta por sí mismo a las preguntas que puedan surgir. Por ejemplo, para conocer detalles sobre la sintaxis de la función rnorm, puede escribir > ?rnorm o > help.search ("rnorm") para obtener más información. Si desea obtener los parámetros utilizados por una función, escriba > args ("rnorm") y le mostrará una lista de ellos. Utilice también Google, Stackoverflow (con etiqueta "[R]") y Crossvalidated que son sitios donde puede encontrar respuestas a un problema. También puede leer la documentación de R, pues es muy rica en contenido. Cuando reciba un código de error, escriba este error en Google para obtener ayuda respecto al problema. Por ejemplo, escriba el comando >cor (airquality) en R y emite un código del tipo de error: Error en cor (airquality): faltan las observaciones en cov / cor. Si tiene preguntas más generales sobre R, escriba su pregunta en Google seguida por el paquete R para obtener mejores resultados. En cuanto a las búsquedas a través de Google, las preguntas sobre ciencia de datos deben estar calificadas porque su terminología varía según el campo de investigación. Por ejemplo, si está buscando respuestas a preguntas para R en las siguientes áreas, agregue el término que lo ayudará a orientar mejor su búsqueda: – Bioestadística o Bioinformática para datos médicos; – Data Science (Ciencia de datos) para análisis de datos en la Web; – Machine Learning (Aprendizaje automático) para la informática de datos / visión por ordenador; 27 – Natural language processing (Procesamiento de lenguaje natural) para datos textuales; – Signal processing (Procesamiento de señales) para datos científicos y eléctricos; – Business analytics (Análisis empresarial) para datos de negocios de clientes; – Econometría para datos económicos; – Fintech (Tecnología financiera) para datos financieros; – Y muchos otros… Tenga en cuenta que R tiene algunas debilidades y, en especial, en relación con el procesamiento de grandes cantidades de datos. El software R posee dos limitaciones principales: 1- Independientemente de la cantidad de núcleos en su CPU, R solo usa un núcleo en una versión predeterminada; 2- R lee los datos en la memoria por defecto. La arquitectura del sistema operativo y el sistema solo pueden acceder a 4 GB de memoria física en un sistema de 32 bits, pero normalmente R arroja una excepción a 2 GB. Por lo tanto, R es una herramienta interesante de exploración y creación de prototipos, pero no está diseñada para escalar sus algoritmos para grandes cantidades de datos. El último capítulo de este libro presentará una herramienta para trabajar con datos masivos. Para su información, los ejemplos de este libro se han ejecutado en la versión R: versión 3.4.2 (2017- 09-28) -- "Short Summer" Tome en cuenta que el uso puede variar según la instalación de R. Cámbielo en los ejemplos según sea necesario. Yo utilizo el que funciona con R en Mac OS. 28 La inteligencia artificial con ejemplos. 2.2 LAS ESTRUCTURAS DE DATOS DE R Existen muchos tipos de estructuras de datos en lenguajes de programación, cada una con fortalezas y debilidades adecuadas para tareas particulares. Dado que R es un lenguaje de programación muy utilizado para el análisis de datos estadísticos, las estructuras de datos que utiliza se han diseñado teniendo en cuenta este tipo de trabajo. Las estructuras de datos R utilizadas con mayor frecuencia en el aprendizaje automático son vectores, factores, listas, tablas y matrices, y data frames. Dado que cada una se adapta a una tarea específica de administración de datos, es importante comprender cómo estas van a interactuar en su proyecto R. En las siguientes secciones, examinaremos sus similitudes y diferencias. DESCARGAR DATOS DE LA WEB Antes de descargar un archivo, es necesario conocer dos cosas: 1) ¿En qué directorio de trabajo estoy?, y 2) ¿Ya existe este archivo? ¿En qué directorio está? El comando para ver en qué directorio está en cualquier momento es > getwd (). Aquí está la respuesta en mi iMac. Estoy en este directorio de trabajo alainapril y se obtiene así: > getwd () [1] "/ Usuarios / alainapril" Ubíquese en el directorio de trabajo usando el comando > setwd ("su directorio de trabajo"). Abajo la respuesta de mi iMac. Ahora estoy en el directorio donde trabajaré con mis ejemplos: > setwd () [1] "/Users/alainapril" Para obtener un archivo de la Web, se debe crear una variable que lo contenga y luego descargarlo. Primero, escriba la dirección web del archivo en la variable fileUrl. > fileUrl = " https: //data.b altimorecity.gov/api/views/dz54- 2aru / rows.csv? AccessType = DOWNLOAD " Cuando todo esté bien, R vuelve a mostrar el símbolo “>”. Para comprobar que esta variable contiene la dirección web del archivo a descargar, utilice el comando: 29 > fileUrl [1] "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD" Para descargar el archivo, ejecute el comando > download.file () > download.file (fileUrl, destfile = "cameras.csv", method = "curl") y la respuesta es: % Total % Received % Xferd Average Speed Time Time Time Current 100 9443 0 9443 0 0 19736 0 --:--:-- --:--:-- --:--:-- 19713- 0 Si desea verificar que este archivo se descargó de forma exitosa, use el comando > list.files () para visualizar los archivos que están en su directorio. Luego de ejecutar el comando, podrá ver el archivo cameras.csv CARGAR DATOS LOCALES EN EL ENTORNO DE TRABAJO R Perfecto, tenemos datos y ahora queremos cargarlos en una estructura de datos con el fin de explotarlos. Utilizar el comando > read.table () es la forma más popular de cargar datos. En el caso de archivos muy grandes habrá límites porque los datos se leen en la memoria RAM. Este no es el caso de nuestro archivo cameras.csv, así que si utiliza el comando >? read.table (), aparece una ventana de ayuda para informarle sobre su uso y la configuración. Los parámetros por conocerson header y sep. Header indica a R si el archivo tiene una línea de encabezado que debe ignorarse, puesto que sirve para identificar cada columna de datos, y sep que muestra qué tipo de separador es utilizado para separar datos en el archivo. Tenga en cuenta que la función > read.csv puede resultar útil cuando el archivo tiene un encabezado y usa la coma como separador. En el archivo que acabamos de descargar, se usan comas para separar los datos y hay una línea de encabezado. Así que podemos cargar los datos en R usando el comando: > cameraData = read.table ( " cameras.csv " , sep = " , " , header = TRUE) Nota: Otro método popular para ir más rápido y cargar datos directamente desde la Web es: cameraData = read.table ( file = fileUrl, sep = " , " , header = TRUE, na.strings = "") Echemos un vistazo a las primeras seis líneas de este archivo con el comando: > head( cameraData) 30 La inteligencia artificial con ejemplos. address direction street crossStreet intersection Location.1 1 S CATON AVE y BENSON AVE B / N Caton Ave Benson Ave Caton Ave y Benson Ave (39.2693779962, -76.6688185297) 2 S CATON AVE y BENSON AVE S / B Caton Ave Benson Caton Ave Ave y Benson Ave (39.2693157898, -76.6689698176) 3 WILKENS AVE Y PINE HEIGHTS AVE B Wilkens Ave Pine Heights Wilkens Ave y Pine Heights (39.2720252302, -76.676960806) 4 ALAMEDA & E 33RD ST S / B The Alameda 33rd St The Alameda & 33rd St (39.3285013141, - 76.5953545714) 5 E 33RD ST & THE ALAMEDA E / B 33rd The Alameda E 33rd & The Alameda (39.3283410623, -76.5953594625) 6 ERDMAN AVE & N MACON ST E / B Erdman Macon St Erdman & Macon St (39.3068045671, -76.5593167803) > Considere que en esta función usted puede dar indicaciones sobre las particularidades de su archivo de entrada. Por ejemplo: el parámetro quote indica si hay un carácter que encierra los valores en el archivo, el parámetro na.strings permite conocer si faltan valores, y nrows es útil si desea obtener solo un cierto número de líneas. El archivo contiene datos de ubicación de cámaras de vigilancia en intersecciones de calles en la ciudad de Baltimore. Puede encontrar más información sobre la estructura de estos datos en la dirección web: https://dev.socrata.com/foundry/data.baltimorecity.gov/bi5d-g8q2 También hay más formas de cargar todo tipo de datos en R, no solo desde una dirección web. Fuente de datos Función R a utilizar Excel read.xlsx, read.xlsx2 y el paquete XLConnect XML xmlTreeParse (Xpath / node, //node, node[@attr-name]) JSON fromJSON à Install.packages("jsonlite",repos=http://cran.r- project.org) MySQL RMySQL, Bd=dbConnect (MySQL(), user= xx, host=yy) WebScrarpping http://cran.r-project.org/ http://cran.r-project.org/ 31 Api’s INICIACIÓN A LA CONSOLA R Al iniciar R, aparece una ventana (la consola). El símbolo “>” indica que R está listo para ejecutar cualquier línea de comando. Escriba el comando > 8*6 y obtendrá un resultado. Ahora intente > 2 ^ 16 que le dará la respuesta 65536. Si escribe 2 ^ y pulsa Enter, habrá un + que le indica que debe completar el comando. De lo contrario, presione Esc para salir de R. Las flechas en la parte superior y en la parte inferior se utilizan para regresar a un comando anterior. Vuelva a 8 * 6 y cambie el 6 por el 10; ahora da un resultado de 80. También tiene acceso a las funciones de R. Por ejemplo, a la función > sqrt (2), la cual obtiene la raíz cuadrada. Usted puede aprender más sobre los parámetros de una función consultando la ayuda, al añadir el signo de interrogación > ?sqrt Como en todos los lenguajes de programación, es posible crear variables. Escriba > SquareRoot2 = sqrt (2), el resultado estará ahora en >SquareRoot2. El comando > ls () muestra todas las estructuras de datos, incluyendo las variables que están activas en su entorno de trabajo en este momento. En este punto de su sesión R, solo una estructura está en la memoria de R, la estructura " SquareRoot2 ". VECTORES, MARCOS DE DATOS Y LISTAS DE R Una estructura de datos fundamental y muy popular de R es el vector; este permite el almacenamiento de un conjunto ordenado de valores llamados elementos. Un vector puede contener cualquier número de elementos, pero todos deben ser del mismo tipo. Por ejemplo, un vector no puede contener números y texto. Una lista permite mayor flexibilidad. Para determinar el tipo de vector v, use el comando > typeof (v). Varios tipos de vectores se usan comúnmente para el desarrollo de modelos de aprendizaje automático: números enteros (sin decimales), dobles (con números decimales), caracteres (datos de texto) y lógicos (VERDADERO o FALSO). También hay dos valores especiales: NULL, utilizado para indicar la ausencia de cualquier valor, y NA que revela un valor faltante. Es tedioso introducir grandes cantidades de datos en R de forma manual. Sin embargo, se pueden crear pequeños vectores utilizando la función de combinación c (). El vector también puede ser nombrado usando el operador =. Por ejemplo, aquí está el comando para crear un vector > v = c (2,3,5,8,13). Ahora, construyamos dos vectores para almacenar datos de esperanza de vida de 32 La inteligencia artificial con ejemplos. cinco países. Vamos a crear un vector de caracteres llamado Country y colocaremos los nombres de los cinco países, y un vector doble llamado LifeExpectancy para almacenar los valores de esperanza de vida de estos países. Echemos un vistazo al siguiente código para crear estos tres vectores: > Country = c ("Brazil ","China", "India", "Switzerland", "USA") > LifeExpectancy = c (74,76,65,83,79) Verifique el contenido de cada vector usando su nombre. Visualice el primer elemento del vector con el comando > Country[1]. La estructura de datos utilizada por R para sus modelos de aprendizaje es el marco de datos conocido como Data Frame, una matriz de n dimensiones. Resulta sencillo crear un data frame con nuestros dos vectores usando el siguiente comando: > CountryData = data.frame (Country, LifeExpectancy). El data frame CountryData ahora es una matriz de 2 columnas y 5 filas con el siguiente contenido: > CountryData Country LifeExpectancy 1 Brazil 74 2 China 76 3 India 65 4 Switzerland 83 5 USA 79 Falta añadir la población por país, la cual está en otra fuente de datos. Para agregar esta variable en el data frame, escriba lo siguiente: > CountryData$Population = c (199000, 1390000, 1240000, 79970, 318000). Ahora puede ver que la columna de población se encuentra ahí > CountryData Country LifeExpectancy Population 1 Brazil 74 199000 2 China 76 1390000 3 India 65 1240000 4 Switzerland 83 79970 5 USA 79 318000 Al analizar estos datos, se recomienda agregar dos países: Australia y Greece. Vamos a crear tres nuevos vectores: Country = c ("Australia","Greece"), LifeExpectancy = c (82,81) y Population = c (23050, 11125). Ahora podemos crear un data frame para estos dos países: NewCountryData = data.frame (Country,LifeExpectancy,Population) y, finalmente, crear un nuevo data frame para 33 unir el contenido de CountryData con NewCountryData: AllCountryData = rbind (CountryData , NewCountryData) > AllCountryData Country LifeExpectancy Population 1 Brazil 74 199000 2 China 76 1390000 3 India 65 1240000 4 Switzerland 83 79970 5 USA 79 318000 6 Australia 82 23050 7 Greece 81 11125 Con lo anterior, se demuestraque es posible jugar con los datos de una tabla para incluir todos los datos necesarios antes de entrenar un modelo de aprendizaje automático. Para el siguiente ejercicio, use el archivo WHO.csv de un conjunto de indicadores sociales, económicos, de salud y políticos que recopilan datos de la Organización Mundial de la Salud y organizaciones asociadas. El conjunto de datos está disponible en un CSV (valores separados por comas) en el siguiente sitio http://www.exploredata.net/Downloads/WHO-Data-Set Busque el archivo WHO.csv y descárguelo en su directorio de trabajo. Luego, cargue el archivo en memoria usando el comando > WHO = read.csv ("WHO.csv"). Escriba el comando > str (WHO) para ver la estructura interna de los datos del archivo. Hay demasiada información para mostrarla aquí, pero la primera línea nos da un resumen: 'data.frame': 'data.frame': 202 obs. of 358 variables. Puede ser útil enfocarse solo en un país. Por lo tanto, es posible extraer un subconjunto con el comando > India = subset (WHO, WHO$Country == WHO$Country[80]). Luego grabe el archivo > write.csv (India, "WHO_india.csv"). Ahora que el archivo está guardado en su área de trabajo en su computadora, podría eliminarlo de la memoria usando el comando > rm (WHO). Ahora veamos una variable de archivo. Por ejemplo, podemos ver la población después de 15 años en la India: > India$Population.proportion.under.15 y la respuesta es [1] 33, que significa el 33% de la población. Si queremos ver esa variable para todos los países, debemos escribir: > http://www.exploredata.net/Downloads/WHO-Data-Set 34 La inteligencia artificial con ejemplos. WHO$Population.proportion.under.15 y obtendremos todos los valores de los 202 países (es decir, datos de los países del 1 al 63 en la primera línea, 64 al 126 en la segunda línea, etc.): [1] 47 26 29 14 46 28 26 20 19 16 24 27 26 35 18 15 17 37 44 NA 32 38 17 35 28 29 14 46 45 37 41 17 39 42 46 24 21 30 42 47 42 34 28 41 15 19 19 14 19 38 28 33 32 33 34 42 43 15 44 33 17 18 NA [64] 35 41 18 14 39 14 33 43 43 48 31 38 39 NA 15 22 33 28 28 41 21 28 14 31 14 37 24 43 32 24 18 24 30 39 14 28 40 47 30 16 18 NA 19 44 47 31 33 48 17 32 40 24 30 38 19 18 28 19 30 44 27 38 32 [127] 38 18 NA NA 21 37 48 44 34 19 33 36 32 30 40 35 31 36 16 16 NA 21 15 15 43 28 27 29 40 14 41 34 42 18 24 43 19 16 14 40 44 32 14 24 40 29 39 17 16 36 NA 39 44 21 45 43 37 22 25 28 31 34 49 [190] 14 20 18 21 24 32 39 31 29 NA 45 46 39 También, podemos mirar el promedio mundial usando la función: > mean (WHO$Population.proportion.under.15), pero el resultado da [1] NA porque algunos países no tienen ese dato. Usted puede ver que hay datos de tipo NA para algunos países. Por ejemplo: país = {63 , 77, 105, 130, 131, 148, 178, 200} causa este problema. Por lo tanto, se debe eliminar esos NA antes de realizar operaciones matemáticas, con el comando > mean (WHO$Population.proportion.under.15, na.rm = TRUE). Luego de esto, la respuesta es [1] 30.11399, lo que confirma que India está un poco más allá del promedio mundial con su 33%. Así podríamos hacernos la siguiente pregunta: ¿Qué país tiene el porcentaje más bajo de jóvenes menores de 15 años? Con > which.min (WHO$Population.proportion.under.15), la respuesta es [1] 4. Entonces, ¿cuál es el país #4? Utilice el comando > WHO$Country [4] y da como resultado [1] Andorra. Haga lo mismo para el porcentaje más alto. ¿Cuál es el país? Queda demostrado que es posible investigar nuestros datos desde todos los ángulos para familiarizarse completamente con ellos. Ahora, intentemos relacionar dos variables de una manera gráfica. Sería interesante ver la relación entre el ingreso nacional bruto per cápita y el nivel de fertilidad de las mujeres en este país. Para utilizar plot (), tenemos que especificar dos vectores como parámetros de entrada: > plot (WHO$Gross.national.income.per.capita, WHO$Total.fertility.rate..per.woman) 35 Figure 2.1 Representación gráfica simple de dos variables con R La tendencia es que cuando los ingresos son más altos, hay menos hijos por familia. Los países de bajos ingresos todavía tienen altos niveles de fertilidad. Entonces, ¿cuáles son los países que tienen buenos ingresos, pero siguen teniendo muchos niños? Para ello, se crea una variable llamada Outliers para guardar esa información: > Outliers = subset (WHO,WHO$Gross.national.income.per.capita > 10000 & WHO$Total.fertility.rate..per.woman > 2.5) ¿Cuántos países son? Son 9 > nrow (Outliers) [1] 9 ¿Cuáles son? > Countries = list (Outliers$Country,Outliers$Gross.national.income.per.capita,Outliers$Total.fertility.rate..per.wo man) 36 La inteligencia artificial con ejemplos. > Countries [[1]] [1] Botswana Equatorial Guinea Gabon Israel Libyan Arab Jamahiriya Malaysia Oman Saudi Arabia Venezuela [[2]] [1] 11730 16620 11180 23840 11630 12160 19740 22300 10970 [[3]] [1] 3.0 5.4 3.1 2.8 2.8 2.7 3.1 3.5 2.6 Una lista es una estructura de datos, al igual que un vector, ya que se utiliza para almacenar un conjunto ordenado de elementos. Mientras que un vector requiere que todos los elementos sean del mismo tipo, una lista permite tener elementos de tipos diferentes. Debido a esta flexibilidad, las listas se utilizan a menudo para almacenar diversos tipos de datos de entrada y salida, así como conjuntos de parámetros de configuración para el aprendizaje de máquina. GUARDAR, CARGAR Y DESTRUIR ESTRUCTURAS DE DATOS Uno de los desafíos en el uso de grandes conjuntos de datos es recopilar, preparar y administrar datos provenientes de una variedad de fuentes. En esta sección se destacan las funcionalidades básicas para ingresar y extraer datos de un entorno de trabajo en R. Cuando ha pasado mucho tiempo obteniendo una estructura de datos en el formato que desea, no tiene que volver a hacerlo cada vez que reinicie su sesión en R; puede guardar dicha estructura en un archivo para utilizarlo posteriormente. Para ello, use el comando save (). La función save () escribe una o más estructuras de datos en la ubicación especificada por el parámetro file. Los archivos de datos R tienen una extensión RData. Supongamos que tiene tres objetos llamados x, y, y z que desea guardar en un archivo permanente. Ya sea que sus datos sean vectores, factores, listas o data frames, podemos guardarlos en un archivo usando el siguiente comando: > save (Countries,file="OutliersCountries.RData"). Si quiere usar ese data frame en su próxima sesión de trabajo, escriba el comando > load ("OutliersCountries.RData") para recrear todas las estructuras de datos guardadas en este archivo. 37 Otro truco, si necesita cerrar rápidamente su sesión de R, puede usar el comando > save.image (), con lo cual grabará toda la sesión en un archivo de extensión RData. De manera predeterminada, R buscará ese archivo la próxima vez que se inicie, y su sesión se creará tal como la dejó. Después de trabajar en una sesión de R durante un tiempo, es posible que varias estructuras de datos estén acumuladas. La función ls () devuelve un vector de todas las estructuras de datos que se encuentran actualmente en memoria. Por ejemplo, si ha realizado todos los ejemplos de este capítulo, la función ls () devuelve lo siguiente: "AllCountryData" "cameraData" "Countries" "Country" "CountryData" "LifeExpectancy" "NewCountryData" "Outliers" "Population" "SquareRoot2" "WHO" R las eliminará automáticamente de la memoria cuando salga de la sesión. No obstante, si se trata de estructuras de datos grandes, es posible que desee liberar la memoria antes con el comando rm (). En el caso de usar > rm (cameraData), se eliminarán los datos de cameraData
Compartir