Multidimensional Scaling - Metric MDS
Mire de cerca la imagen, ¿qué observa? Si no reconoce nada, a veces ayuda retroceder un poco, para tener una mejor perspectiva.
¿Y qué observa ahora?
La distancia crea claridad. La imagen general nos permite ver las cosas con una mayor claridad y entender mejor las conexiones. A menudo, así vemos mucho más claro. Con los datos ocurre igual. Cuando nos enfrentamos a un conjunto de datos con miles de variables es necesario una reducción de la dimensión para observar con claridad qué relaciones existen.
Multidimensional scaling
El escalado multidimensional (MDS a partir de ahora) es un algoritmo de reducción de la dimensión que se usa muy frecuentemente para visualizar similitudes entre individuos de un mismo dataset. MDS, a diferencia de otros algoritmos, no usa la matriz de datos $X$ sino que parte de la matriz de distancias. A partir de esta matriz de distancias $D$, MDS trata de reconstruir la matriz $X$ en una menor dimensión manteniendo las distancias originales.
Objetivo
Dada una matriz de distancias o similitudes; $D = (d_{ij})$. MDS encuentra $x_1, …, x_n \in R^p$ de forma que;
\[d_{ij} \approx ||x_{i} - x_{j}||^2\]MDS encuentra una estructura en una dimensión menor que la original ($p$) de forma que las distancias en $R^p$ sean tan similares como sea posible a las distancias en la dimensión original. O sea, MDS trata de encontrar $X = [x_1, x_2, …, x_n]$ de forma que $\lVert x_i - x_j\rVert = d_{ij}$.
Matriz de Gram
La matriz de Gram o matriz de productos escalares se define como:
\[B = X \cdot X^t\]Los elementos de $B$ son los productos escalares de las filas de la matriz $X$, o sea;
\[b_{ij} = \langle x_i, x_j \rangle = \sum_{k=1}^K x_{ik} \cdot x_{jk}\]Una vez conocida $B$ se puede calcular $X$, como luego veremos. Por otra parte, la matriz de distancias se puede escribir en función de los productos escalares, o sea, de $b_{ij}$.
\[d_{ij}^2 = \sum_{k=1}^K (x_{ik}- x_{jk})^2 = \sum_{k=1}^K (x_{ik} \cdot x_{ik}) + (x_{jk} \cdot x_{jk}) - 2 (x_{ik} \cdot x_{jk})=\] \[= \sum_{k=1}^K (x_{ik} \cdot x_{ik}) + \sum_{k=1}^K (x_{jk} \cdot x_{jk}) - 2 \sum_{k=1}^K (x_{ik} \cdot x_{jk}) =\] \[= b_{ii} + b_{jj} - 2 b_{ij}\]Problema del escalado
Como hemos comentado, el objetivo de MDS es encontrar una matriz $X$ tal que $\lVert x_i - x_j\rVert = d_{ij}$. Sin embargo, $X$ no tiene por qué ser única ya que las traslaciones no afectan a $D$. Por ejemplo, si tenemos que $X = [x_1, x_2, …, x_n]^t$ también podríamos tener la solución $X^* = [x_1 + c, x_2 + c, …, x_n + c]^t$ y ambas serían soluciones ya que;
\[\lVert x_i* - x_j*\rVert = \lVert (x_i +c) - (x_j +c) \rVert = \lVert x_i - x_j \rVert = d_{ij}\]Pero $X^*$ estaría escalada por el vector $c$. Para que $X$ sea invariante a traslaciones o rotaciones debemos asumir que $X$ es una matriz centrada con media 0. O sea;
\[\sum_{i=1}^n x_{ik} = 0, \text{para todas las k}\]Teniendo esto en cuenta, si sumamos las columnas de la matriz $B$, tenemos que;
\[\sum_{i=1}^n b_{ij} = \sum_{i=1}^n \langle x_i, x_j \rangle =\] \[= \sum_{i=1}^n \sum_{k=1}^K x_{ik} \cdot x_{jk} = \sum_{k=1}^K x_{jk }\sum_{i=1}^n x_{ik} = 0\]para $j=1,…,n$
Obtención de $B$ usando $D^2$
Para poder reconstruir $X$ primero deberemos obtener la matriz de Gram. Sin embargo, solo contamos con la matriz de distancias. ¿Podríamos llegar a $B$ usando solo $D$ ? 😮
Definamos $T = traza(B) = \sum_{i=1}^n b_{ii}$. Si sumamos la matriz de distancias al cuadrado por filas, tenemos que;
\[\require{cancel} \sum_{i=1}^{n} d_{ij}^2 = \sum_{i=1}^n (b_{ii} + b_{jj} - 2b_{ij}) = \sum_{i=1}^n b_{ii} + \sum_{i=1}^n b_{jj} - 2 \cancelto{0}{\sum_{i=1}^n b_{ij}} =\] \[= T + n \; b_{jj}\]De forma análoga tenemos que $\sum_{j=1}^{n} d_{ij}^2 = T + n \; b_{ii}$. De donde obtenemos que;
\[b_{ii} = \frac{ \sum_{j=1}^{n} d_{ij}^2 - T}{n} \;\; \text{y} \;\; b_{jj} = \frac{ \sum_{i=1}^{n} d_{ij}^2 - T}{n}\]Si sumamos filas y columnas tenemos que;
\[\sum_{i=1}^n\sum_{j=1}^n d_{ij}^2 = \sum_{i=1}^n (T + n \; b_{ii}) = \sum_{i=1}^n T + n \sum_{i=1}^n b_{ii}=\] \[= nT + nT = n(T + T) = 2nT\]Tomando la definición de $d_{ij}^2$ (en función de $b_{ij}$) y las expresiones anteriores, tenemos que;
\[d_{ij} = b_{ii} + b_{jj} - 2b_{ij} = \frac{1}{n} (\sum_{j=1}^{n} d_{ij}^2 - T) + \frac{1}{n} (\sum_{i=1}^{n} d_{ij}^2 - T) -2b_{ij} =\] \[= \frac{1}{n} \sum_{j=1}^n d_{ij}^2 - \frac{T}{n} + \frac{1}{n} \sum_{i=1}^n d_{ij}^2 - \frac{T}{n} - 2b_{ij}=\] \[= \frac{1}{n} \sum_{j=1}^n d_{ij}^2 + \frac{1}{n} \sum_{i=1}^n d_{ij}^2 - \frac{2T}{n} - 2b_{ij}\]Ahora, aplicando el truco del almendruco, multiplicamos la expresión $\frac{2T}{n}$ por $\frac{n}{n}$ y obtenemos; $\frac{2Tn}{n^2}$. Si recordamos $2Tn = \sum_{i=1}^n\sum_{j=1}^n d_{ij}^2 $. Sustituyendo tenemos que;
\[d_{ij} = \frac{1}{n} \sum_{j=1}^n d_{ij}^2 + \frac{1}{n} \sum_{i=1}^n d_{ij}^2 - \frac{1}{n^2} \sum_{i=1}^n\sum_{j=1}^n d_{ij}^2 - 2b_{ij}\]Despejando $b_{ij}$ llegamos a la siguiente expresión;
\[b_{ij} = -\frac{1}{2}(d_{ij} - \frac{1}{n} \sum_{j=1}^n d_{ij}^2 - \frac{1}{n} \sum_{i=1}^n d_{ij}^2 + \frac{1}{n^2}\sum_{i=1}^n\sum_{j=1}^n d_{ij}^2) =\] \[= -\frac{1}{2}(d_{ij} - d_{i.}^2 - d_{.j}^2+d_{..}^2)\]En forma matricial;
\[B = -\frac{1}{2}C_nD^2C_n\]Donde $C_n$ es la matriz de centrado que se define como;
\[C_n = I_n - \frac{1}{n} 1 1^t\]Donde $I_n$ es la matriz identidad y el vector $1$ es un vector columna de unos. Para cualquier matriz $X \in R^{ \; n \times n}$. $C_n X$ resta las medias de las columnas de $X$ y $XC_n$ resta las medias de las filas. Así, $C_n X C_n$ centra filas y columnas.
O sea, podemos obtener la matriz de Gram a partir de la matriz de distancias $d_{ij}$ 🎉 🎉 !!! Ahora ya solo nos queda obtener $X$.
Descomposición de $B$
Dado que la matriz de Gram es simétrica y positiva, siempre tendrá valores propios reales y podemos usar la descomposición de $B$ en vectores y valores propios para obtener $X$.
\[B = V \Lambda V^t = V(\Lambda^{\frac{1}{2}})^t \Lambda^{\frac{1}{2}} V^t = (\Lambda^{\frac{1}{2}} V^t)^t (\Lambda^{\frac{1}{2}} V^t)\]Donde $V$ es la matriz de vectores propios y $\Lambda$ es una matriz diagonal de valores propios. Recordemos que $B = XX^t$. Entonces tenemos que;
\[B = (\Lambda^{\frac{1}{2}} V^t)^t (\Lambda^{\frac{1}{2}} V^t) = X X^t\]De donde se observa fácilmente que;
\[X = V \Lambda^{\frac{1}{2}} = V \sqrt{\Lambda}\]Al fin! Ya tenemos una expresión para obtener $X$ 😈 Podemos definir ahora una matriz $X$ de una dimensión $p$ escogiendo los $p$ vectores propios asociados a los $p$ mayores valores propios de $B$.
\[X_p = V_p\sqrt{\Lambda_p}\]Algoritmo MDS
Entrada: Matriz de distancias o similitudes
Salida: Matriz $X$
Paso 1
Calcular la matriz de Gram como; $B = -\frac{1}{2}C_nD^2C_n$
Paso 2
Encontrar los vectores y valores propios de $B$
Paso 3
Usar los $p$ vectores propios asociados a los $p$ mayores valores propios para construir la matriz $X_p$
Referencias
- Data Science y redes complejas (Eloy Vicente Cestero y Alfonso Mateos Caballero)
- Multidimensional Scaling (Drew Wilimitis)
- Lecture 8: Multidimensional scaling (Sungkyu Jung)