# Representación bidimensional de obras de arte utilizando t-SNE
*Última actualización:* 17 de junio de 2022
### Autores:
* Carlos Eduardo López de la Cerda Bazaldúa
* Juan Humberto Escalona Santiago
* Fernando Miñaur Olivares
---
## Objetivo
Utilizar el método de reducción de dimensionalidad t-SNE para poder visualizar en un espacio de dos dimensiones un conjunto amplio de obras de arte de diferentes estilos.
## Introducción
La existencia de grandes conjuntos de datos conlleva un desafío enorme para poder representar diversas características existentes en dimensiones bajas. Dentro de los procesos de análisis de datos, tener la capacidad de explorar de manera visual algunos componentes de la información, permite desarrollar intuición y generar hipótesis sobre los procesos que se estudian.
A pesar de que técnicas como la de Análisis de Componentes Principales (PCA por sus siglas en inglés) soluciona la tarea de reducir el número de variables, está diseñada para que de manera lineal separe puntos disímiles lo más posible en un espacio de baja dimensión. De esta manera los componentes principales, como se conoce a la agregación de información de las variables originales, son ortogonales entre sí.
En comparación, el método t-SNE se enfoca en reducir a un espacio de dimensión baja las variables mantienendo los puntos similares lo más cercanos posibles sin utilizar una combinación lineal. Adicionalmente, esta herramienta es capaz de capturar la mayor parte de la estructura local de los datos, a la par de revelar en paralelo parte de la estructura global tal como la presencia de clusters en distintas escalas [(Van der Maaten y Hilton, 2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf).
En este proyecto aplicamos la técnica de t-SNE para poder visualizar en tan solo dos dimensiones más de 1,100 obras de arte las cuales obtuvimos de *scrappear* el sitio WikiArt. Con esta estrategia conseguimos identificar patrones locales y globales de arte de estilo japonés, renacentista, islámico y griego antiguo. Encontramos en nuestro análisis que a pesar de que algunas obras pertenecían a una categoría artística distinta, el modelos les asignó posiciones cercanas al compartir elementos tales como el color, el tipo de obra (óleo, cerámica, etc.) o los elementos representados. En los patrones globales, solo el arte japonés y renacentista son ligeramente diferenciables entre sí pero el islámico y griego antiguo no tienen un patrón de clasificación marcado.
## Obras de arte como problema de dimensión alta
>“El objetivo del arte es representar no la apariencia externa de las cosas, sino su significado interior.” - Aristóteles
Para este proyecto utilizamos un conjunto de 1,172 imágenes extraídas de la página de Internet [Wikiart](https://www.wikiart.org/es). Este sitio alberga una colección amplia de imágenes de obras de arte de todas partes del mundo incluyendo óleos, cerámica, esculturas, acuarelas, grabados y muchos otros tipos de expresiones artísticas. La colección es vasta y la página incluye una división por estilos. De acuerdo con los autores del sitio: "El estilo de una obra de arte, se define por sus elementos visuales específicos, las técnicas y los métodos empleados para realizarlo. Generalmente, queda enmarcado en un determinado movimiento de arte o una escuela (grupo), en el que está asociado su autor" [(Wikiart, 2022)](https://www.wikiart.org/es).
Con esto en mente, para nuestro proyecto decidimos utilizar cuatro estilos distintos:
- Arte Japonés
- Arte Islámico
- Arte del Renacimiento Occidental
- Arte de Grecia Antigua
Esta elección nos permite tener representatividad de expresiones artísticas de diversas culturas, religiones y estilos de vida en distintas zonas del mundo y en momentos históricos distintos.
Todas las imágenes de las obras albergadas en el sitio para estos estilos se extrajeron de manera automatizada utilizando una técnica conocida como *web scrapping* por medio de módulos implementados en el lenguaje de programación Python. Adicionalmente se guardó la siguiente información:
* Url asociado a la imagen
* Título
* Autor(es)
* Año de creación
Con todo esto logramos construir una base de datos lista para el procesamiento de nuestro algoritmo. Por razones de simplicidad y dado el poder de cómputo necesario para trabajar con imágenes optamos por guardar toda la información dentro de un [pickle](https://docs.python.org/3/library/pickle.html) que cargamos posteriormente a Google Colab.
Tras analizar más a fondo la base de datos con las variables extraídas obtuvimos la distribución de obras de arte para cada uno de los estilos elegidos:

De la anterior figura, se puede observar que las clases no son de un tamaño uniforme. Por un lado contamos con más de 430 obras relacionadas con el arte japonés, nuestra clase más numerosa, y aproximadamente 170 obras relacionadas con el griego antiguo, nuestra clase con menores observaciones.
En la siguiente imagen se pueden apreciar ejemplos de obras artísticas de cada una de las clases que elegimos para nuestro trabajo:

A pesar de que ninguno de nosotros somos expertos en arte, es necesario hacer algunas aclaraciones pertinentes sobre los datos que recabamos para nuestra base y el objetivo que buscamos al aplicar un algoritmo de reducción de dimensionalidad.
Con tan solo estos ejemplos de los diferentes estilos es posible identificar la gran y vasta heterogeneidad que existe en cuanto a las obras. Algunas piezas son óleos, otras bocetos a lápiz, otras caligrafías inscritas en metales preciosos, otras escultura de cerámica y algunas más de barro. Esto aumenta la riqueza de nuestra base pero nos demanda atención para notar que incluso dentro de las misma categoría de estilos podríamos encontrarnos con desafíos dada la variedad de obras.
La cita al inicio de nuestra sección, atribuida al filósofo Aristóteles, nos invita a reflexionar sobre los posibles alcances de nuestro proyecto. Con el uso de técnicas de Aprendizaje de Máquina buscaremos reducir la enorme cantidad de dimensiones presentes en nuestras imágenes: colores, formas, contrastes de luz, volumen, materiales, entre muchas otras, a un espacio de dimensionalidad baja. Sin embargo, al tratarse de arte, ¡queda la icógnita de si extraemos algo de su significado interior!
## El método t-SNE para reducir dimensionalidad
La reducción de dimensionalidad es una importante herramienta en las operaciones de Aprendizaje de Máquina que ayuda tanto en pasos de preprocesamiento que sirven como puerta de entrada a otros algortimos, como una meta en sí misma para visualización, interpolación y compresión de información [(Hinton y Roweis, 2002)](https://www.cs.toronto.edu/~hinton/absps/sne.pdf).
Siguiendo el desarrollo de [Van der Maaten (2014)](http://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf), el co-creador del método, en su texto muestra que lamentablemente los enfoques de la análitica visual en el estudio de los datos se encuestran estancados y caracterizados por técnicas de visualización *tradicionales* como el uso de histogramas. Estas técnicas se enfrentan con el desafío de que solo pueden procesar una o pocas variables a la vez, lo cual las vuelve incompatibles para fuentes de datos multidimensionales.
A diferencia de estos enfoques tradicionales, los métodos de reducción de dimensionalidad tienen la tarea de convertir un enorme número de variables a espacios de dos o tres dimensiones siempre manteniendo el objetivo primordial de preservar lo más posible la estructura original de los datos. t-SNE es capaz de cumplir esta tarea manteniendo los puntos símilares cercanos, algo muy útil para procesar los datos.
### Comparación con el método de Análisis de Componentes Principales
Existen algunos métodos populares para reducir la dimensionalidad tal como el Análisis de Componentes Principales, el cual se basa en mantener puntos que son *disímiles* lo más alejados posible. Cada componente principal ($Z_i$) se obtiene por medio de una combinación lineal de las variables originales. Se pueden entender como nuevas variables que se adquieren al combinar de una determinada forma los atributos iniciales donde la primera componente principal de un grupo de variables $(X_1, X_2, …, X_p)$ es la combinación lineal normalizada de dichas variables que tiene mayor varianza.
Usando los gráficos y la descripción de [Amat (2017)](https://www.cienciadedatos.net/documentos/35_principal_component_analysis#), una forma intuitiva de entender el proceso de PCA consiste en interpretar las componentes principales desde un punto de vista geométrico. Suponiendo un conjunto de observaciones con valores en dos variables determinadas $(X_1, X_2)$ y para los cuales queremos obtener solo dos componentes, el vector que define la primera componente principal ($Z_1$) sigue la dirección en la que las observaciones varían más (la linea roja en la figura de abajo). La proyección de cada observación sobre esa dirección equivale al valor de la primera componente para dicha observación (principal component scores, $z_{i1}$).

```
Proyección de la primera componente principal. Gráfico tomado de Amat (2017)
```
La segunda componente $(Z_2)$ sigue la segunda dirección en la que los datos muestran mayor varianza y que no está correlacionada con la primera componente. La condición de no correlación entre componentes principales equivale a decir que sus direcciones son ortogonales.

```
Proyección de la segunda componente principal. Gráfico tomado de Amat (2017)
```
Fuera de la explicación geométrica y aumentando el posible número de componentes principales, la manera de calcular cada uno de estos es encontrando los valores $\phi$ (conocidos como *loadings*) que permitan combinar las variables originales maximizando la varianza explicada de la siguiente expresión:
$$
Z_1 = \phi_{11} X_1+\phi_{21} X_2+...+\phi_{pi} X_p
$$
Este método es útil para muchas aplicaciones como la creación de índices o para reducir la calidad de las imágenes bajo el dominio de las técnicas de visión por computadora. Sin embargo, tiene la enorme limitación de que solo toma en cuenta combinaciones lineales de las variables originales y que en muchos casos conviene pensar en las agrupaciones de observaciones poniendo énfasis en mantener observaciones similares cerca en lugar de separar aquellas que sean distintas.
### Fundamentos del t-SNE.
El método t-SNE presentado por [Van der Mateen y Hilton (2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf) utiliza los fundamentos y el algortimo del *Stochastic Neighbor Embedding* (SNE) de [Hinton y Roweis (2002)](https://www.cs.toronto.edu/~hinton/absps/sne.pdf), pero modifica la función de costo en dos maneras: 1) usa una versión simétrica de la función que genera gradientes mucho más simplicados y 2) usa una distribución t de Student en lugar de una Gaussiana para medir la similitud entre dos puntos en una nueva proyección de baja dimensionalidad. Conviene entender los pasos del proceso original para después especificar cuales son las fortalezas de la adaptación de Van der Mateen y Hilton.
El primer paso del algoritmo es equivalente entre SNE y t-SNE y consiste en convertir las distancias euclídeanas multidimensionales entre pares de observaciones en probabilidades condicionales que representen similaridad. En lugar de medir la similitud entre dos observaciones $x_i$ y $x_j$ mediante la distancia euclídeana, se mide como la probabilidad condicional $(p_{j|i})$ de que $x_j$ fuese seleccionada como observación vecina de $x_i$ si las observaciones perteneciesen a una distribución de densidad gaussiana centrada en $x_i$. Para observaciones cercanas, $p_{j|i}$ es alta, mientras que para observaciones alejadas la probabilidad es prácticamente infinitesimal [(Van der Mateen y Hilton, 2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf). En palabras más simples, este paso responde: a partir de un punto de partida $x_i$ ¿qué tan probable es que el punto cercano $x_j$ también sea su vecino si proyectamos ambos en una distribución gaussiana centrada en $x_i$?
La definición del artículo original expresa la probabilidad $p_{j|i}$ como:
$$
p_{j \mid i}=\frac{\exp \left(-\left\|x_{i}-x_{j}\right\|^{2} / 2 \sigma_{i}^{2}\right)}{\sum_{k \neq i} \exp \left(-\left\|x_{i}-x_{k}\right\|^{2} / 2 \sigma_{i}^{2}\right)}
$$
donde $k$ es el número efectivo de vecinos.
Pero fácilmente la podemos transformar como:
$$
p_{j|i} = \frac{1}{P_i}\exp\left(- ||x_j - x_i ||^2 / 2\sigma_i^2 \right)
$$
Donde $P_i$ es una constante de normalización tal que la suma de todas las probabilidades de sea igual a 1. Esto es: $\sum_j {p_{j|i}} = 1$ .
En ambas expresiones equivalentes, $\sigma_i$ representa la varianza de la distribución gaussiana centrada en $x_i$. Volveremos a hablar más sobre este valor, aunque por el momento conviene razonar que cuando la $\sigma$ es chica, o sea una distribución con muy poca dispersión, si $x_i$ y $x_j$ están aunque sea un poco separados, $p_{j|i}\approx 0$ [(González, 2022)](https://felipegonzalez.github.io/metodos-analiticos-Xmcd-2022/t-sne-y-reducción-de-dimensionalidad.html), y que además este valor puede cambiar conforme la densidad de los puntos.
El siguiente paso del algoritmo consiste en crear dos observaciones $y_i$, $y_j$ homólogas a $x_i$ y $x_j$ pero en una dimensionalidad menor, cuya distancia se define como la probabilidad condicional $q_{j|i}$. La idea es intentar aproximar las similitudes derivadas:
$$ p_{j|i} \approx q_{j|i},$$
Si las observaciones $y_i$, $y_j$ creadas en el espacio de menor dimensión son fieles representaciones de las observaciones $x_i$ y $x_j$ del espacio superior entonces, las probabilidades condicionales $p_{j|i}$ y $q_{j|i}$ deben ser exactamente las mismas, o lo que es lo mismo, su diferencia tiene que ser cero [(Amat, 2017; ](https://www.cienciadedatos.net/documentos/35_principal_component_analysis#t-SNE)[González, 2022)](https://felipegonzalez.github.io/metodos-analiticos-Xmcd-2022/t-sne-y-reducción-de-dimensionalidad.html).
Es en la definición de $q_{j|i}$ donde empiezan las diferencias entre SNE y t-SNE. Partiendo de una varianza fija, la versión original del SNE de [Hinton y Roweis (2002)](https://www.cs.toronto.edu/~hinton/absps/sne.pdf) define de manera análoga a $p_{j|i}$:
$$
q_{i j}=\frac{\exp \left(-\left\|\mathbf{y}_{i}-\mathbf{y}_{j}\right\|^{2}\right)}{\sum_{k \neq i} \exp \left(-\left\|\mathbf{y}_{i}-\mathbf{y}_{k}\right\|^{2}\right)}
$$
o lo que es lo mismo utilizando $Q_i$ como constante de normalización [(González, 2022)](https://felipegonzalez.github.io/metodos-analiticos-Xmcd-2022/t-sne-y-reducción-de-dimensionalidad.html):
$$q_{j|i} = \frac{1}{Q_i}\exp\left(- ||y_j - y_i ||^2 \right)$$
Así regresamos a una proyección dentro los valores de $y$ dentro de una distribución _gaussiana_ que busca imitar la estrucutura original de los puntos.
Por algunos años la definición original de $q_{j|i}$ prevaleció hasta la publicación del método t-SNE por [Van der Mateen y Hilton (2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf) quienes proponen explicar la probabilidad de los puntos en la dimensión baja como:
$$
q_{i j}=\frac{\left(1+\left\|y_{i}-y_{j}\right\|^{2}\right)^{-1}}{\sum_{k \neq l}\left(1+\left\|y_{k}-y_{l}\right\|^{2}\right)^{-1}}
$$
donde en lugar de usar una distribución gaussiana, usan una distribución t de Student con un grado de libertad.
La distribución t de Student tiene colas de distribución más pesadas lo que provoca un rango mucho más amplio para las proyecciones de los datos. En la práctica esto es deseable ya que objetos que son muy distintos en el espacio de alta dimensionalidad $x_i$ y $x_j$ también son modelados con mucha separación en las contrapartes $y_i$ y $y_j$ y crea más espacio para las distancias pequeñas (i.e. la estructura local de los datos) en el espacio de baja dimensionalidad [(Van der Maaten, 2014)](http://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf). Adicionalmente el cambio de distribución tiene ventajas computacionales ya que es mucho más rápido evaluar la densidad de un punto sin tener que hacer cálculos exponenciales [Van der Mateen y Hilton (2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf).
Para conseguir que $p_{j|i}$ $\approx$ $q_{j|i}$, el objetivo propuesto en SNE es minimizar la divergencia de Kullback-Leibler (KL) la cual hace las veces de función de costo:
$$
\min_{y^{1}, y^{2}, \ldots, y^{(n)}} \sum_{i,j} p_{j|i} \log \frac{p_{j|i}}{q_{j|i}}
$$
que también podemos entender como una forma de medir distancias (o similitudes) entre distribuciones de probabilidad [(González, 2022)](https://felipegonzalez.github.io/metodos-analiticos-Xmcd-2022/t-sne-y-reducción-de-dimensionalidad.html).
El interés de minimizar esta función objetivo se centra en modelar valores altos de $p_{i|j}$ (objetos similares) con valores altos en $q_{i|j}$ (puntos cercanos en el espacio de baja dimensión). De aquí se sigue que si $p_{j|i} = q_{j|i}$, entonces la divergencia es 0.
Una advertencia que hacen los autores [Van der Mateen y Hilton (2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf) es que debido a que la divergencia KL no es simétrica, diferentes tipos de errores en los pares de puntos en la dimensión baja no son pesados de la misma manera. En particular, hay un largo costo de usar puntos muy separados para representar puntos cercanos (por ejemplo, cuando obtenemos una $q_{j|i}$ para una $p_{j|i}$ grande), pero solo un pequeño costo para los casos de usar puntos cercanos en la proyección de baja dimensionalidad para representar puntos muy separados. Por esto el método presume de enfocarse en modelar valores altos de $p_{i|j}$ (objetos similares) con valores altos de $q_{i|j}$ (puntos cercanos en la proyección en el nuevo espacio) [(Van der Maaten, 2014)](http://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf).
De manera computacional la solución de la minimización se ejecuta con algoritmos de descenso del gradiente y dado que implica la definición $q_{i|j}$, de nueva cuenta hay diferencias entre SNE y t-SNE.
La manera original define el descenso tal que:
$$
\frac{\partial C}{\partial \mathbf{y}_{i}}=2 \sum_{j}\left(\mathbf{y}_{i}-\mathbf{y}_{j}\right)\left(p_{i j}-q_{i j}+p_{j i}-q_{j i}\right)
$$
que tiene la interpretración de una suma de fuerzas que se atraen o se repelen dependiendo de si la observación es vecina en los casos esperados [(Hinton y Roweis 2002)](https://www.cs.toronto.edu/~hinton/absps/sne.pdf).
Con el nuevo planteamiento de t-SNE el descenso del gradiente se define como:
$$
\frac{\partial C}{\partial \mathbf{y}_{i}}=4 \sum_{j \neq i}\left(p_{i j}-q_{i j}\right) q_{i j} Z\left(\mathbf{y}_{i}-\mathbf{y}_{j}\right)
$$
donde $Z=\sum_{k \neq l}\left(1+\left\|\mathbf{y}_{k}-\mathbf{y}_{l}\right\|^{2}\right)^{-1}$ cumple el rol de un término de normalización. No obstante, la interpretación de fuerzas que se repelen y se atraen persiste. La solución de este problema en términos computacionales ha sido objeto de estudio en algunos artículos [(Van der Maaten, 2014)](http://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf).
El último punto importante en cuanto a la especificación del modelo es el parámetro de $\sigma_i$ que marca la varianza de la distribución gaussiana centrada en $x_i$ con la cual se define $p_{j|i}$. De acuerdo con Van der Mateen y Hilton [(2008)](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf), no hay un único valor de $\sigma_i$ que siempre sea optimo debido a que la densidad de los datos varía. En regiones densas un valor pequeño de $\sigma_i$ es más apropiado que en regiones con sin tanta concentración. t-SNE realiza una búsqueda binaria para encontrar el valor óptimo $\sigma_i$ con una perplejidad fijada por el usuario. La perplejidad puede entenderse como una medida del número de observaciones vecinas que tienen que emplearse en cada estimación local.
## Implementación
El método t-SNE para poder visualizar patrones de grandes bases de datos en tan solo unas pocas dimensiones se vuelve particularmente atractivo para aquellos casos donde no resulta tan evidente las características que cada elemento comparte entre sí.
En nuestra base de datos nos enfrentamos a un desafío símilar dada la gran heterogeneidad de tipos de obras con las que contamos; un punto que compartimos con otros mega proyectos como el del Google Arte [(Diagne, Barradeu y Doury 2018)](https://experiments.withgoogle.com/t-sne-map). No obstante, un desafío previo consiste en lograr transformar las imágenes en arreglos numéricos, por medio de matrices, vectores o tensores, para poder aplicar toda la teoría expuesta en las secciones anteriores.
En los últimos años el área de Aprendizaje Profundo dentro de la Ciencia de Datos ha conseguido avances impresionantes en esta materia revolucionando el campo de visión por computadora. Las redes de aprendizaje profundo se enfocan en emular la manera en la que los humanos adquirimos conocimiento y permitiendo que aprendan estructuras jerárquicas de representaciones y abstracciones de diversos patrones de imagen, video o sonido.
La idea principal detrás de estos métodos consiste en replicar las redes neuronales cerebrales de manera que cada una tiene diferentes receptores de entrada y una de salida. Por medio de capas, en cada una de las secciones de los algoritmos se va extrayendo información de diversos detalles.
Para nuestra implementación, decidimos utilizar una red preentrenada bajo la arquitectura DenseNet121 propuesta por [Huang et.al. (2016)](https://arxiv.org/abs/1608.06993) entre cuyos autores está el mismo creador del método t-SNE Laurens van der Maaten y para la cual también es posible utilizar los pesos de la enorme base de datos de ImageNet. Esta arquitectura se encuentra ya implementada dentro de la [API de Keras](https://keras.io/api/applications/densenet/#densenet121-function) y lista para utilizarse en Python. Para aumentar el poder de cómputo utilizamos los servicios de Google Colab.
De la arquitectura empleamos desde la primera hasta la penúltima capa de la red en las cuales el modelo estimó 7,037,504 de parámetros. Cada uno de estos pasos intermedios fue extrayendo información de las imágenes como el color y algunos patrones del contenido como la forma de ciertos elementos. Deshechamos la última capa (la de clasificación) para que en ese paso pudiéramos regresar cada una de nuestras imágenes a un vector con todos los elementos que extrajo la red.
Juntando el número de renglones (el número de obras) con el número de atributos extraídos por la red terminamos con una base de datos de dimensión 1172 x 16384. Es sobre este conjunto de datos que aplicamos el método t-SNE. Determinamos dos dimensiones y tras hacer algunos experimentos con el parámetro de perplejidad obtuvimos buenos resultados con un valor igual a 30.
Esta implementación nos permitió de muy buena manera lograr sistematizar todas las características existentes en las imágenes en una visualización muy simple de dos dimensiones en la cual podemos encontrar estructuras comunes en casi todas las coordenadas que exploremos.
## Resultados
Con la implementación de la red neuronal preentrenada a la cual le aplicamos el método de t-SNE en la última capa, obtuvimos una representación de cada punto de la siguiente manera.

La guía de colores identifica los estilos y los ejes marcan las dos dimensiones que impusimos para nuestro t-SNE. A simple vista los estilos no son distintos entre sí, solo con la ligera excepción entre en arte japonés y el renacentista que parecen concentrarse en extremos distintos. La gráfica interactiva se puede descargar [aquí](https://drive.google.com/file/d/1qBD0_1QuoUk3uEcHUQiY76kwXWWukJmk/view?usp=sharing).
La visualización tiene mucho más sentido cuando observamos directamente las imágenes de las obras artísiticas que simboliza cada punto y así podemos ver los patrones existentes dentro de nuestra base.

La representación bidimensional lograda con el método de t-SNE cumple satisfactoriamente con mantener cercanas estructuras que son similares y resume la enorme cantidad de dimensiones existentes para el conjunto de obras con un análisis visual simple en dos dimensiones.
Haciendo un acercamiento a nuestros resultados encontramos algunos patrones marcados en cuanto a los elementos que permanecen a una distancia cercana que evidencian como el método concentró colores, patrones, tipos de obra y estructuras. Por citar algunos ejemplos puntuales dentro del gráfico los siguientes elementos se mantuvieron juntos: jarrones y platos, obras de tinta negra (también conocidas como tinta china), rostros de musas japonesas (*o geishas*), bocetos a papel, inscripciones en piedra, caligrafías, retratos de rostros a color y las representaciones de santidades. La imagen con mejor resolución la podrán encontrar [aquí](https://drive.google.com/file/d/1deAvC7oowy5nxmJhjzGBEPKzLnqwLTYc/view?usp=sharing).
Algunos ejemplos de estos acercamientos se muestran a continuación:
### 1) Representaciones de teatro japonés

### 2) Obras de tinta negra

### 3) Jarrones de barro

## Conclusión
En este proyecto decidimos utilizar el método de reducción de dimensionalidad t-SNE para un conjunto de más de 1,100 obras de arte. Esta herramienta, a diferencia de otros enfoques como PCA, se centra en mantener puntos similares lo más cercanos posibles preservando la estructura original de los datos. De igual forma, usamos este método para realizar un análisis visual al reducir todos los atributos a dos dimensiones.
En los desafíos de la implementación tuvimos que *scrappear* todas las imágenes de obras de 4 estilos distintos del sitio de internet Wikiart y utilizar un tipo de red neuronal preentrenada para extraer los elementos de las obras a un arreglo numérico. Utilizamos la penúltima capa de la red para aplicar nuestro método t-SNE fijando un valor de perplejidad de 30 y el número de dimensiones a 2. Obtuvimos buenos resultados dado que el modelo logró mantener cercanos algunos patrones del arte como las formas, tipos de obras, colores, entre muchos otros.
## Referencias
[Amat, Joaquín. *Análisis de Componentes Principales (Principal Component Analysis, PCA) y t-SNE* 2017.](https://www.cienciadedatos.net/documentos/35_principal_component_analysis)
[Diagne, Cyril. Barradeau, Nicolas & Doury, Simon - t-SNE Map. Experiments with Google 2018.](https://experiments.withgoogle.com/t-sne-map)
[González, Felipe. *t-SNE y reducción de dimensionalidad | Métodos analíticos*, ITAM 2022.](https://felipegonzalez.github.io/metodos-analiticos-mcd-2022/t-sne-y-reducci%C3%B3n-de-dimensionalidad.html)
[Hinton, Geoffrey. Roweis, Sam. *Stochastic Neighbor Embedding* Advances in Neural Information Processing Systems 15 (NIPS 2002)](https://www.cs.toronto.edu/~hinton/absps/sne.pdf)
[Huang, Gao. Liu, Zhuang. Van Der Maaten, Laurens. Weinberger, Kilian Q. *Densely Connected Convolutional Networks*. Computer Vision and Pattern Recognition 2017.](https://arxiv.org/abs/1608.06993)
[Keras. *DenseNet*, DenseNet121. Keras API Reference 2022.](https://keras.io/api/applications/densenet/#densenet121-function)
[Sood, Ahmit. *Every piece of art you've ever wanted to see up close and searchable* | TED Talk 2016.](https://www.ted.com/talks/amit_sood_every_piece_of_art_you_ve_ever_wanted_to_see_up_close_and_searchable)
[Van der Maaten, Laurens. Hinton, Geoffrey. *Visualizing Data using t-SNE* Journal of Machine Learning Research 9. 2008](https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf)
[Van der Maaten, Laurens. *Accelerating t-SNE using Tree-Based Algorithms* Journal of Machine Learning Research 15. 2014](http://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf)
[WikiArt.org - Visual Art Encyclopedia. 2022](https://www.wikiart.org/es)