8 votos

¿Por qué el t-SNE no separa las clases linealmente separables?

Tengo una pequeña red neural de convolución para la clasificación de los patrones de EEG (problema de clase 2) con varias capas de convección y una capa densa. Esta red funciona bastante bien. Para propósitos educativos usé la parte convolucional de esta red pre-entrenada (toda la red excepto la capa densa) para extraer características de las muestras de entrenamiento. Así que esta nueva representación de datos linealmente separable (porque la capa densa puede clasificarlos correctamente) Pero cuando utilicé TSNE en esta representación del conjunto de entrenamiento y obtuve sólo una mancha y los puntos de diferentes clases se mezclaron. enter image description here

Esta situación se repite independientemente de los parámetros del TSNE. ¿Es posible obtener un solo cúmulo con clases mixtas para un conjunto de datos linealmente separables?

9voto

Even Mien Puntos 10122

Sí.

Puedes usar el siguiente código para convencerte.

N <- 1000
P <- 3

# Generates some random data
data <- matrix(data = rnorm(N*P), nrow = N, ncol = P)

# Assignate linearly separable classes
labels <- (data[,1]+data[,2]>0)+1.

# Make sure that the data can be separated
plot(data[,1],data[,2], col = labels, xlab = 'x1', ylab = 'x2')

require(Rtsne)
model <- Rtsne::Rtsne(data)

# Observe this result while varying P
plot(model$Y, col = labels, type = 'p', pch = 21, xlab = 'tSNE x_1', ylab = 'tSNE x_2')

Esto es lo que se observaría cuando P es 3 (sólo un atributo irrelevante con respecto a la separación lineal, estamos cerca de reproducir la separación lineal).

enter image description here

Y para P es 15, el tSNE no puede reproducir la separación lineal.

enter image description here

¿Qué ha pasado?

Esto es simple. El método tSNE se basa en distancias de pares entre puntos para producir cúmulos y, por lo tanto, es totalmente inconsciente de cualquier posible separabilidad lineal de sus datos.

Si sus puntos están "cerca" uno del otro, a diferentes lados de una "frontera", un tSNE considerará que pertenecen a un mismo cúmulo.

Este fue exactamente el punto de las simulaciones anteriores. Cuando el número de dimensiones es grande, los puntos se ven cercanos entre sí, sin importar el lado del borde al que pertenecen. Esto es lo que el TSNE no logra capturar aquí.

Por otro lado, cuando el número de dimensiones irrelevantes es bajo, los puntos cercanos no tenían "otra opción" que estar del mismo lado de la frontera.

Nota al margen.

Aunque tenga un buen rendimiento con una red neuronal, puede que no signifique que sus datos sean linealmente separables (a menos que sólo haya una unidad en su red neuronal, zumbido). De hecho, las redes neuronales pueden reconocer los límites no lineales. Si quiere probar cuán "linealmente separable" es un conjunto de datos, debe usar máquinas de vector de apoyo lineal o regresiones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X