{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "<figure> \n", "<img src=\"../Imagenes/logo-final-ap.png\" width=\"80\" height=\"80\" align=\"left\"/> \n", "</figure>\n", "\n", "# <span style=\"color:blue\"><left>Aprendizaje Profundo</left></span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# <span style=\"color:red\"><center>Introducción al concepto de $q$-dimensión</center></span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<figure>\n", " <center>\n", " <img src=\"../Imagenes/Flat_earth.png\" width=\"400\" height=\"300\" align=\"center\"/> \n", " <figcaption>\n", " </figcaption>\n", " </center>\n", "</figure>\n", "\n", "Fuente: <a href=\"https://commons.wikimedia.org/wiki/File:Flat_earth.png\">Trekky0623 at English Wikipedia ("I made this map myself")</a>, Public domain, via Wikimedia Commons" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## <span style=\"color:blue\">Autores</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Alvaro Montenegro, PhD, ammontenegrod@unal.edu.co\n", "1. Daniel Montenegro, Msc, dammontenegrore@unal.edu.co\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Asesora de Medios y Marketing</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Maria del Pilar Montenegro, pmontenegro88@gmail.com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Referencias</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "1. [Christofer. M. Bishop, *Pattern Recognition and machine Learning*, first edition,Springer, 2006](http://libgen.rs/search.php?req=Pattern+Recognition+and+machine+Learning&open=0&res=25&view=simple&phrase=1&column=def).\n", "1. [John A. Lee and Michel Verleysen. *Nonlinear dimensionality reduction*. Springer, first edition, 2007](ibgen.rs/search.php?req=Nonlinear+dimensionality+reduction+Springer&open=0&res=25&view=simple&phrase=1&column=def).\n", "1. [Christopher J. C. Burges, *Dimension Reduction: A Guided Tour*, Foundations and Trends in Machine Learning, Vol. 2, No. 4 (2009) 275–365](https://www.researchgate.net/publication/220416606_Dimension_Reduction_A_Guided_Tour).\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Contenido</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [Introducción](#Introducción)\n", "* [Cuatro métodos de reducción de dimensiones aplicados a datos genómicos](#Cuatro-métodos-de-reducción-de-dimensiones-aplicados-a-datos-genómicos)\n", "* [Concentración de las distancias en espacions n-dimensionales](#Concentración-de-las-distancias-en-espacios-n-dimensionales)\n", " * [Teorema](#Teorema)\n", "* [Propósitos de la reducción de dimensiones](#Propósitos-de-la-reducción-de-dimensiones)\n", "* [ Reducción de dimensiones y reconstrucción de errores](#Reducción-de-dimensiones-y-reconstrucción-de-errores)\n", "* [Un ejemplo: Análisis de Componentes Principales (PCA)](#Un-ejemplo:-Análisis-de-Componentes-Principales-(PCA))\n", "* [Introducción](#Introducción)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Introducción</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En esta lección revisamos los siguientes conceptos.\n", "\n", "1. Curso de la dimensionalidad\n", "1. $q$-dimensión\n", "1. Estimación de la $q$-dimensión\n", "\n", "Pero antes vamos con un entremés." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Cuatro métodos de reducción de dimensiones aplicados a datos genómicos</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<figure>\n", " <center>\n", " <img src=\"../Imagenes/Four_methods_of_dimension_reduction.png\" width=\"800\" height=\"800\" align=\"center\"/> \n", " <figcaption>\n", " </figcaption>\n", " </center>\n", "</figure>\n", "\n", "Fuente: <a href=\"https://commons.wikimedia.org/wiki/File:Four_methods_of_dimension_reduction_applied_to_Thousand_Genomes_genotype_data.png\">Alex Diaz-Papkovich,Luke Anderson-Trocmé,Chief Ben-Eghan,Simon Gravel</a>, <a href=\"https://creativecommons.org/licenses/by/2.5\">CC BY 2.5</a>, via Wikimedia Commons" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Las imágenes muestran el efecto de reducción de dimensión con un conjunto de datos de tipo genómico.\n", "\n", "* **A)** **ACP** mapea individuos en un triángulo con vértices correspondientes a la ascendencia continental africana, asiática y europea. Descartar las componentes principales de varianza más baja conduce a la superposición de poblaciones sin afinidad cercana, como las poblaciones de América Central y del Sur con las del sur de Asia. \n", "* **B)** **t-SNE** forma grupos correspondientes a los continentes, con cierta superposición entre los pueblos europeos y centro y sudamericanos. Los subgrupos más pequeños son visibles dentro de los grupos continentales. La nube de puntos periféricos resulta de la pobre convergencia del método. \n", "* **C)** **UMAP** forma grupos distintos relacionados con el continente con subgrupos claramente definidos. Las poblaciones japonesa, finlandesa, luhya y algunas punjabi y telugu forman grupos separados consistentes con la historia de su población. \n", "* **D)** **UMAP** en los primeros 15 componentes principales forma grupos de escala fina para poblaciones individuales. Los grupos estrechamente relacionados por ascendencia o geografía, como las poblaciones afrocaribeña/afroamericana, española/italiana y kinh/dai, se agrupan. Los ejes en UMAP y t-SNE son arbitrarios. Dado que los algoritmos dan prioridad a las distancias locales, las distancias largas entre clústeres no son significativas. ACB, Caribe Africano en Barbados; ASW, ascendencia africana en el suroeste de EE. UU.; BEB, bengalí; CDX, Dai chino; CEU, residentes de Utah con ascendencia del norte/oeste de Europa; CHB, chino Han; CHS, chino Han del Sur; CLM, colombiana en Medellín, Colombia; ESN, Esan en Nigeria; FIN, finlandés; GBR, británicos en Inglaterra y Escocia; GWD, de Gambia; GTH, guyaratí; SII, Ibérico en España; ITU, telugu indio en el Reino Unido; JPT, japonés; KHV, Kinh en Vietnam; LWK, Luhya en Kenia; MSL, Mende en Sierra Leona; MXL, mexicana en Los Ángeles, California; PEL, peruano; PJL, Punjabi en Lahore, Pakistán; PUR, puertorriqueño; STU, tamil de Sri Lanka en el Reino Unido; TSI, Toscani en Italia; YRI, Yoruba en Nigeria." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Concentración de las distancias en espacios n-dimensionales</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En espacios de alta dimensión las métricas son débiles para discriminar vectores como se muestra en el siguiente resultado." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Teorema </span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sea $\\boldsymbol{y}$ un vector aleatorio $D$-dimensional. Se supone que todas las componentes de $\\boldsymbol{y}$ son independientes e idénticamente distribuidas, con momentos finitos de octavo orden. Entonces la media $\\mu_{||\\boldsymbol{y}||}$ y la varianza $\\sigma^2_{||\\boldsymbol{y}||}$ de la norma euclidiana son\n", "\n", "$$\n", "\\begin{align}\n", "\\mu_{||\\boldsymbol{y}}||&= \\sqrt{aD-b} + \\mathcal{O}(D^{-1})\\\\\n", "\\sigma^2_{||\\boldsymbol{y}||}&= b + \\mathcal{O}(D^{-1/2}),\n", "\\end{align}\n", "$$\n", "\n", "\n", "\n", "donde $a$ y $b$ son parámetros que dependen únicamente de los momentos centrales de orden $1,2,3$ y 4.\n", "\n", "\n", "Por lo tanto, la norma de los vectores aleatorios crece proporcionalmente a $\\sqrt{D}$, como se esperaba, pero las varianzas permanecen más o menos constantes para un $D$ suficientemente grande.\n", "\n", "En otras palabras, la distribución de las normas tiende a estar muy concentrada alrededor de su media." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Propósitos de la reducción de dimensión</span> " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Casi siempre se puede reducir la alta dimensionalidad de los datos. La subsección anterior motiva a reducir la dimensión de los datos para superar algunas de las dificultades causadas por el problema de la maldición de la dimensionalidad. Las principales propiedades que caracterizan a un método de análisis de datos de alta dimensionalidad son:\n", "\n", "\n", "1. Estimar la dimensión intrínseca de los datos. Informalmente esto quiere decir, estimar el número de variables latentes necesarias para representar los datos con un error bajo.\n", "1. Incrustar datos en espacios de dimensión baja para reducir su dimensionalidad.\n", "1. Incrustar datos para recuperar las variables latentes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\"> Reducción de dimensión y reconstrucción de errores</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Por lo general, un método de reducción de dimensiones se guía por un criterio que debe optimizarse. Por ejemplo, en el conocido **análisis de componentes principales (PCA)**, el principio desde un punto de vista geométrico es minimizar la distancia desde los puntos de datos hasta el primer componente, luego hasta el segundo, y así sucesivamente. Equivalente, desde un punto de vista estadístico, PCA maximiza la varianza de los datos representados por el primer componente y así sucesivamente.\n", "\n", "\n", "\n", "Para evaluar un método de reducción, primero se reduce la dimensionalidad y luego se vuelve a expandir, siempre que el preceso pueda ser revertido, al menos parcialmente. Matemáticamente, este error de reconstrucción se puede escribir como\n", "\n", "$$\n", "\\begin{equation}\n", "E_{\\text{cod}} = E_{y}[|| y-\\text{dec}(\\text{cod}(y))||_2^2],\n", "\\end{equation}\n", "$$\n", "\n", "donde $E[]$ es el operador de esperanza. La reducción de la dimensionalidad y la expansión hacia atrás se denotan respectivamente como\n", "\n", "$$\n", "\\begin{align*}\n", "cod: \\mathcal{R}^D \\to \\mathcal{R}^P, \\hspace{2mm} &x = cod(y),\\\\\n", "dec: \\mathcal{R}^P \\to \\mathcal{R}^D, \\hspace{2mm} &y' = dec(x).\n", "\\end{align*}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "<figure>\n", " <center>\n", " <img src=\"../Imagenes/error_reduccion_dim.png\" width=\"800\" height=\"800\" align=\"center\"/> \n", " <figcaption>\n", " </figcaption>\n", " </center>\n", "</figure>\n", "\n", "Fuente: Alvaro Montenegro. Basado en <a href=\"https://commons.wikimedia.org/wiki/File:Dimensionality-reduction.jpg\">Michael Gashler, Dan Ventura, Tony Martinez</a>, <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">CC BY-SA 4.0</a>, via Wikimedia Commons" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:blue\">Un ejemplo: Análisis de Componentes Principales (ACP)</span> " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Una hipótesis esencial en el modelo ACP es que se tiene una matriz $\\mathbf{A}$ de tamaño $N\\times D$, en donde cada fila es de la forma $\\mathbf{y}= [y_1,\\ldots,y_D]^T$ con las $D$ variables observadas, proviene de una transformación lineal $\\mathbf{W}$ de $P$ variables latentes desconocidas, digamos, $\\mathbf{x} = [x_1,\\ldots,x_P]^T$, de tal manera que\n", "\n", "$$\n", "\\begin{equation}\n", "\\mathbf{y = Wx}.\n", "\\end{equation}\n", "$$\n", "\n", "En el ACP convencional no hay una distribución de probabilidad pre-definida de antemano. Sin embargo, Tipping y Bishop (1997) mostraron cómo el ACP puede reformularse como la solución de máxima verosimilitud de un modelo de variable latente específico. En este caso, se supone que el vector latente $\\mathbf{x}$ tiene una distribución gaussiana $\\mathfrak{N}(\\boldsymbol{0},\\boldsymbol{I}_P)$, y el vector observado $\\mathbf{y}$ viene dado por $\\mathbf{y= Wx } + \\boldsymbol{\\mu } + \\boldsymbol{\\epsilon }$, donde $\\epsilon$ es un vector gaussiano de media cero con matriz de covarianza $\\sigma^2\\mathbf{I}_{D}$, y $\\boldsymbol{\\mu}$ es el vector de parámetros de la media. Supondremos que $\\boldsymbol{\\mu}= \\boldsymbol{0}$, y que las variables latentes tienen una distribución gaussiana.\n", "\n", "\n", "Se supone que las columnas de $\\mathbf{W}$ son ortogonales, de forma que $\\mathbf{W}^T\\mathbf{W}= \\mathbf{I}_P$, y que las variables observadas y las latentes están centradas.\n", "\n", "En el paso de procesamiento previo, las variables observadas se centran y escalan para tener variables estandarizadas. Es importante evitar estandarizar variables con una desviación estándar muy baja, porque en este caso el ruido puede ser proporcionalmente grande." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Solución ACP </span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En esta sección se utilizan dos criterios para llegar al mismo método: \n", "\n", "* error de reconstrucción mínimo\n", "* varianza conservada máxima. \n", "\n", "Otro criterio que conduce a la misma solución es la preservación de la distancia (escalamiento multidimensional)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Error de reconstrucción minimal</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Las funciones de codificación y codificación se pueden reescribir como\n", "\n", "$$\n", "\\begin{align}\n", "cod:& \\mathcal{R}^D \\to \\mathcal{R}^P, y \\mapsto x = cod(y) = W^+y,\\\\\n", "dec:& \\mathcal{R}^P \\to \\mathcal{R}^D, x \\mapsto y = dec(y)= Wx,\n", "\\end{align}\n", "$$\n", "\n", "donde $W^+ = (W^T W)^{-1}W^T = W^T$ es la pseudo-inversa izquierda de $W$. Recuerde que asumimos $\\mathbf{W}^T\\mathbf{W}= \\mathbf{I}_P$. Por lo tanto, el error cuadrático medio de la reconstrucción se convierte en\n", "\n", "$$\n", "\\begin{equation}\n", "E_{\\text{cod}} = E_{y}[||y- W W^Ty ||_2^2] = E_y[y^Ty] - E_{y}[y^T WW^T y].\n", "\\end{equation}\n", "$$\n", "\n", "Por lo tanto, minimizar $E_{\\text{cod}}$ es equivalente a maximizar el término $E_{y}[y^T WW^T y]$. Para la muestra observada $y_1,\\ldots,y_N$, la experanza se aproxima mediante la media muestral\n", "\n", "$$\n", "\\begin{equation}\n", "E_{y}[y^T WW^T y] \\approx \\frac{1}{N} \\sum_{i=1}^{N} y_i^T WW^T y_i = \\frac{1}{N} tr(Y^T WW^T Y),\n", "\\end{equation}\n", "$$\n", "\n", "donde $tr(M)$ denota la traza de la matriz $M$ y en donde $Y$ es la matriz de tamaño $D\\times N$ cuyas columnas son los vectores $y_i$.\n", "\n", "Consideremos la descomposición en valor único (SVD) de la matriz $Y$ dada por\n", "\n", "$$\n", "\\begin{equation}\n", "Y= V\\boldsymbol{\\Sigma}U^T,\n", "\\end{equation}\n", "$$\n", "\n", "donde $V$ y $U$ son matrices unitarias y donde $\\boldsymbol{\\Sigma}$ es una matriz del mismo tamaño que $Y$, con $D$ como máximo entradas cero, $\\sigma_d$ llamados valores singulares ubicados en la primera diagonal de $\\boldsymbol{\\Sigma}$, ordenados en orden descendente. Es fácil ver que\n", "$$\n", "\\begin{equation}\n", "\\arg \\max\\limits_{W} \\frac{1}{N} tr(Y^T WW^T Y) = V I_{D\\times P},\n", "\\end{equation}\n", "$$\n", "\n", "para un $P$ dado. $I_{D\\times P}$ es tal que las primeras columnas $P$ corresponden a la identidad $I_P$.\n", "\n", "\n", "Las variables latentes $P$-dimensionales están dadas por\n", "$$\n", "\\begin{equation}\n", "\\widehat{x} = I_{P\\times D} V^T Y.\n", "\\end{equation}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">Estimación de la dimensión intrínseca</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si el modelo se mantiene razonablemente bien, los valores propios grandes corresponden a la varianza de las variables latentes y los más pequeños se deben al ruido y otras imperfecciones. Idealmente, una brecha visible en el trazado de los valores propios separa los dos tipos de valores propios. Si la brecha no es visible, trazar los valores propios normalizados puede ayudar:\n", "\n", "$$\n", "\\begin{equation}\n", "0 \\le -\\log \\frac{\\lambda_d}{\\lambda_1}.\n", "\\end{equation} \n", "$$\n", "\n", "Otros criterios, por ejemplo preservar los $95\\%$ de la varianza, pueden ser útiles:\n", "\n", "$$\n", "\\begin{equation}\n", "0.95 \\le \\frac{\\sum_{d=1}^{P} \\lambda_d}{\\sum_{d=1}^{D} \\lambda_d}.\n", "\\end{equation} \n", "$$\n", "\n", "Se han desarrollado otros procedimientos más complejos, véase, por ejemplo, el artículo de Bishop (1998), para un procedimiento bayesiano para la detección automática de la dimensión intrínseca." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Una caracterización de los métodos de reducción de dimensión</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Reducción de dimensionalidad dura vs. blanda.\n", "1. Modelo tradicional vs generativo.\n", "1. Modelo lineal frente a no lineal.\n", "1. Modelo continuo vs. discreto.\n", "1. Mapeo implícito versus explícito.\n", "1. Estimación integrada vs externa de la dimensionalidad.\n", "1. Incrustaciones en capas frente a independientes.\n", "1. Sistemas de coordenadas simples versus múltiples.\n", "1. Cuantificación vectorial opcional frente a obligatoria.\n", "1. Algoritmo por lotes vs. en línea.\n", "1. Optimización exacta vs. aproximada.\n", "1. El tipo de criterio a optimizar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## <span style=\"color:blue\">La dimensión intrínsica</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La dimensión intrínseca de un vector aleatorio $\\boldsymbol{y}$ generalmente se define como el número mínimo de parámetros o variables latentes necesarios para describir $\\boldsymbol{y}$. Esta es una definición informal y ambigua, aunque parece clara en la práctica. La dimensión $q$ formaliza y unifica el concepto." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">La $q$-dimensión</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<figure>\n", " <center>\n", " <img src=\"../Imagenes/q-dimension.png\" width=\"400\" height=\"400\" align=\"center\"/> \n", " <figcaption>\n", " </figcaption>\n", " </center>\n", "</figure>\n", "\n", "Fuente: Alvaro Montenegro. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "La definición que adoptaremos proviene de la física. Supongamos que $\\mu$ representa la medida que usamos para medir los objetos que estamos observando. Para $\\epsilon > 0$, el soporte de $\\mu$ se cubre con una cuadrícula multidimensional de cubos con longitud de arista $\\epsilon$. Sea $N(\\epsilon)$ el número de cubos que cortan el soporte de $\\mu$, y sea $p_1,\\ldots, p_{N(\\epsilon)}$ la medida natural de esos cubos. Las medidas se normalizan tal que\n", "\n", "$$\n", "\\begin{equation*}\n", "\\sum_{i=1}^{N(\\epsilon)} p_i =1.\n", "\\end{equation*}\n", "$$\n", "\n", "Entonces definimos la q-dimensión como\n", "\n", "$$\n", "\\begin{align}\n", "D_q(\\mu) &= \\lim\\limits_{\\epsilon \\to 0} \\frac{\\log \\sum_{i=1}^{N(\\epsilon)} p_i^q}{(q-1)\\log \\epsilon}\\\\\n", "\\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Aproximación intuitiva al concepto de $q$-dimensión</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suponga que la muestra de datos que tenemos se ve en la siguiente imagen." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<figure>\n", " <center>\n", " <img src=\"../Imagenes/q-dimension.png\" width=\"400\" height=\"400\" align=\"center\"/> \n", " <figcaption>\n", " </figcaption>\n", " </center>\n", "</figure>\n", "\n", "Fuente: Alvaro Montenegro. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* El volumen de cada caja es $\\epsilon^2$ en la rejilla. Por otro lado, definimos como medida $\\mu$ de los datos en cada bola abierta al número de de elementos dentro de la bola. \n", "* Si cada caja en la rejilla es un bola cerrada, entonces las medidas $\\mu$ de las cajas no vacías son 3,1,2,1,2,3,4,1,2 respectivamente.\n", "* Si hacemos $\\epsilon$ cada vez más pequeño, al final resulta que quedarán cajas solamente con un elemento o con ninguno.\n", "\n", "Entonces el volumen total ocupado por las cajas $C_q(\\mu,\\epsilon)$ en el límite es la suma de todas las medidas, que en el ejemplo coincide con el número de cajas ocupadas. por lo que\n", "\n", "$$\n", "C_q(\\mu,\\epsilon) = \\propto K(\\epsilon^{q-1})^2,\n", "$$\n", "\n", "en donde K es el número de cajas ocupadas.\n", "\n", "Esta instiución se generaliza al espacio *p*-dimensional como\n", "\n", "\n", "$$\n", "C_q(\\mu,\\epsilon) \\propto (\\epsilon^{q-1})^p,\n", "$$\n", "\n", "Si se toma logaritmo a ambos lados se tiene\n", "\n", "$$\n", "p \\propto\\frac{\\log C_q(\\mu,\\epsilon) }{(q-1) \\log \\epsilon}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Dimensión de capacidad: Capacity dimension</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En la segunda definición sea $q=0$, y obtenemos la *dimensión de capacidad* (capacity dimension):\n", "\n", "$$\n", "\\begin{equation}\n", "d_{cap} = D_0(\\mu) = -\\lim\\limits_{\\epsilon \\to 0} \\frac{\\log N(\\epsilon)}{\\log \\epsilon}.\n", "\\end{equation}\n", "$$\n", "Tenga en cuenta que $d_{cap}$ no depende de las medidas naturales $p_i$. $d_{cap}$ también se llama la dimensión *recuento de cajas*. Para una muestra, un algoritmo para calcular $d_{cap}$ es el siguiente.\n", "\n", "1. Determine el hipercubo que circunscribe todos los puntos de datos.\n", "1. Descomponga el hipercubo obtenido en una cuadrícula de hipercubos más pequeños con\n", "longitud del borde $\\epsilon$ (estos cuadros explican el nombre del método).\n", "1. Determine $N(\\epsilon)$, el número de hipercubos que están ocupados por uno o varios puntos de datos.\n", "1. Calcule $\\log (N(\\epsilon))$ y divida por $\\log \\epsilon$.\n", "1. Calcular el límite cuando $\\epsilon$ tiende a cero; esto es $d_{cap}$.\n", "\n", "\n", "Desafortunadamente, el límite a calcular en el último paso parece ser el único obstáculo para la simplicidad general de la técnica. Abajo\n", "se dan algunos consejos para sortear este obstáculo.\n", "\n", "Para una intuición sobre $d_{cap}$ imagine un conjunto de puntos en el espacio tridimensional. Así, para un objeto unidimensional, el número de cajas ocupadas crece proporcionalmente a la longitud del objeto. Para un objeto bidimensional, el número de casillas ocupadas crece proporcionalmente a la superficie del objeto, y así sucesivamente. Por lo tanto, para una variedad $P-$dimensional incrustada en $\\mathcal{R}^D$ se obtiene\n", "\n", "$$\n", "\\begin{equation}\n", "N(\\epsilon) \\propto \\epsilon^P,\n", "\\end{equation}\n", "$$\n", "\n", "así que,\n", "$$\n", "\\begin{equation}\n", "P \\propto \\frac{\\log N(\\epsilon)}{\\log \\epsilon}.\n", "\\end{equation}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Exercicio</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Verificar que la dimensión de capacidad se pueda calcular analíticamente\n", "para la costa de la isla de Koch y es\n", "\n", "$$\n", "\\begin{equation}\n", "d_{cap} = \\frac{\\log 4}{\\log 3} = 1.261859507.\n", "\\end{equation}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Dimensión de la información: Information dimension</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "La dimensión de información ($d_{inf}$) corresponde al caso donde $q=1$. Se puede demostrar que $d_{inf}$ está dado por\n", "\n", "$$\n", "\\begin{equation}\n", "d_{inf} = \\lim\\limits_{\\epsilon \\to 0} \\frac{\\log \\sum_{i=1}^{N(\\epsilon)} p_i \\log p_i}{\\log \\epsilon}\n", "\\end{equation}\n", "$$\n", "\n", "Esta expresión sigue siendo difícil porque, en general, los $p_i$ rara vez se conocen, excepto en el caso en que se supone que todos los $p_i$ son iguales. En tal caso $d_{inf} = d_{cap}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Dimensión correlación </span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La dimensión de correlación corresponde al caso de $q=2$. Cuando los datos son un conjunto de puntos $\\boldsymbol{y}= \\{y_1,\\ldots,y_N\\}$. En este caso $C_2(\\mu,\\epsilon)$ se puede escribir como\n", "\n", "$$\n", "\\begin{equation}\n", "C_2(\\epsilon) = Pr(||\\boldsymbol{y}_i-\\boldsymbol{y}_j ||_2 \\le \\epsilon).\n", "\\end{equation}\n", "$$\n", "\n", "\n", "Entonces, la dimensión de correlación $d_{cor}$ se puede escribir como\n", "\n", "$$\n", "\\begin{equation}\n", "d_{cor} = \\lim\\limits_{\\epsilon \\to 0} \\frac{\\log C_2(\\epsilon)}{\\log \\epsilon}.\n", "\\end{equation}\n", "$$\n", "\n", "Dado un conjunto de puntos $\\boldsymbol{y}$, la dimensión de correlación se estima fácilmente mediante el siguiente procedimiento:\n", "\n", "\n", "1. Calcula las distancias entre todos los puntos posibles $\\boldsymbol{y}_i, \\boldsymbol{y}_j$.\n", "1. Determina la proporción de distancias que son menores o iguales a $\\epsilon$.\n", "1. Calcule $\\log C_2(\\epsilon)$ y divida por $\\log \\epsilon$.\n", "1. Calcular el límite cuando $\\epsilon$ tiende a cero.\n", "\n", "El segundo paso da como resultado una estimación $\\widehat{C}_2(\\epsilon)$ de ${C}_2(\\epsilon)$. La interpretación intuitiva es muy similar a la asociada con la dimensión de capacidad. El problema vuelve a ser el último paso." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <span style=\"color:#4CC9F0\">Estimación práctica de la $q$-dimensión</span>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para superar el problema del límite hacia cero en la dimensión de capacidad y la dimensión de correlación, podemos calcular los valores de $N(\\epsilon)$ o $\\hat{C}(\\epsilon)$ para $\\epsilon$ que oscilan entre las distancias más pequeña y más grande en el conjunto de datos. Un truco para sortear el problema consiste en aplicar la regla de l'Hopital. La regla se puede aplicar porque el numerador y el denominador tienden a $-\\infty$. En el caso de la dimensión de correlación tenemos\n", "\n", "$$\n", "\\begin{align*}\n", "d_{cor} &= \\lim\\limits_{\\epsilon \\to 0} \\frac{\\log \\widehat{C}_2(\\epsilon)}{\\log \\epsilon}\\\\\n", "&= \\lim\\limits_{\\epsilon \\to 0} \\frac{\\partial\\log \\widehat{C}_2(\\epsilon)}{\\partial \\epsilon} \\Biggl{/} \\frac{\\partial \\log \\epsilon}{\\partial \\epsilon}\\\\\n", "&= \\lim\\limits_{\\epsilon \\to 0} \\frac{\\partial\\log \\widehat{C}_2(\\epsilon)}{\\partial \\log \\epsilon}\\\\\n", "&= \\lim\\limits_{\\epsilon_1,\\epsilon_2 \\to 0} \\frac{\\log \\widehat{C}_2(\\epsilon_2)-\\log \\widehat{C}_1(\\epsilon_1)}{\\log \\epsilon_2-\\log \\epsilon_1}\n", "\\end{align*}\n", "$$\n", "\n", "Alternativamente, la dimensión de correlación se puede estimar calculando la derivada numérica de $\\log \\widehat{C}_2(\\exp \\nu)$, con $\\nu = \\log \\epsilon$:\n", "\n", "$$\n", "\\begin{equation}\n", "\\widehat{d}_{cor} = \\frac{d}{d\\nu} \\log \\widehat{C}_2(\\exp \\nu).\n", "\\end{equation}\n", "$$\n", "\n", "Entonces, el $d_{cor}$ se puede estimar como la pendiente de $\\log \\widehat{C}_2(\\epsilon)$ en el gráfico log-log.\n", "\n", "Por ejemplo, el parámetro de regresión de la regresión de $\\log \\widehat{C}_2(\\epsilon) = \\beta \\log \\epsilon + error$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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Xzl8X/2JJdJ1DS/Fvw5u/EWq+M9D16DWodN8YfErxDcaJeLudZovLmkvIrY7JH2PFanaQFAVSa+jaKVtVJbqz+53/T5lX0cXs00/mrfqfKGr/sc+LNa/Zc8L+Cdf8D/B74hPoGpLr15o/iPVb06Pql3PLey3MORaOESB7lGikmt7gS7W3QwsElX6B+A3w9u/hP8ABrw34bv7xb+70axjtZJkzsJUfdTPOxRhVzzhRmuuoqr726u/6f1fUnpFdlb5bhXF/tHfCyT45fs/eN/BkN0tlN4r0K90iO4bO2B54HjVzjnALAnHpXaUVL1VjSnUcJqcd1qeOfsnfC7xx4O1Lxx4i+INv4V0/X/GGpWs62Hh7U59StLWC3sLe1XM81tbOzu0UjkeUAoZVy2Cx9jooqpO5nGPKuVBXzDoP7NXxN8NftGJq0Vp4Hu/B2geIdY8T6RNJr93Hqd9PqUSxvbzw/Ymjhji825YOk0pfbENiZYj6eopLSXP5NfJ2f5pDklKPI9rp/NX/Rs+cP2a/wBj3UPg5+0br/i0+G/h34Vtb46r9pvPDM1w9940kvb2O6jutSWeINHLbhZEQfaLkf6RJsMCYir6Poop3fLGPZW/X9f8tAesnJ9dQrzj4t/Bm78efGT4YeJrI6bEngvV7q91BpsrPPBJpt5aokZCncRJcq2GKgDcQc8H0eihOzuJq6swooopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK+b5/2oPjR49+N/xQ8NfDr4WfDDWtE+GPiC28Nz6l4k+I99ot1f3EujabqrOttBol4ixqmpxxgmYljGx2qCKz/Bv7Qv7U3jHxH4s07/AIUD8INK/wCEU1WPSvtWo/FjV4LbWN1jaXn2myf/AIRk+dbj7V5BfAxPbXCY/d5IB9QUV8//APCx/wBqb/ojfwA/8PJq/wD8zFH/AAsf9qb/AKI38AP/AA8mr/8AzMUAfQFFfP8A/wALH/am/wCiN/AD/wAPJq//AMzFc/4y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\n", "text/plain": [ "<IPython.core.display.Image object>" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "\n", "Image(filename=\"D:/home/Machine Learning Course/images/spiral.jpg\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 4 }