Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

tsne

t-Distributed estocástico vecino incrustación

Descripción

ejemplo

Y = tsne(X) Devuelve una matriz de incrustaciones bidimensionales de las filas de alta cota de.X

ejemplo

Y = tsne(X,Name,Value) modifica las incorporaciones mediante las opciones especificadas por uno o más argumentos de par nombre-valor.

ejemplo

[Y,loss] = tsne(___), para cualquier argumento de entrada, también devuelve la divergencia Kullback-Leibler entre las distribuciones conjuntas que modelan los datos y la incrustación.XY

Ejemplos

contraer todo

El conjunto de datos de iris de Fisher tiene mediciones en cuatro dimensiones de iris, y la clasificación correspondiente en especies. Visualice estos datos reduciendo la dimensión utilizando.tsne

load fisheriris rng default % for reproducibility Y = tsne(meas); gscatter(Y(:,1),Y(:,2),species)

Utilice varias métricas de distancia para tratar de obtener una mejor separación entre las especies en los datos de iris de Fisher.

load fisheriris  rng('default') % for reproducibility Y = tsne(meas,'Algorithm','exact','Distance','mahalanobis'); subplot(2,2,1) gscatter(Y(:,1),Y(:,2),species) title('Mahalanobis')  rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','cosine'); subplot(2,2,2) gscatter(Y(:,1),Y(:,2),species) title('Cosine')  rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','chebychev'); subplot(2,2,3) gscatter(Y(:,1),Y(:,2),species) title('Chebychev')  rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','euclidean'); subplot(2,2,4) gscatter(Y(:,1),Y(:,2),species) title('Euclidean')

En este caso, el coseno, Chebychev, y las métricas de distancia euclidiana dan razonablemente buena separación de los racimos. Pero la métrica de distancia Mahalanobis no da una buena separación.

quita las filas de datos de entrada que contienen entradas.tsneNaN Por lo tanto, debe quitar dichas filas de los datos de clasificación antes de trazar.

Por ejemplo, cambie algunas entradas aleatorias en los datos de iris de Fisher a.NaN

load fisheriris rng default % for reproducibility meas(rand(size(meas)) < 0.05) = NaN;

Inserte los datos de cuatro dimensiones en dos cotas utilizando.tsne

Y = tsne(meas,'Algorithm','exact');
Warning: Rows with NaN missing values in X or 'InitialY' values are removed. 

Determine cuántas filas se eliminaron de la incrustación.

length(species)-length(Y)
ans = 22 

Prepárese para trazar el resultado localizando las filas que no tienen valores.measNaN

goodrows = not(any(isnan(meas),2));

Graficar los resultados utilizando sólo las filas de que corresponden a filas de sin valores.speciesmeasNaN

gscatter(Y(:,1),Y(:,2),species(goodrows))

Busque incrustaciones en 2-D y 3-D de los datos de iris de Fisher y compare la pérdida de cada incrustación. Es probable que la pérdida sea menor para una incrustación de 3-D, porque esta incrustación tiene más libertad para coincidir con los datos originales.

load fisheriris rng default % for reproducibility [Y,loss] = tsne(meas,'Algorithm','exact'); rng default % for fair comparison [Y2,loss2] = tsne(meas,'Algorithm','exact','NumDimensions',3); fprintf('2-D embedding has loss %g, and 3-D embedding has loss %g.\n',loss,loss2)
2-D embedding has loss 0.122669, and 3-D embedding has loss 0.0985112. 

Como era de esperar, la incrustación en 3-D tiene menor pérdida.

Visualiza las incrustaciones. Use colores RGB y.[1 0 0][0 1 0][0 0 1]

Para el trazado 3D, convierta la especie en valores numéricos utilizando el comando y, a continuación, convierta los valores numéricos en colores RGB utilizando la función como se indica a continuación.Categóricosparse Si es un vector de enteros positivos 1, 2, o 3, que corresponde a los datos de la especie, entonces el comandov

sparse(1:numel(v),v,ones(size(v)))

es una matriz dispersa cuyas filas son los colores RGB de la especie.

gscatter(Y(:,1),Y(:,2),species,eye(3)) title('2-D Embedding')

figure v = double(categorical(species)); c = full(sparse(1:numel(v),v,ones(size(v)),numel(v),3)); scatter3(Y2(:,1),Y2(:,2),Y2(:,3),15,c,'filled') title('3-D Embedding') view(-50,8)

Argumentos de entrada

contraer todo

Puntos de datos, especificados como un-por-matriz, donde cada fila es un punto unidimensional.nmm

quita las filas de que contienen los valores antes de crear una incrustación.tsneXNaN Ver.Trazar resultados con datos de entradaNaN

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: Y = tsne(X,'Algorithm','Exact','NumPCAComponents',50)

Control de algoritmos

contraer todo

algoritmo, especificado como o.tsne'barneshut''exact' El algoritmo optimiza la divergencia Kullback-Leibler de distribuciones entre el espacio original y el espacio incrustado.'exact' El algoritmo realiza una optimización aproximada que es más rápida y utiliza menos memoria cuando el número de filas de datos es grande.'barneshut'

Nota

Para el algoritmo, se usa para buscar los vecinos más cercanos.'barneshut'tsneknnsearch

Ejemplo: 'exact'

Distancia métrica, especificada por uno de los siguientes. Para ver las definiciones de las métricas de distancia, consulte.pdist

  • — Distancia euclidiana.'euclidean'

  • — Distancia euclidiana estandarizada.'seuclidean' Cada diferencia de coordenadas entre las filas y la matriz de consulta se escala dividiendo por el elemento correspondiente de la desviación estándar calculada desdeX S = nanstd(X).

  • — Distancia de bloque de ciudad.'cityblock'

  • — Distancia Chebychev, que es la diferencia máxima de coordenadas.'chebychev'

  • — Distancia de Minkowski con el exponente 2.'minkowski' Esto es lo mismo que la distancia euclidiana.

  • — Distancia de Mahalanobis, calculada utilizando la matriz de covarianza definida positiva.'mahalanobis'nancov(X)

  • — 1 menos el coseno del ángulo incluido entre las observaciones (tratadas como vectores).'cosine'

  • — Uno menos la correlación lineal de la muestra entre las observaciones (tratadas como secuencias de valores).'correlation'

  • — Uno menos la correlación de la muestra de Spearman entre las observaciones (tratadas como secuencias de valores).'spearman'

  • — Distancia de Hamming, que es el porcentaje de coordenadas que difieren.'hamming'

  • — Uno menos el coeficiente Jaccard, que es el porcentaje de coordenadas distintas de cero que difieren.'jaccard'

  • función de distancia personalizada: una función de distancia especificada mediante (por ejemplo,).@@distfun Para obtener más información, consulte.Más acerca de

En todos los casos, utiliza distancias cuadradas por pares para calcular el kernel gaussiano en la distribución conjunta de.tsneX

Ejemplo: 'mahalanobis'

Tamaño de los clústeres naturales en los datos, especificado como un valor escalar o superior.1

Una gran exageración hace que aprender mayores probabilidades conjuntas de y crea relativamente más espacio entre los clústeres en. utiliza la exageración en las primeras 99 iteraciones de optimización.tsneYYtsne

Si el valor de la divergencia Kullback-Leibler aumenta en la fase inicial de la optimización, intente reducir la exageración. Ver.Configuracióntsne

Ejemplo: 10

Tipos de datos: single | double

Dimensión de la salida, especificada como un entero positivo.Y Generalmente, se establece en o.NumDimensions23

Ejemplo: 3

Tipos de datos: single | double

Reducción de la cota PCA, especificada como un entero no negativo. Antes de incrusta los datos de alta dimensión, primero reduce la dimensionalidad de los datos a la utilización de la función.tsneNumPCAComponentspca Cuando es, no utiliza el PCA.NumPCAComponents0tsne

Ejemplo: 50

Tipos de datos: single | double

Número efectivo de vecinos locales de cada punto, especificado como un escalar positivo. Ver.Algoritmo t-SNE

Una perplejidad mayor hace que se usen más puntos como vecinos más cercanos.tsne Utilice un valor mayor de para un DataSet grande.Perplexity Los valores típicos son de.Perplexity550 En el algoritmo de Barnes-Hut, se utiliza como el número de vecinos más cercanos.tsnemin(3*Perplexity,N-1) Ver.Configuracióntsne

Ejemplo: 10

Tipos de datos: single | double

Normalizar los datos de entrada, especificados como o.falsetrue Cuando, se centra y escala dividiendo las columnas por sus desviaciones estándar.truetsneX

Cuando las entidades están en escalas diferentes, se establecen en.X'Standardize'true Hágalo porque el proceso de aprendizaje se basa en los vecinos más cercanos, por lo que las entidades con escalas grandes pueden anular la contribución de las entidades con escalas pequeñas.

Ejemplo: true

Tipos de datos: logical

Control de optimización

contraer todo

Puntos incrustados iniciales, especificados como una matriz-por-real, donde es el número de filas de.nNumDimensionsnX El algoritmo de optimización utiliza estos puntos como valores iniciales.tsne

Tipos de datos: single | double

Velocidad de aprendizaje para el proceso de optimización, especificado como un escalar positivo. Normalmente, establezca valores desde a través.1001000

Cuando es demasiado pequeño, puede converger a un mínimo local pobre.LearnRatetsne Cuando es demasiado grande, la optimización puede tener inicialmente el aumento de divergencia Kullback-Leibler en lugar de disminuir.LearnRate Ver.Configuracióntsne

Ejemplo: 1000

Tipos de datos: single | double

Frecuencia de visualización iterativa, especificada como un entero positivo. Cuando el par nombre-valor no lo es, devuelve la visualización iterativa después de cada iteraciones.Verbose0tsneNumPrint Si el par nombre-valor contiene una entrada no vacía, las funciones de salida se ejecutan después de cada iteraciones.Options'OutputFcn'NumPrint

Ejemplo: 20

Tipos de datos: single | double

Opciones de optimización, especificadas como una estructura que contiene los campos, y.'MaxIter''OutputFcn''TolFun' Crear utilizando o.'Options'statsetstruct

  • : Entero positivo que especifica el número máximo de iteraciones de optimización.'MaxIter' Predeterminado:.1000

  • : Identificador de función o matriz de celdas de identificadores de función especificando una o más funciones para llamar después de cada iteraciones de optimización.'OutputFcn'NumPrint Para obtener detalles de sintaxis, consulte.Función de salida t-SNE Predeterminado:.[]

  • — Criterio de parada para la optimización.'TolFun' La optimización se cierra cuando la norma del gradiente de la divergencia Kullback-Leibler es menor que.'TolFun' Predeterminado:.1e-10

Ejemplo: options = statset('MaxIter',500)

Tipos de datos: struct

Parámetro de contrapartida de Barnes-Hut, especificado como un escalar de 0 a 1. Los valores más altos dan una optimización más rápida pero menos precisa. Se aplica sólo cuando es.Algoritmo'barneshut'

Ejemplo: 0.1

Tipos de datos: single | double

Visualización iterativa, especificada como, o.012 Cuando no lo es, imprime una tabla sumaria de la divergencia Kullback-Leibler y la norma de su gradiente cada iteraciones.Verbose0tsneNumPrint

Cuando es, también imprime las desviaciones de los kernels Gaussianos. utiliza estos núcleos en su cálculo de la probabilidad articular de.Verbose2tsnetsneX Si se observa una gran diferencia en las escalas de las desviaciones mínima y máxima, a veces se pueden obtener resultados más adecuados mediante el reescalado.X

Ejemplo: 2

Tipos de datos: single | double

Argumentos de salida

contraer todo

Puntos incrustados, devueltos como un-por-matriz.nNumDimensions Cada fila representa un punto incrustado. es el número de filas de datos que no contienen entradas.nXNaN Ver.Trazar resultados con datos de entradaNaN

Divergencia Kullback-Leibler entre distribuciones de entrada y salida modeladas, devueltas como un escalar no negativo. Para obtener más información, consulte.Algoritmo t-SNE

Más acerca de

contraer todo

Función de distancia personalizada

La sintaxis de una función de distancia personalizada es la siguiente.

function D2 = distfun(ZI,ZJ)

pasa y a la función, y la función calcula la distancia.tsneZIZJ

  • es un 1 por vector que contiene una sola fila de o.ZInXY

  • es una-por-matriz que contiene varias filas de o.ZJmnXY

La función devuelve, que es un vector de distancias de-por-1.D2m El elemento TH es la distancia entre las observaciones y.jD2ZIZJ(j,:)

Sugerencia

Si los datos no son escasos, normalmente las funciones de distancia incorporadas son más rápidas que un identificador de función.

Algoritmos

construye un conjunto de puntos incrustados en un espacio de baja dimensión cuyas similitudes relativas imitan las de los puntos de alta cota originales.tsne Los puntos incrustados muestran la agrupación en clústeres en los datos originales.

Más o menos, el algoritmo modela los puntos originales como provenientes de una distribución gaussiana, y los puntos incrustados como provenientes de la distribución de un estudiante.t El algoritmo intenta minimizar la divergencia Kullback-Leibler entre estas dos distribuciones moviendo los puntos incrustados.

Para obtener más información, consulte.t-SNE

Introducido en R2017a