Redes Neurais em IA e Deep Learning - página 66

 

1.2 Qué es el aprendizaje automático (L01: Qué es el aprendizaje automático)



1.2 Qué es el aprendizaje automático (L01: Qué es el aprendizaje automático)

Me gustaría extenderles una cálida bienvenida a todos ustedes al comenzar el nuevo semestre. Espero que todos hayan tenido unas fantásticas vacaciones de verano.

En este video, quiero tomarme un momento para discutir algunos aspectos importantes del curso y cómo trabajaremos juntos. Este curso será ligeramente diferente del formato tradicional donde tenemos sesiones en persona. Aprovecharemos el aprendizaje asincrónico, lo que significa que pregrabaré las conferencias y las compartiré con ustedes al comienzo de cada semana. Esto le permite ver el material a su conveniencia, cuando más le convenga. Además, puede ver los videos varias veces si es necesario, y para aquellos con conexiones a Internet más lentas, también puede descargar los videos para verlos sin conexión.

Para facilitar la navegación a través de las conferencias, dividiré cada conferencia en varios videos basados en diferentes temas. Por ejemplo, en la primera lección, cubriré varios temas, como una descripción general del curso, el plan de estudios y las diferentes categorías de aprendizaje automático. Esta conferencia se dividirá en seis videos.

Si bien una de las desventajas del aprendizaje asíncrono es que no puede hacer preguntas durante la conferencia, estaré organizando horas de oficina en vivo donde podemos discutir cualquier pregunta o inquietud que pueda tener. Proporcionaré más detalles sobre el horario de atención más adelante.

Ahora, profundicemos en el contenido del curso. El semestre se dividirá en siete partes o módulos. En la primera parte, comenzaremos con una introducción al aprendizaje automático y un ejemplo simple de un algoritmo de aprendizaje automático llamado K vecinos más cercanos. A continuación, cubriremos los fundamentos computacionales, incluida una breve introducción a Python, así como el álgebra lineal y la biblioteca principal de aprendizaje automático, scikit-learn. Si no tiene experiencia previa con Python, no se preocupe. Es fácil de aprender y proporcionaré ejercicios interactivos opcionales en Canvas para ayudarlo a ponerse al día.

Después de los fundamentos computacionales, exploraremos métodos basados en árboles, como árboles de decisión, bosques aleatorios y aumento de gradiente. Luego, profundizaremos en la evaluación de modelos, un tema esencial que nos permite comparar diferentes algoritmos y modelos de aprendizaje automático. Esta parte del curso lo equipará con las habilidades para evaluar y elegir los mejores modelos para aplicaciones del mundo real.

A continuación, cubriremos la reducción de la dimensionalidad y el aprendizaje no supervisado. Las técnicas de reducción de dimensionalidad son vitales para manejar conjuntos de datos complejos, y el aprendizaje no supervisado le presentará métodos en los que no tenemos datos etiquetados para entrenar nuestros modelos.

Si el tiempo lo permite, también abordaremos el aprendizaje bayesiano, que abarca técnicas como los clasificadores Naive Bayes y las redes bayesianas. Este tema proporciona una comprensión de los métodos de clasificación basados en el teorema de Bayes.

Al final del semestre, tendremos presentaciones de proyectos de clase. Proporcionaré más información sobre los proyectos de clase más adelante en el semestre. Puede encontrar detalles y recursos adicionales en el sitio web del curso, que he subido a Canvas. Le animo a explorar el sitio web y leer la información proporcionada.

Con respecto a la comunicación y los recursos, principalmente utilizaremos Canvas para todas las actividades relacionadas con el curso. Los videos de conferencias, las diapositivas y los materiales adicionales estarán disponibles en Canvas. También usaré los anuncios de Canvas para compartir información y actualizaciones importantes. Asegúrese de que su configuración de notificaciones esté habilitada para recibir estos anuncios por correo electrónico.

Para mejorar su experiencia de aprendizaje, le recomiendo que descargue las diapositivas antes de ver los videos para que pueda tomar notas directamente sobre ellos. Tomar notas puede ser útil para una mejor comprensión y retención del material.

Si encuentra alguna dificultad técnica al acceder a los materiales del curso, le recomiendo usar Firefox o Chrome como su navegador, ya que tienden a funcionar mejor con Canvas.

1.2 What is Machine Learning (L01: What is Machine Learning)
1.2 What is Machine Learning (L01: What is Machine Learning)
  • 2020.09.02
  • www.youtube.com
In this video, we are goin over the definition of machine learning and how machine learning is related to programming.-------This video is part of my Introdu...
 

1.3 Categorías de Machine Learning (L01: Qué es Machine Learning)



1.3 Categorías de Machine Learning (L01: Qué es Machine Learning)

Profundicemos más en las diferentes categorías o tipos de aprendizaje automático. La categoría más extensa es el aprendizaje supervisado, que trata con datos etiquetados. En el aprendizaje supervisado, nuestro objetivo es predecir una salida basada en datos de entrada dados. Por ejemplo, en la clasificación de spam de correo electrónico, las etiquetas serían "spam" y "no spam". El objetivo es predecir si un correo electrónico es spam o no para futuros correos electrónicos. Esta categoría implica un ciclo de retroalimentación en el que se utilizan predicciones correctas o incorrectas para mejorar el algoritmo y mejorar la precisión de la clasificación.

Dentro del aprendizaje supervisado, una subcategoría es la clasificación. La clasificación se centra en la asignación de etiquetas de clase, como spam y no spam. Por ejemplo, podemos tener etiquetas de clase como "menos" y "más", con el objetivo de diferenciar entre estas dos clases en función de la información de entrada representada por X1 y X2. Un algoritmo de aprendizaje automático examina las medidas y hace predicciones, aprendiendo continuamente a asignar etiquetas correctas. Al entrenar el algoritmo en un conjunto de datos con numerosos ejemplos, puede aprender a dibujar un límite de decisión, que es la línea que separa las clases. Los nuevos puntos de datos que caen en un lado del límite de decisión probablemente se clasifiquen como una clase específica.

Otro tipo de aprendizaje supervisado es la regresión, que trata de asignar un objetivo continuo o un valor de salida. El análisis de regresión se centra en predecir un resultado continuo en función de las características de entrada. Por ejemplo, la regresión lineal es un modelo simple con una variable de entrada, cuyo objetivo es predecir un valor de salida (Y) ajustando una línea a través de los puntos de datos para minimizar los errores.

Pasando al aprendizaje no supervisado, esta categoría implica analizar datos no etiquetados para descubrir patrones o estructuras ocultas. Sin etiquetas ni comentarios, el aprendizaje no supervisado tiene como objetivo encontrar información significativa dentro del conjunto de datos. La agrupación en clústeres es un ejemplo de aprendizaje no supervisado, donde puntos de datos similares se agrupan en función de patrones o densidades. Se pueden utilizar varios algoritmos de agrupamiento como k-means, DBSCAN o agrupamiento jerárquico para identificar y agrupar puntos de datos similares.

La reducción de la dimensionalidad es otro ejemplo de aprendizaje no supervisado. Implica reducir la cantidad de características o dimensiones en el conjunto de datos. La extracción de características y la selección de características son técnicas comunes utilizadas en la reducción de dimensionalidad. Estos métodos ayudan a comprimir o transformar características para capturar la información más relevante mientras reducen la complejidad.

La última categoría de aprendizaje automático es el aprendizaje por refuerzo. En el aprendizaje por refuerzo, un agente aprende una serie de acciones para lograr un objetivo específico o maximizar las recompensas en un entorno determinado. Este tipo de aprendizaje involucra un sistema de recompensas, donde el agente recibe retroalimentación basada en el resultado de sus acciones. Por prueba y error, el agente aprende a tomar mejores decisiones y optimizar su desempeño. El aprendizaje por refuerzo se aplica comúnmente en robótica, juegos y escenarios complejos de toma de decisiones.

Es importante tener en cuenta que, si bien el aprendizaje por refuerzo es un tema importante, no se tratará en profundidad en este curso. Sin embargo, hay recursos dedicados disponibles para aquellos interesados en explorar más el aprendizaje por refuerzo.

Estas diferentes categorías de aprendizaje automático brindan un marco amplio para comprender y aplicar varias técnicas y algoritmos para resolver diferentes tipos de problemas.

Ahora, profundicemos en un aspecto diferente del aprendizaje automático llamado aprendizaje semisupervisado. Como sugiere el nombre, se encuentra entre el aprendizaje supervisado y no supervisado. En el aprendizaje semisupervisado, tenemos una combinación de datos etiquetados y no etiquetados. Los datos etiquetados son similares a lo que discutimos en el aprendizaje supervisado, donde tenemos entradas y etiquetas de clase correspondientes. Sin embargo, en el aprendizaje semisupervisado, también tenemos una gran cantidad de datos sin etiquetar sin etiquetas de clase.

El objetivo del aprendizaje semisupervisado es aprovechar los datos adicionales no etiquetados para mejorar el proceso de aprendizaje. Al combinar los datos etiquetados y no etiquetados, el algoritmo puede descubrir patrones y relaciones en los datos que pueden no haber sido evidentes solo con los datos etiquetados. Esto puede conducir a predicciones más precisas y una mejor generalización.

El aprendizaje semisupervisado puede ser particularmente útil en escenarios donde la obtención de datos etiquetados es costosa o lleva mucho tiempo. En lugar de etiquetar manualmente una gran cantidad de datos, podemos usar un conjunto más pequeño de datos etiquetados junto con un conjunto más grande de datos sin etiquetar para lograr buenos resultados.

Un enfoque para el aprendizaje semisupervisado es utilizar técnicas como la autoformación o la formación conjunta. En el autoentrenamiento, el algoritmo se entrena inicialmente en los datos etiquetados y luego usa sus predicciones para generar pseudoetiquetas para los datos no etiquetados. Estas pseudoetiquetas luego se combinan con los datos etiquetados originales para volver a entrenar el modelo. Este proceso se repite varias veces, refinando las predicciones del modelo y aprovechando los datos sin etiquetar para mejorar el rendimiento.

En el co-entrenamiento, el algoritmo aprende de múltiples vistas de los datos. Se entrenan múltiples clasificadores en diferentes subconjuntos de características o diferentes representaciones de los datos. Inicialmente, cada clasificador se entrena en los datos etiquetados. Luego, intercambian sus predicciones sobre los datos no etiquetados, lo que permite que cada clasificador aprenda de las predicciones del otro. Este proceso iterativo continúa, con cada clasificador refinando sus predicciones basándose en el consenso de los demás.

El aprendizaje semisupervisado es un área de investigación en crecimiento, y existen varios algoritmos y técnicas disponibles para enfrentar el desafío de aprovechar los datos no etiquetados de manera efectiva. Es un campo apasionante que ofrece oportunidades prometedoras para mejorar el rendimiento del aprendizaje automático cuando los datos etiquetados son limitados.

Hemos discutido las diferentes categorías de aprendizaje automático, incluido el aprendizaje supervisado, el aprendizaje no supervisado, el aprendizaje por refuerzo y el aprendizaje semisupervisado. Cada categoría tiene sus propias características y aplicaciones. El aprendizaje supervisado trata con datos etiquetados y se enfoca en hacer predicciones o asignar etiquetas de clase. El aprendizaje no supervisado tiene como objetivo encontrar estructuras o patrones ocultos en datos no etiquetados. El aprendizaje por refuerzo consiste en aprender una serie de acciones a través de un sistema de recompensas. Por último, el aprendizaje semisupervisado combina datos etiquetados y no etiquetados para mejorar el rendimiento del aprendizaje.

1.3 Categories of Machine Learning (L01: What is Machine Learning)
1.3 Categories of Machine Learning (L01: What is Machine Learning)
  • 2020.09.02
  • www.youtube.com
In this video, we are discussing the three broad categories of machine learning: supervised learning, unsupervised learning, and reinforcement learning.-----...
 

1.4 Notación (L01: Qué es el aprendizaje automático)



1.4 Notación (L01: Qué es el aprendizaje automático)

Ahora que hemos discutido el concepto de aprendizaje automático y las principales categorías de aprendizaje automático, profundicemos en el aprendizaje supervisado. Como mencionamos anteriormente, el aprendizaje supervisado es la categoría más grande de aprendizaje automático. En esta sección, exploraremos la notación, la terminología y los conceptos asociados con el aprendizaje supervisado.

El aprendizaje supervisado sigue un flujo de trabajo específico. Comenzamos con un conjunto de datos de entrenamiento que contiene ejemplos de características de entrada y su correspondiente información o etiquetas de destino. Las entidades de entrada también pueden denominarse observaciones. Luego, el conjunto de datos se proporciona a un algoritmo de aprendizaje automático. Hay varios tipos de algoritmos de aprendizaje automático que exploraremos más adelante en este curso. El algoritmo aprende de los datos de entrenamiento y genera un modelo predictivo.

El modelo representa el conocimiento adquirido a partir de los datos de entrenamiento y se puede utilizar para hacer predicciones sobre datos nuevos e invisibles. Si los datos nuevos tienen el mismo formato que los datos de entrenamiento, incluidas las mismas características, el modelo entrenado se puede usar para hacer predicciones. Este es el principal flujo de trabajo del aprendizaje supervisado.

Ahora, profundicemos en los aspectos formales de la notación de aprendizaje supervisado. Denotamos el conjunto de datos de entrenamiento como D, que consta de N ejemplos de entrenamiento. Cada ejemplo de entrenamiento incluye un vector de características (X) y una etiqueta correspondiente (Y). El superíndice 'i' representa el índice del punto de entrenamiento, indicando su posición en el conjunto de datos. El superíndice se usa aquí para diferenciarlo del subíndice que presentaremos más adelante.

El conjunto de datos de entrenamiento se genera en función de una función subyacente, a menudo desconocida, que asigna etiquetas a las características. Esta función normalmente no está explícitamente definida y puede ser un fenómeno natural o un proceso de etiquetado humano. En el aprendizaje automático, nuestro objetivo es aproximar esta función (F(X)) usando un modelo o hipótesis. El modelo debe capturar el mapeo entre las características de entrada (X) y las etiquetas (Y) de manera similar a la función desconocida.

Tradicionalmente, la hipótesis o modelo aprendido por el algoritmo de aprendizaje automático se denomina H. El modelo toma el vector de características (X) y produce una etiqueta predicha (Y hat). En problemas de regresión, la etiqueta pronosticada es un valor continuo, mientras que en problemas de clasificación, la etiqueta pronosticada pertenece a un conjunto de valores posibles. En la clasificación, el conjunto de posibles etiquetas se suele representar mediante números enteros, pero también podría representarse mediante otros símbolos o letras.

Durante la evaluación del modelo, se utiliza un conjunto de datos separado para evaluar el rendimiento del modelo. Las predicciones realizadas por el modelo se comparan con las etiquetas verdaderas para medir la precisión del modelo. En la regresión, se evalúa la cercanía de las predicciones a las etiquetas verdaderas, mientras que en la clasificación, se examina la concordancia entre las etiquetas predichas y las etiquetas verdaderas.

Para ilustrar estos conceptos, consideremos un ejemplo de conjunto de datos real, el conjunto de datos Iris. Este conjunto de datos consta de mediciones de diferentes características de las flores de Iris, como las dimensiones de los sépalos y los pétalos. El objetivo es predecir la especie de la flor en base a estas medidas. Hay tres especies: setosa, versicolor y virginica.

En el conjunto de datos de Iris, cada ejemplo de entrenamiento corresponde a una medida de flor, con las características que representan las dimensiones y la etiqueta que representa la especie de flor. El conjunto de datos contiene 150 ejemplos de entrenamiento, indicados como N=150, y cuatro características, indicados como M=4.

El aprendizaje supervisado implica el uso de un conjunto de datos de entrenamiento para aprender un modelo que se aproxima a una función subyacente desconocida. El modelo toma características de entrada y genera predicciones. La precisión del modelo se evalúa utilizando datos separados. La notación y la terminología analizadas en esta sección proporcionan una base para comprender y trabajar con algoritmos de aprendizaje supervisado.

1.4 Notation (L01: What is Machine Learning)
1.4 Notation (L01: What is Machine Learning)
  • 2020.09.02
  • www.youtube.com
In this video, we are going over some of the machine learning formalities and notation that we will be using in this course.-------This video is part of my I...
 

Aplicación 1.5 ML (L01: ¿Qué es el aprendizaje automático)



Aplicación 1.5 ML (L01: ¿Qué es el aprendizaje automático)

Después de analizar la notación y el formalismo que rodean el aprendizaje supervisado, revisemos la canalización del aprendizaje supervisado y exploremos cómo abordamos los problemas de aprendizaje automático en la práctica. También examinaremos los componentes individuales que normalmente consideramos durante el proceso.

La figura simplificada que examinamos anteriormente representaba el flujo de trabajo del aprendizaje supervisado. En este flujo de trabajo, comenzamos con un conjunto de datos de entrenamiento etiquetado, donde tenemos etiquetas para las funciones. Luego aplicamos un algoritmo de aprendizaje automático que aprende a ajustar un modelo a los datos de entrenamiento. El modelo resultante se puede usar para hacer predicciones sobre datos nuevos e invisibles. Es importante tener en cuenta que este proceso asume que los nuevos datos provienen de la misma distribución que los datos de entrenamiento.

Ahora, profundicemos en un diagrama de flujo más detallado que ilustra los diversos componentes involucrados en el aprendizaje automático práctico. Los componentes fundamentales siguen siendo los mismos que en la figura anterior: un conjunto de datos de entrenamiento, un algoritmo de aprendizaje y un modelo resultante. Sin embargo, hay detalles adicionales a considerar.

En la práctica, antes de obtener los datos de entrenamiento, normalmente realizamos algunos pasos de preprocesamiento. A menos que adquiramos un conjunto de datos preparado previamente, debemos determinar las características para extraer de los datos. Esto es particularmente importante en el aprendizaje automático tradicional. Por ejemplo, en el caso de clasificar las flores de iris en función de las mediciones, podemos tener datos de imágenes o datos de observación de escenarios del mundo real. En cualquier caso, necesitamos extraer características relevantes para proporcionar al algoritmo de aprendizaje automático. En lugar de utilizar píxeles sin procesar de las imágenes, a menudo es más eficaz utilizar funciones preprocesadas o extraídas. Para el ejemplo de la flor del iris, estas características pueden incluir la longitud del sépalo, el ancho del sépalo, etc. Es común involucrar a expertos del dominio que poseen conocimiento sobre el problema, como los botánicos en el caso de clasificar flores. Su experiencia puede ayudar a seleccionar características útiles para la clasificación.

Suponiendo que hemos extraído las características de los datos sin procesar, obtenemos un conjunto de entrenamiento que consiste en la longitud de la muestra, el ancho de la muestra, la longitud del pétalo y el ancho del pétalo. Puede haber pasos de preprocesamiento adicionales involucrados, como el escalado de características, la selección de características (elegir qué características incluir) y la reducción de la dimensionalidad. Estos pasos de procesamiento previo también pueden incluir el submuestreo del conjunto de datos, entre otros. A lo largo de este curso, exploraremos una selección de estos pasos de preprocesamiento con más detalle.

Una vez que se completa el procesamiento previo, proporcionamos los datos al algoritmo de aprendizaje y ajustamos el modelo. Sin embargo, antes de usar el modelo en datos nuevos, es común dividir el conjunto de datos en dos partes: un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento se usa para entrenar el algoritmo y obtener el modelo, mientras que el conjunto de prueba sirve como un conjunto de datos independiente para evaluar el rendimiento del modelo. Este paso de evaluación nos ayuda a evaluar qué tan bien funciona el modelo antes de aplicarlo a datos invisibles del mundo real. Es importante tener en cuenta que durante el proceso de entrenamiento, también hay pasos de evaluación involucrados, como la selección del modelo y la validación cruzada, que ayudan a ajustar los hiperparámetros. Cubriremos ampliamente estos temas en este curso.

Después de obtener el modelo final, evaluamos su rendimiento utilizando el conjunto de prueba. Esta evaluación implica usar el modelo para predecir etiquetas para el conjunto de prueba y comparar estas predicciones con las etiquetas verdaderas. En los ejemplos de clasificación, la evaluación a menudo gira en torno a la precisión o el error de clasificación, lo que indica el porcentaje de instancias clasificadas correctamente. Por ejemplo, podríamos lograr un 95% de precisión al clasificar las flores correctamente. Una vez que se ha evaluado el modelo, se puede utilizar en nuevos datos para hacer predicciones en aplicaciones del mundo real.

Si bien esta diapositiva puede parecer abrumadora con la cantidad de información presentada, puede estar seguro de que profundizaremos en cada uno de estos pasos con mayor detalle a lo largo de este curso.

En la práctica, cuando se desarrolla una aplicación de aprendizaje automático, generalmente hay cinco pasos principales involucrados. Primero, necesitamos definir el problema que queremos resolver.

Después de definir el problema que queremos resolver, el siguiente paso es recopilar y preparar los datos. Esto implica adquirir un conjunto de datos que contenga ejemplos del problema que estamos tratando de resolver. El conjunto de datos debe incluir tanto las entidades de entrada como sus etiquetas correspondientes.

Una vez que tenemos el conjunto de datos, el siguiente paso es preprocesar y limpiar los datos. Esto puede implicar el manejo de valores faltantes, tratar con valores atípicos, normalizar o escalar características y realizar cualquier transformación o codificación necesaria. El preprocesamiento de datos es fundamental para garantizar la calidad y la fiabilidad del conjunto de datos, así como para prepararlo para el algoritmo de aprendizaje.

Después de preprocesar los datos, pasamos al tercer paso, que es seleccionar un algoritmo de aprendizaje automático apropiado. La elección del algoritmo depende de la naturaleza del problema, el tipo de datos y los recursos disponibles. Hay varios tipos de algoritmos para elegir, incluidos árboles de decisión, máquinas de vectores de soporte, redes neuronales y muchos más. Cada algoritmo tiene sus propias fortalezas y debilidades, y seleccionar el más adecuado para el problema en cuestión es crucial.

Una vez que se selecciona el algoritmo, el siguiente paso es entrenar el modelo utilizando el conjunto de datos preparado. Durante el proceso de entrenamiento, el modelo aprende a generalizar a partir de los datos de entrada y sus etiquetas correspondientes. Esto implica ajustar los parámetros internos del modelo para minimizar el error de predicción. El proceso de entrenamiento generalmente implica un algoritmo de optimización, como el descenso de gradiente, que actualiza iterativamente los parámetros del modelo en función de los errores observados.

Después de entrenar el modelo, el siguiente paso es evaluar su rendimiento. Esto se hace utilizando un conjunto de datos de evaluación separado, a menudo denominado conjunto de validación o conjunto reservado. Las métricas de evaluación utilizadas dependen del tipo de problema. Para las tareas de clasificación, se utilizan comúnmente métricas como exactitud, precisión, recuperación y puntaje F1. Para las tareas de regresión, se utilizan métricas como el error cuadrático medio (MSE) o el error absoluto medio (MAE). La evaluación nos ayuda a evaluar qué tan bien se generaliza el modelo a datos no vistos y proporciona información sobre sus fortalezas y debilidades.

Si el rendimiento del modelo es satisfactorio, el paso final es implementar el modelo y usarlo para hacer predicciones sobre datos nuevos e invisibles. Esto puede implicar la integración del modelo en un sistema o aplicación más grande para automatizar la toma de decisiones o ayudar a resolver el problema en cuestión.

Vale la pena señalar que el proceso de aprendizaje automático es iterativo y, a menudo, implica ir y venir entre los pasos. Por ejemplo, si el rendimiento del modelo no es satisfactorio, es posible que debamos revisar el paso de preprocesamiento de datos, probar diferentes algoritmos, ajustar los hiperparámetros o recopilar más datos para mejorar el rendimiento del modelo.

Esta descripción general proporciona una comprensión de alto nivel de los pasos típicos involucrados en el aprendizaje automático práctico. A medida que avancemos en este curso, profundizaremos en cada paso, exploraremos diferentes algoritmos y técnicas, y obtendremos experiencia práctica en la aplicación del aprendizaje automático a problemas del mundo real.

1.5 ML application (L01: What is Machine Learning)
1.5 ML application (L01: What is Machine Learning)
  • 2020.09.06
  • www.youtube.com
This video is about the main steps for approaching a machine learning application along with a categorization with the different aspects of machine learning ...
 

1.6 Motivación ML (L01: ¿Qué es el aprendizaje automático)



1.6 Motivación ML (L01: ¿Qué es el aprendizaje automático)

Anteriormente, discutimos el enfoque para resolver problemas de aprendizaje automático. El proceso involucró varios pasos, comenzando con la definición del problema en cuestión. Hicimos hincapié en la importancia de recopilar o encontrar un conjunto de datos adecuado para trabajar. Una vez que tuviéramos el conjunto de datos, elegiríamos un algoritmo o clase de algoritmo para abordar el problema. A continuación, necesitábamos definir una métrica de optimización para entrenar el modelo de manera efectiva. Después del entrenamiento, evaluaríamos el desempeño del modelo utilizando una métrica de evaluación.

En el futuro, exploramos brevemente diferentes enfoques de aprendizaje automático y las motivaciones detrás del uso del aprendizaje automático. El profesor Pedro Domingos, de la Universidad de Washington, clasificó estos enfoques en cinco tribus: simbolistas, conexionistas, evolutivos, bayesianos y analogizadores. Cada tribu representa una representación diferente elegida para el modelo, una parte de evaluación (función objetivo) y un enfoque de optimización.

Por ejemplo, la tribu de los conexionistas usa redes neuronales como su modelo de representación elegido. Optimizan el error cuadrático o la entropía cruzada como función objetivo y emplean el descenso de gradiente o la retropropagación como enfoque de optimización. De manera similar, la tribu evolutiva utiliza la búsqueda genética para la optimización, con programas genéticos como su representación modelo. La tribu bayesiana emplea modelos gráficos e inferencia probabilística para maximizar la probabilidad posterior.

Estos ejemplos proporcionan una descripción general de los diferentes enfoques del aprendizaje automático. Es importante tener en cuenta que estas categorías no son exhaustivas y representan solo algunos ejemplos para cada tribu.

Leo Breiman, un estadístico influyente conocido por su trabajo sobre árboles de decisión y bosques aleatorios, presenta otra perspectiva sobre las motivaciones del aprendizaje automático. Introdujo la idea de dos culturas: la predicción y la información. La cultura de la predicción se centra en utilizar el aprendizaje automático para realizar predicciones precisas sin comprender necesariamente la relación subyacente entre las variables de entrada y salida. Por otro lado, la cultura de la información tiene como objetivo extraer conocimiento y comprender la naturaleza de la relación entre variables.

Breiman afirmó que todos los modelos son incorrectos, pero algunos son útiles. Esto destaca el equilibrio entre la interpretabilidad y el rendimiento del modelo. Los modelos más simples son más fáciles de interpretar, pero es posible que no logren un alto rendimiento, mientras que los modelos más complejos pueden funcionar mejor, pero son más difíciles de interpretar.

Además, existen diferentes motivaciones para estudiar el aprendizaje automático. Los ingenieros suelen centrarse en aplicar el aprendizaje automático para resolver problemas del mundo real, mientras que los matemáticos, los informáticos y los estadísticos pueden estar más interesados en desarrollar la teoría del aprendizaje automático. Los neurocientíficos podrían estudiar el aprendizaje automático para comprender mejor el cerebro humano y desarrollar algoritmos inspirados en su funcionamiento.

Además, discutimos la relación entre la IA, el aprendizaje automático y el aprendizaje profundo. El aprendizaje automático surgió como un subcampo de la IA, y el aprendizaje profundo es un subcampo del aprendizaje automático. El aprendizaje profundo se centra específicamente en las redes neuronales multicapa y se extiende más allá de ellas. El aprendizaje profundo puede considerarse un cambio de marca de las redes neuronales. Los sistemas de IA son sistemas no biológicos que exhiben inteligencia a través de reglas, como los automóviles que se conducen solos o los programas para jugar al ajedrez. El aprendizaje automático no es un requisito para la IA, ya que los sistemas de IA se pueden desarrollar sin utilizar técnicas de aprendizaje automático.

Para concluir, mencionamos que este curso cubrirá principalmente el aprendizaje automático, mientras que la IA y el aprendizaje profundo se encuentran en diferentes contextos y pueden explorarse en otros cursos.

En el campo del aprendizaje automático, existen varios lenguajes de programación y bibliotecas populares que se utilizan ampliamente para implementar y trabajar con modelos de aprendizaje automático. Estas herramientas brindan una gama de funcionalidades y están diseñadas para facilitar a los investigadores y profesionales el desarrollo, la capacitación y la evaluación de modelos de aprendizaje automático.

Uno de los lenguajes de programación más utilizados en el campo del aprendizaje automático es Python. Python es un lenguaje versátil y fácil de aprender que ofrece un rico ecosistema de bibliotecas diseñadas específicamente para el aprendizaje automático. Estas bibliotecas proporcionan implementaciones eficientes de varios algoritmos de aprendizaje automático, así como herramientas para la manipulación, visualización y evaluación de datos.

Algunas de las bibliotecas populares de Python para el aprendizaje automático incluyen:

  1. NumPy: NumPy es una biblioteca fundamental para la computación científica en Python. Brinda soporte para arreglos y matrices grandes y multidimensionales, junto con una colección de funciones matemáticas para operar en estos arreglos de manera eficiente. NumPy es la base de muchas otras bibliotecas de aprendizaje automático.

  2. Pandas: Pandas es una poderosa biblioteca de análisis y manipulación de datos. Proporciona estructuras de datos y funciones para manejar eficientemente datos estructurados, como datos tabulares. Pandas es particularmente útil para preprocesar y limpiar datos antes de introducirlos en modelos de aprendizaje automático.

  3. Scikit-learn: Scikit-learn es una biblioteca integral de aprendizaje automático que ofrece una amplia gama de algoritmos y herramientas para clasificación, regresión, agrupación, reducción de dimensionalidad y más. Proporciona una interfaz unificada y sigue una API coherente, lo que facilita experimentar con diferentes algoritmos y comparar su rendimiento.

  4. TensorFlow: TensorFlow es una biblioteca de código abierto desarrollada por Google para computación numérica y aprendizaje automático. Ofrece una arquitectura flexible para construir y entrenar varios tipos de modelos de aprendizaje automático, con un enfoque particular en el aprendizaje profundo. TensorFlow proporciona una API de alto nivel llamada Keras, que simplifica el proceso de creación y entrenamiento de redes neuronales.

  5. PyTorch: PyTorch es otra biblioteca popular de aprendizaje profundo que proporciona gráficos de cálculo dinámicos y una integración perfecta con Python. Es conocido por su flexibilidad y facilidad de uso, lo que lo convierte en la opción preferida de investigadores y profesionales que trabajan en proyectos de aprendizaje profundo. PyTorch también ofrece un rico ecosistema de modelos y herramientas previamente entrenados para la implementación de modelos.

Estos son solo algunos ejemplos de las muchas herramientas disponibles para el aprendizaje automático en Python. Según los requisitos específicos de su proyecto, puede explorar otras bibliotecas y marcos que se adapten a sus necesidades. Es importante mantenerse actualizado con los últimos desarrollos en el campo y elegir las herramientas que mejor se adapten a sus objetivos y preferencias.

Además de Python, otros lenguajes de programación como R y Julia también tienen bibliotecas y ecosistemas de aprendizaje automático dedicados. R, en particular, se usa ampliamente para el análisis estadístico y tiene una rica colección de paquetes para el aprendizaje automático. Julia, por otro lado, es un lenguaje diseñado específicamente para la computación numérica y ofrece bibliotecas de alto rendimiento para el aprendizaje automático.

A lo largo de este curso, nos centraremos principalmente en el uso de Python y sus bibliotecas asociadas, ya que proporcionan un entorno potente y flexible para explorar e implementar algoritmos de aprendizaje automático. Sin embargo, los conceptos y principios cubiertos en este curso también se pueden aplicar a otros lenguajes y herramientas de programación.

Espero que esto le brinde una descripción general de las herramientas que usaremos y su importancia en el campo del aprendizaje automático. Si tiene más preguntas o necesita una aclaración, no dude en preguntar.

1.6 ML motivation (L01: What is Machine Learning)
1.6 ML motivation (L01: What is Machine Learning)
  • 2020.09.06
  • www.youtube.com
This video is mainly about the different perspectives and motivations regarding studying machine learning.-------This video is part of my Introduction of Mac...
 

2.1 Introducción a NN (L02: Métodos del vecino más cercano)



2.1 Introducción a NN (L02: Métodos del vecino más cercano)

¡Hola a todos y bienvenidos de nuevo! Espero que hayas tenido una fantástica primera semana. Recapitulemos brevemente lo que cubrimos. En la Lección 1, presentamos el concepto de aprendizaje automático y discutimos la pregunta más común, que era sobre el proyecto de clase. Pronto proporcionaré un anuncio por separado sobre el proyecto. Una cosa que me gustaría mencionar es que he habilitado una función en Piazza que le permite encontrar miembros del equipo para el proyecto. Se compartirán más detalles en un anuncio separado.

Ahora, pasemos a la lección 2. Hoy, nos centraremos principalmente en el algoritmo k-vecino más cercano (KNN), que es un algoritmo de aprendizaje automático clásico y todavía se usa ampliamente en la actualidad. Considero que es la introducción más suave y directa al aprendizaje automático, ya que nos permite comprender el funcionamiento de los algoritmos de aprendizaje automático. Aunque es posible que KNN ya no sea el algoritmo más popular, recomiendo incluirlo en sus proyectos. Sirve como punto de referencia de rendimiento para tareas de clasificación e incluso para predecir salidas continuas. KNN puede proporcionar información sobre la precisión de la predicción y la eficiencia computacional.

Hablando de aspectos computacionales, además de explicar cómo funciona KNN, también tocaremos el concepto de notación Big O. Esta notación se usa comúnmente en informática para analizar la eficiencia de diferentes algoritmos. Aunque suene técnico, comprender la notación Big O es útil no solo para el aprendizaje automático, sino también para la programación general.

Hacia el final de esta lección, demostraré algunos ejemplos en Python para mostrarle cómo utilizar KNN. Sin embargo, tenga en cuenta que esta será una breve descripción general y profundizaremos en Python, incluida la instalación y las bibliotecas principales, como NumPy y scikit-learn, en la Clase 3.

Entonces, ¡comencemos con la Clase 2! Nos centraremos principalmente en los métodos del vecino más cercano, incluida una introducción a KNN. He estructurado la conferencia en seis partes para que sea más accesible:

  1. Aplicaciones de los métodos del vecino más cercano: exploraremos las aplicaciones del mundo real de KNN, como la minería de datos de uso web, la biometría, la clasificación de imágenes y el análisis de proteínas. Estos ejemplos ayudarán a motivar el tema.

  2. Método del vecino más cercano: antes de profundizar en KNN, analizaremos el caso más simple, que es el método del vecino más cercano. Este método implica encontrar el punto de datos más similar a un punto de consulta y usar su etiqueta como predicción.

  3. Límite de decisión del método del vecino más cercano: Examinaremos cómo el método del vecino más cercano determina el límite de decisión, proporcionando una mejor comprensión de su funcionamiento interno.

  4. Introducción a los métodos de K-vecino más cercano: Haremos la transición a KNN, donde consideramos múltiples vecinos más cercanos en lugar de solo uno. Cubriremos los clasificadores y regresores del vecino más cercano K.

  5. Complejidad del tiempo de ejecución de Big O de los algoritmos vecinos más cercanos de K: exploraremos la eficiencia computacional de KNN utilizando la notación Big O. Este tema es crucial para analizar el rendimiento de los algoritmos.

  6. Mejora de los algoritmos del vecino más cercano de K: en esta parte, presentaré ideas y trucos para mejorar el rendimiento de KNN. Esta sección se centra en la optimización del algoritmo.

Después de cubrir estas partes conceptuales, pasaremos a la aplicación de KNN en Python. Si bien esta puede ser la parte más agradable para algunos, es esencial comprender primero los conceptos antes de sumergirse en la implementación práctica.

En la próxima lección, lección 3, profundizaremos en la instalación de Python y cubriremos las bibliotecas principales, incluidas NumPy y scikit-learn. Así que, ¡asegúrate de estar atento! Comencemos la lección 2, donde exploramos los métodos del vecino más cercano y el algoritmo del vecino más cercano y continuamos este proceso para todos los puntos de datos en el conjunto de entrenamiento. Al final del bucle, habremos identificado el punto de datos más cercano al punto de consulta.

Después de encontrar el punto más cercano, usamos su etiqueta como la etiqueta predicha para el punto de consulta. En los problemas de clasificación, la etiqueta suele ser un valor categórico que representa una clase o categoría. En problemas de regresión, la etiqueta es un valor continuo.

Para resumir el paso de predicción del algoritmo del vecino más cercano:

  1. Inicialice la distancia más cercana como infinito y el punto más cercano como Ninguno.
  2. Para cada punto de datos en el conjunto de entrenamiento:
    • Calcule la distancia entre el punto de datos actual y el punto de consulta.
    • Si la distancia es menor que la distancia más cercana:
      • Actualice la distancia más cercana con la distancia actual.
      • Establezca el punto más cercano como el punto de datos actual.
  3. Utilice la etiqueta del punto más cercano como la etiqueta predicha para el punto de consulta.

Ahora que hemos discutido el método del vecino más cercano, pasemos al caso más general de k vecinos más cercanos. El algoritmo del k vecino más cercano extiende el concepto de encontrar el punto de datos más cercano para encontrar los k puntos de datos más cercanos. En lugar de considerar solo al vecino más cercano, consideramos los puntos de datos k en el conjunto de entrenamiento que están más cerca del punto de consulta.

En el caso de la clasificación, la etiqueta prevista se determina por votación mayoritaria entre los k vecinos más cercanos. El voto de cada vecino se pondera por igual y la clase con el mayor número de votos se convierte en la etiqueta predicha.

Para problemas de regresión, la etiqueta pronosticada suele ser el promedio o la mediana de las etiquetas de los k vecinos más cercanos. El método específico de combinar las etiquetas depende de la naturaleza del problema y del resultado deseado.

Para ilustrar el límite de decisión del método del vecino más cercano, consideremos un espacio de características bidimensional. Tenemos dos clases, clase 0 y clase 1, representadas por diferentes símbolos (por ejemplo, triángulos y cuadrados). El límite de decisión es la línea o curva que separa las regiones de diferentes clases.

En el caso del método del vecino más cercano, el límite de decisión sigue el contorno de los puntos de datos de entrenamiento. Cada punto en el espacio de características se clasifica según la etiqueta del punto de datos de entrenamiento más cercano. El límite de decisión no es una curva suave sino una colección de pequeñas regiones alrededor de cada punto de entrenamiento.

Cuando se usa el método del k vecino más cercano con k mayor que 1, el límite de decisión se suaviza. A medida que consideramos más puntos vecinos, la influencia de los puntos de datos de entrenamiento individuales disminuye, lo que da como resultado un límite más generalizado. El límite de decisión está determinado por el voto mayoritario de los k vecinos más cercanos, lo que conduce a una separación más suave y continua entre las clases.

Comprender el concepto del límite de decisión es crucial para evaluar el rendimiento y las limitaciones del algoritmo del k vecino más cercano. La forma y la complejidad del límite de decisión pueden afectar la capacidad del algoritmo para clasificar o predecir con precisión nuevos puntos de datos.

Además de discutir el algoritmo del k vecino más cercano, también tocaremos el tema de la eficiencia del algoritmo. La notación Big O es una forma común de analizar y comparar la eficiencia de diferentes algoritmos. Proporciona una medida de la complejidad del tiempo del algoritmo, indicando cómo crece el tiempo de ejecución a medida que aumenta el tamaño de entrada.

El análisis de la complejidad del tiempo de ejecución del algoritmo k vecino más cercano nos ayuda a comprender su eficiencia computacional. Exploraremos brevemente este tema y discutiremos cómo la eficiencia del algoritmo puede afectar su rendimiento en grandes conjuntos de datos.

Hacia el final de esta lección, nos sumergiremos en ejemplos prácticos de implementación del algoritmo del vecino más cercano usando Python. Demostraremos cómo usar el algoritmo para tareas de clasificación y regresión, mostrando su aplicación en escenarios del mundo real. Sin embargo, antes de saltar a la implementación, es esencial comprender los conceptos y principios subyacentes de k vecinos más cercanos.

Para recapitular, en la lección dos, cubrimos el método del vecino más cercano como un caso simple de algoritmos del vecino más cercano. Exploramos cómo el algoritmo determina el punto de datos más cercano a un punto de consulta y cómo usa la etiqueta del punto más cercano para la predicción. También introdujimos el concepto del límite de decisión y su forma en el método del vecino más cercano. Además, discutimos el algoritmo del vecino más cercano k, que considera varios vecinos más cercanos en lugar de uno solo. Mencionamos cómo la etiqueta predicha se determina por votación mayoritaria en problemas de clasificación y el valor promedio o mediano en problemas de regresión. Además, abordamos brevemente la notación Big O y su aplicación en el análisis de la eficiencia de los algoritmos, incluido el algoritmo k vecino más cercano.

En la próxima lección, la lección 3, profundizaremos en la implementación del algoritmo del vecino más cercano usando Python. Cubriremos los pasos necesarios, las bibliotecas y las técnicas para utilizar este algoritmo de manera efectiva. Entonces, ¡asegúrate de unirte a mí en la próxima conferencia!

2.1 Introduction to NN (L02: Nearest Neighbor Methods)
2.1 Introduction to NN (L02: Nearest Neighbor Methods)
  • 2020.09.08
  • www.youtube.com
This first video of lecture 2 introduces nearest neighbor methods, going over some applications of nearest neighbors and covering the 1-nearest neighbor algo...
 

2.2 Límite de decisión del vecino más cercano (L02: Métodos del vecino más cercano)



2.2 Límite de decisión del vecino más cercano (L02: Métodos del vecino más cercano)

En este segundo video, examinaremos el límite de decisión del algoritmo del vecino más cercano, centrándonos específicamente en el clasificador del vecino más cercano. Usaremos un conjunto de datos bidimensional con fines ilustrativos, ya que es más fácil de visualizar para los humanos.

El conjunto de datos consta de cinco puntos de datos representados por puntos azules. Acerquémonos a los puntos A y B y exploremos el límite de decisión entre ellos. El límite de decisión es una línea o límite que separa los puntos A y B. Si ajustamos un modelo de vecino más cercano al conjunto de datos, ¿cómo sería este límite de decisión?

Para responder a esta pregunta, necesitamos entender el concepto de equidistancia. Cualquier punto que se encuentre en el límite de decisión debe ser equidistante de los puntos A y B. Tómese un momento para pausar el video y pensar en cómo se vería el límite de decisión. El límite de decisión para los puntos A y B sería una línea dibujada utilizando una métrica de distancia euclidiana. Cualquier punto de esta línea es equidistante de los puntos A y B, lo que significa que la distancia entre el punto de la línea y los puntos A y B es la misma en todas partes de la línea. Ahora pasemos a los puntos A y C y determinemos su límite de decisión. El límite de decisión para los puntos A y C sería una línea perpendicular a la línea que conecta A y C. Cada punto en esta línea es equidistante de los puntos A y C.

Podemos continuar este ejercicio para todos los pares de puntos en el conjunto de datos, como C y D, para determinar sus respectivos límites de decisión. Al ensamblar todos estos límites de decisión para cada par de puntos, obtenemos el límite de decisión del clasificador vecino más cercano, como se muestra en la esquina inferior derecha.

Si miramos de cerca el diagrama, podemos notar que se parece a un diagrama de Voronoi o teselación de Voronoi. Este diagrama divide el conjunto de datos en regiones, y cada región corresponde al límite de decisión entre un par de puntos. Cada punto de una línea límite es equidistante de los dos puntos adyacentes.

Sin embargo, aún no hemos terminado. En la diapositiva anterior, solo mostramos las regiones de decisión sin considerar las etiquetas de clase reales. Ahora vamos a volver a introducir las etiquetas de clase en el conjunto de datos. Los triángulos representan la clase 1 y los cuadrados representan la clase 0.

Para obtener las regiones de decisión que usaría el algoritmo del vecino más cercano para la clasificación, necesitamos tomar la unión de las regiones que pertenecen a la misma etiqueta de clase. Por ejemplo, los triángulos rojos tienen una región de decisión delimitada por los límites correspondientes a los puntos más cercanos de los triángulos rojos. De manera similar, los cuadrados azules tienen su propia región de decisión. Al completar estas regiones con sus respectivos colores, obtenemos el límite de decisión del clasificador vecino más cercano.

Para probar su comprensión, planteemos una pregunta simple. Dados los cinco puntos de datos en el conjunto de datos, ¿cuál es el punto más cercano al punto del signo de interrogación? Pausa el video por un momento y piensa en tu respuesta. Responder a esta pregunta requiere el conocimiento de la medida de distancia utilizada para determinar la cercanía. En este caso, estamos usando la distancia euclidiana, pero también se pueden usar otras medidas de distancia. Dependiendo de la medida de distancia elegida, el punto más cercano al punto del signo de interrogación puede variar.

En el video, se demostraron dos medidas de distancia: la distancia euclidiana y la distancia de Manhattan. La distancia euclidiana mide la distancia en línea recta entre dos puntos, mientras que la distancia de Manhattan mide la distancia sumando las diferencias absolutas entre las coordenadas.

Además, el video menciona brevemente la distancia de Mahalanobis, que tiene en cuenta la distribución de características. Considera la distancia de un punto de datos a su distribución en términos de desviaciones estándar. La similitud del coseno, que mide el ángulo entre dos vectores, también se menciona como una medida de distancia.

En la práctica, la elección de la medida de distancia depende del problema específico y de las características del conjunto de datos. Se puede considerar como un hiperparámetro del algoritmo vecino más cercano que debe elegirse cuidadosamente en función del problema en cuestión.

Analicemos ahora el algoritmo del vecino más cercano k, que es una extensión del algoritmo del vecino más cercano. En el algoritmo del k-vecino más cercano, en lugar de considerar solo el punto más cercano, consideramos los k puntos más cercanos al punto de consulta. El límite de decisión del algoritmo del vecino más cercano está determinado por un mecanismo de votación. Cada punto dentro de la región de decisión de una clase en particular contribuye al voto de esa clase. La clase con el mayor número de votos entre los k vecinos más cercanos se asigna como clase predicha para el punto de consulta.

Por ejemplo, supongamos que tenemos un punto de consulta representado por una estrella verde. Si usamos un algoritmo de 3 vecinos más cercanos, observamos los tres puntos más cercanos al punto de consulta. Si dos de esos puntos pertenecen a la clase 0 y uno pertenece a la clase 1, el voto mayoritario asignaría el punto de consulta a la clase 0. De manera similar, si aumentamos el valor de k a 5, consideraríamos los cinco puntos más cercanos a la consulta punto. Si tres de esos puntos pertenecen a la clase 1 y dos pertenecen a la clase 0, el voto mayoritario asignaría el punto de consulta a la clase 1.

Elegir el valor de k es una consideración importante en el algoritmo del vecino más cercano. Un valor más pequeño de k puede conducir a un sobreajuste, donde el algoritmo se vuelve demasiado sensible a las fluctuaciones locales en los datos. Por otro lado, un valor mayor de k puede resultar en un ajuste insuficiente, donde el límite de decisión se vuelve demasiado suave y no logra capturar detalles más finos. Al igual que con cualquier algoritmo, se deben realizar compensaciones, y la elección de k depende del conjunto de datos y del problema en cuestión. Es común experimentar con diferentes valores de k y utilizar técnicas como la validación cruzada para encontrar el valor óptimo.

El algoritmo del vecino más cercano k extiende el algoritmo del vecino más cercano considerando los k puntos más cercanos. El límite de decisión está determinado por un mecanismo de votación basado en las etiquetas de clase de los k vecinos más cercanos. La elección de k es un hiperparámetro que debe seleccionarse con cuidado para equilibrar el ajuste excesivo y el ajuste insuficiente.

2.2 Nearest neighbor decision boundary (L02: Nearest Neighbor Methods)
2.2 Nearest neighbor decision boundary (L02: Nearest Neighbor Methods)
  • 2020.09.08
  • www.youtube.com
This second video covers the intuition behind the 1-nearest neighbor's decision boundary. Also, it lists some of the common distance measures.-------This vid...
 

2.3 K-vecinos más cercanos (L02: métodos de vecinos más cercanos)



2.3 K-vecinos más cercanos (L02: métodos de vecinos más cercanos)

En el video anterior, mencioné que no todas las medidas de distancia discutidas anteriormente son métricas. Por ejemplo, la similitud del coseno no se considera una métrica adecuada porque no satisface la desigualdad del triángulo. La desigualdad del triángulo establece que la distancia entre dos puntos de datos, denotados como A y C, debe ser menor o igual que la suma de las distancias entre A y B, y B y C. Sin embargo, a pesar de no ser una métrica adecuada, el coseno la similitud sigue siendo muy útil en la práctica en contextos específicos.

Ahora, profundicemos en el enfoque de k-vecinos más cercanos (k-NN), que es una extensión del método del vecino más cercano que discutimos antes. El modelo k-NN es relativamente sencillo, ya que generaliza el método del vecino más cercano al considerar varios vecinos más cercanos en lugar de uno solo.

En este video, presento un ejemplo de un modelo k-NN. Tenemos dos características, x1 y x2, y un conjunto de datos de juguete con diferentes clases representadas por cruces, círculos y triángulos. Nuestro objetivo es clasificar un punto de datos indicado por un signo de interrogación en el centro. Para hacer predicciones, consideramos los puntos de datos dentro de un cierto radio alrededor del signo de interrogación, utilizando una medida de distancia euclidiana.

Ahora, la pregunta es: ¿Cuál sería el valor de k en este enfoque k-NN para el ejemplo dado? Si se toma un momento para pensar, se dará cuenta de que k es 5 porque estamos considerando los cinco puntos de datos más cercanos al punto que queremos clasificar.

Considerando los cinco vecinos más cercanos, contamos las ocurrencias de cada clase. Por ejemplo, si encontramos un triángulo, un círculo y tres cruces, el voto de la mayoría asigna la etiqueta de clase predicha al punto de consulta. En este caso, la etiqueta de clase pronosticada sería un triángulo, ya que ocurre más entre los cinco vecinos más cercanos.

Aunque técnicamente tenemos un "voto mayoritario" en k-NN, en la práctica se lo conoce comúnmente como un "voto mayoritario". Cuando hay un empate en el proceso de votación, donde varias clases tienen el mismo recuento, los paquetes de software normalmente seleccionan una etiqueta al azar o eligen la etiqueta con el índice de etiqueta de clase más bajo.

Para proporcionar una definición más formal del voto mayoritario, consideremos el subconjunto D sub k, que representa a los k vecinos más cercanos. Definimos el voto mayoritario como la etiqueta de clase (y) que maximiza la suma de las funciones delta. La función delta devuelve 1 si a es igual a b (etiquetas coincidentes) y 0 en caso contrario. Al sumar los valores delta para cada vecino, podemos encontrar la etiqueta de clase que ocurre con mayor frecuencia.

Para el análisis de regresión usando k-NN, el proceso es más simple. En lugar de etiquetas de clase, tratamos con valores objetivo continuos. La predicción (h) para la regresión k-NN es el promedio de los valores objetivo de los k vecinos más cercanos.

En el siguiente video, nos sumergiremos en el tema del análisis de Big O, que implica analizar la complejidad del tiempo de ejecución del algoritmo de k-vecinos más cercanos. Comprender la eficiencia de un algoritmo es crucial para evaluar su rendimiento y escalabilidad. El análisis Big O proporciona una forma de estimar cómo crecerá el tiempo de ejecución del algoritmo a medida que aumenta el tamaño de entrada. Este análisis nos ayuda a tomar decisiones informadas sobre la selección y optimización de algoritmos.

Para realizar el análisis Big O en el algoritmo de k vecinos más cercanos, debemos considerar dos factores principales: el número de instancias de entrenamiento (n) y el número de características (d). Estos factores determinan el costo computacional de encontrar los k vecinos más cercanos para un punto de consulta dado.

En la implementación más simple de k-vecinos más cercanos, calcularíamos la distancia entre el punto de consulta y cada instancia de entrenamiento, lo que resultaría en una complejidad de tiempo de O(nd). Esto significa que el tiempo de ejecución del algoritmo crece linealmente con el número de instancias de entrenamiento y el número de funciones.

Sin embargo, hay formas de optimizar el algoritmo de k-vecinos más cercanos y reducir su costo computacional. Un enfoque común es utilizar estructuras de datos que aceleren la búsqueda de vecinos más cercanos, como árboles kd o árboles de bolas. Estas estructuras de datos dividen las instancias de entrenamiento de manera jerárquica, lo que permite búsquedas de vecinos más eficientes.

Usando estas estructuras de datos, podemos lograr un tiempo de búsqueda reducido de O(log n) o incluso O(1) en algunos casos. Esta mejora acelera significativamente el algoritmo, especialmente para grandes conjuntos de datos.

Es importante tener en cuenta que la elección de la métrica de distancia también afecta la complejidad del tiempo de ejecución del algoritmo. Algunas métricas de distancia, como la distancia euclidiana, se pueden calcular de manera eficiente, mientras que otras, como la distancia de Manhattan, pueden requerir más recursos computacionales.

Además de la complejidad temporal, también debemos considerar la complejidad espacial del algoritmo de los k-vecinos más cercanos. La complejidad del espacio se refiere a la cantidad de memoria requerida para almacenar las instancias de entrenamiento y cualquier estructura de datos adicional utilizada para la búsqueda eficiente de vecinos. La complejidad del espacio suele ser O(nd) u O(n) para implementaciones optimizadas.

En general, comprender las complejidades de espacio y tiempo de ejecución del algoritmo de k vecinos más cercanos nos ayuda a evaluar su escalabilidad y tomar decisiones informadas cuando se trabaja con grandes conjuntos de datos o aplicaciones en tiempo real.

En el próximo video, exploraremos más estos conceptos y brindaremos un análisis más detallado de la eficiencia del algoritmo. Estén atentos para una discusión en profundidad sobre el análisis Big O para k-vecinos más cercanos.

2.3 K-nearest neighbors (L02: Nearest Neighbor Methods)
2.3 K-nearest neighbors (L02: Nearest Neighbor Methods)
  • 2020.09.08
  • www.youtube.com
This third video extends the 1-nearest neighbor concepts to the k-nearest neighbors method for classification and regression.-------This video is part of my ...
 

2.4 Big O de K-vecinos más cercanos (L02: Métodos de vecinos más cercanos)



2.4 Big O de K-vecinos más cercanos (L02: Métodos de vecinos más cercanos)

Ahora, profundicemos en el tema de la complejidad del tiempo de ejecución, centrándonos específicamente en la notación Big O y la complejidad del tiempo de ejecución del algoritmo de k-vecinos más cercanos (KNN).

La notación Big O es un concepto utilizado en informática para analizar la eficiencia de los algoritmos. Se refiere principalmente a la complejidad del tiempo de ejecución, que determina cómo se comporta la velocidad de ejecución de un algoritmo a medida que aumenta el tamaño de entrada. Además, la notación Big O también se puede usar para analizar la eficiencia de la memoria de un algoritmo, indicando la cantidad de memoria requerida para su ejecución.

En el caso de KNN, el paso de entrenamiento consiste en guardar el conjunto de datos de entrenamiento, lo que puede consumir mucha memoria. El almacenamiento de un gran conjunto de datos de entrenamiento puede requerir una cantidad significativa de RAM o espacio de almacenamiento en el disco duro. Si bien el espacio de almacenamiento se ha abaratado con el tiempo, aún puede presentar limitaciones cuando se trata de conjuntos de datos masivos, como millones de imágenes.

Sin embargo, cambiemos nuestro enfoque a la complejidad del tiempo de ejecución de KNN durante el paso de predicción. Antes de continuar, presentemos brevemente la notación Big O. Es una notación que se utiliza para describir la eficiencia de los algoritmos, típicamente denotada por funciones. Estas funciones representan la complejidad del tiempo de ejecución de los algoritmos, con ejemplos comunes que incluyen O(1) (constante), O(log n) (logarítmico), etc. Estas funciones indican cómo se escala el tiempo de ejecución de un algoritmo con el tamaño de entrada (n).

Para comprender mejor la complejidad del tiempo de ejecución, podemos organizar las funciones en orden ascendente de eficiencia, desde O(1) hasta complejidad exponencial. En este contexto, una función constante es ideal ya que no se ve afectada por el tamaño de entrada, lo que garantiza una velocidad de ejecución constante. Las funciones logarítmicas y lineales también son eficientes, aunque no tan ideales como las funciones constantes. Sin embargo, a medida que la complejidad aumenta a cuadrática, cúbica y exponencial, la eficiencia del algoritmo se deteriora significativamente. La complejidad exponencial es particularmente perjudicial y debe evitarse, especialmente cuando se trata de grandes conjuntos de datos en el aprendizaje automático.

Para visualizar la complejidad del tiempo de ejecución en términos de n (tamaño de entrada), se puede crear un gráfico, donde el eje x representa n y el eje y representa la complejidad del algoritmo. A medida que n aumenta, ciertas funciones exhiben un rendimiento cada vez más bajo. Es fundamental evitar algoritmos de alta complejidad, como cuadráticos, cúbicos o exponenciales, ya que pueden dar lugar a tiempos de ejecución excesivamente largos.

Ahora, exploremos cómo derivamos la notación Big O para una función dada. Por ejemplo, considere una función cuadrática f(x) = ax^2 + bx + c. Al derivar la notación Big O, nos enfocamos en el término dominante que crece más rápido. En este caso, el término dominante es x^2. Por lo tanto, la notación Big O para esta función sería O(x^2), lo que indica complejidad cuadrática.

Consideremos otra función para ilustrar más este proceso. Supongamos que tenemos una función f(x) = ax(log x). De nuevo, identificamos el término dominante, que es x(log x). Aquí, ignoramos el factor constante a y nos enfocamos en el término x(log x). En consecuencia, la notación Big O para esta función sería O(x log x), lo que indica una complejidad logarítmica lineal.

Vale la pena mencionar que la base del logaritmo (p. ej., log base 2 o logaritmo natural) no afecta la notación Big O. Las diferentes bases solo introducen un factor de escala, que se puede ignorar al determinar la complejidad del tiempo de ejecución. Por lo tanto, por simplicidad, solemos considerar el logaritmo natural (log) sin especificar la base.

Para solidificar aún más su comprensión, examinemos una función de Python para la multiplicación de matrices, demostrando la aplicación de la notación Big O a los algoritmos computacionales. La función realiza la multiplicación de matrices entre dos matrices, A y B. Aunque la implementación es intencionalmente ineficiente por el bien de la ilustración, nos permite analizar su complejidad de tiempo de ejecución.

La función comienza con la inicialización de una matriz C vacía de tamaño nxn, donde n es la dimensión de las matrices de entrada. Luego, itera a través de cada fila i de la matriz A y cada columna j de la matriz B. Dentro de los bucles anidados, calcula el producto escalar de la fila i en la matriz A y la columna j en la matriz B, almacenando el resultado en la celda correspondiente de matriz c

Aquí está el código de Python para la función de multiplicación de matrices:

def matrix_multiplication(A, B):
    n = len(A)  # Assuming square matrices of size n x n
    C = [[ 0 ] * n for _ in range(n)]  # Initialize matrix C
    
     for i in range(n):
         for j in range(n):
             for k in range(n):
                C[i][j] += A[i][k] * B[k][j]  # Calculate dot product and update C[i][j]
    
    return C
Para analizar la complejidad del tiempo de ejecución de esta función, vamos a desglosarla. El bucle exterior itera n veces, lo que representa las filas de la matriz A. El segundo bucle también itera n veces, lo que representa las columnas de la matriz B. Dentro de estos bucles, hay un bucle anidado que también itera n veces, lo que representa el cálculo del producto escalar. Por lo tanto, la complejidad general es O(n^3), lo que indica una complejidad cúbica.

Es importante tener en cuenta que la complejidad cúbica no es ideal, especialmente para valores grandes de n. A medida que aumenta el tamaño de entrada, el tiempo de ejecución de esta función crece significativamente. En consecuencia, para matrices más grandes, se debe usar un algoritmo más eficiente para realizar la multiplicación de matrices, como el algoritmo de Strassen u otros enfoques optimizados que logran mejores complejidades de tiempo de ejecución, como O(n^2.81).

En resumen, comprender la complejidad del tiempo de ejecución de los algoritmos, denotada por la notación Big O, es crucial para evaluar su eficiencia y escalabilidad. Nos permite estimar el rendimiento de un algoritmo a medida que aumenta el tamaño de entrada, lo que nos permite elegir los algoritmos más apropiados para diferentes escenarios y evitar los ineficientes para grandes conjuntos de datos.

2.4 Big O of K-nearest neighbors (L02: Nearest Neighbor Methods)
2.4 Big O of K-nearest neighbors (L02: Nearest Neighbor Methods)
  • 2020.09.08
  • www.youtube.com
In this video, we are looking at the Big-O runtime complexity of a naive implementation of k-nearest neighbors-------This video is part of my Introduction of...
 

2.5 Mejora de k-vecinos más cercanos (L02: Métodos de vecinos más cercanos)



2.5 Mejora de k-vecinos más cercanos (L02: Métodos de vecinos más cercanos)

En este video, profundizaremos en el tema de mejorar el algoritmo de K-vecinos más cercanos a través de ciertas modificaciones y la consideración de hiperparámetros. En el video anterior, discutimos el uso de una cola de prioridad como estructura de datos para mejorar la eficiencia de encontrar vecinos más cercanos. Esta cola de prioridad ayuda a evitar buscar en todo el conjunto de entrenamiento para cada nuevo vecino.

Ahora, exploremos otro enfoque para mejorar el rendimiento computacional del algoritmo de K-vecinos más cercanos utilizando estructuras de datos de partición espacial. Una de esas estructuras de datos es el montón, que sirve como estructura de partición de espacio para acelerar el proceso de búsqueda en los ejemplos de entrenamiento. Al dividir el conjunto de datos en subconjuntos dentro de la estructura de datos, podemos minimizar la necesidad de cálculos de distancia para cada punto de datos de entrenamiento.

Un método de partición del espacio se llama agrupamiento. Esto implica dividir el conjunto de datos en subconjuntos o depósitos en función de criterios específicos, como depósitos de igual tamaño o límites definidos por mediciones de características. Al hacerlo, podemos evitar buscar en todo el conjunto de entrenamiento y centrarnos solo en los puntos relevantes dentro de un cubo en particular cuando buscamos vecinos de un punto de consulta. Esta optimización mejora significativamente la eficiencia del proceso de búsqueda.

Otra técnica de partición espacial es el árbol KD, que construye hipercubos para dividir el conjunto de datos. Este método difiere del agrupamiento pero comparte el objetivo de mejorar la eficiencia de la búsqueda al reducir la cantidad de cálculos de distancia. Los árboles KD son particularmente adecuados para conjuntos de datos con una gran cantidad de características.

De manera similar, el algoritmo del árbol de bolas crea hiperesferas como particiones espaciales. La elección entre árboles KD y árboles de bolas depende de las características del conjunto de datos. Para conjuntos de datos con una gran dimensionalidad, a menudo se prefiere el algoritmo de árbol de bolas. Vale la pena señalar que la biblioteca de aprendizaje automático scikit-learn, una herramienta ampliamente utilizada, ofrece diferentes opciones para el algoritmo del clasificador vecino más cercano K, seleccionando automáticamente el algoritmo de partición de espacio más eficiente basado en el conjunto de datos. Sin embargo, puede anular manualmente esta configuración si lo desea.

Además, podemos mejorar el rendimiento de los K vecinos más cercanos empleando técnicas de reducción de dimensionalidad. La reducción de la dimensionalidad viene en dos sabores: extracción de características y selección de características. La extracción de características implica transformar o combinar características existentes para crear una representación de menor dimensión de los datos. Por otro lado, la selección de funciones implica seleccionar un subconjunto de las funciones disponibles sin crear otras nuevas. Al reducir la cantidad de características, podemos reducir el costo computacional de los cálculos de distancia y mejorar potencialmente la eficiencia del algoritmo. Además, los conjuntos de datos de alta dimensión a menudo sufren la maldición de la dimensionalidad, lo que puede conducir a un bajo rendimiento de generalización debido al sobreajuste. Por lo tanto, la reducción de la dimensionalidad también puede ayudar a aliviar este problema.

Para optimizar el rendimiento computacional de los K vecinos más cercanos, podemos explorar técnicas de edición o poda. La poda implica eliminar puntos de datos innecesarios del conjunto de entrenamiento sin afectar el límite de decisión. Al eliminar los puntos redundantes, podemos reducir la cantidad de comparaciones y cálculos de distancia, lo que hace que el algoritmo sea más eficiente. De manera similar, la creación de prototipos implica reemplazar una región densa de puntos de datos de entrenamiento con un solo punto representativo. Esta estrategia reduce los requisitos de espacio de almacenamiento al tiempo que conserva la precisión predictiva del algoritmo.

Además, el ajuste de hiperparámetros juega un papel crucial en la mejora del rendimiento predictivo del algoritmo de K-vecinos más cercanos. Los hiperparámetros son configuraciones ajustables que afectan el comportamiento del algoritmo pero no se aprenden de los datos de entrenamiento. Incluyen el valor de K (el número de vecinos a considerar), la escala de características, la medida de distancia utilizada y el esquema de ponderación para el cálculo de la distancia. Elegir valores apropiados para estos hiperparámetros puede afectar significativamente el rendimiento del algoritmo. Sin embargo, es esencial ser cauteloso y evitar sobreajustar el modelo a los datos de entrenamiento.

Al aprovechar las estructuras de datos de partición espacial, emplear técnicas de reducción de dimensionalidad, aplicar métodos de edición y poda y ajustar hiperparámetros, podemos mejorar el rendimiento computacional y predictivo del algoritmo de vecinos más cercanos.

2.5 Improving k-nearest neighbors (L02: Nearest Neighbor Methods)
2.5 Improving k-nearest neighbors (L02: Nearest Neighbor Methods)
  • 2020.09.08
  • www.youtube.com
This video summarizes some of the common tricks for making k-nearest neighbors more efficient in terms of computational performance and predictive performanc...
Razón de la queja: