5 votos

Reconocimiento de patrones: ¿No es posible con clasificadores lineales para información local y distribuida?

Me encontré con un documento con el siguiente ejemplo para discutir la imposibilidad de localizar características importantes para ciertos patrones si se utilizan clasificadores lineales:

enter image description here

Según entiendo, tenemos dos clases (tipo de patrón 1 vs. tipo de patrón 2), cada clase tiene muestras de datos de diferentes tipos (versión 1 y versión 2, por ejemplo, escaneos cerebrales de diferentes sujetos - por lo tanto, tenemos una cierta variabilidad en cada clase). Cada característica solo puede tomar dos valores (negro o blanco en la ilustración). Según entiendo, ahora sigue que :

  • Los clasificadores lineales no pueden distinguir entre las dos clases.

Esto es así porque un clasificador lineal calcula una suma ponderada de todas las características - y a pesar de la diferencia en los patrones de la clase 1 y la clase 2, siempre tenemos el mismo número de características inactivas vs. activas - por lo que las sumas para cada tipo de patrón no diferirían. Además, entiendo que ninguna característica individual impulsa a los clasificadores - ya que en cada clase cada característica está tanto activa como inactiva, dependiendo del tipo de patrón. Por lo tanto, tampoco tenemos información local útil. Por lo tanto, tal como lo veo, los clasificadores lineales solo son útiles si las características individuales son distintivas para la membresía de la clase. Si esto es cierto, ¿qué hace que los clasificadores lineales sean ventajosos en comparación con enfoques estadísticos univariados "clásicos"?

Una pregunta adicional sería cómo los clasificadores no lineales logran hacer la distinción en el caso ilustrado - ¿es posible a pesar de la variabilidad en cada clase (tipo de patrón)?

Gracias

0 votos

1 votos

Depende de lo que se entienda por "no lineal". Para empezar, podrías introducir características $x_ix_j$ que sean iguales a 1 si, por ejemplo, los voxels $i,j$ están encendidos. Esto ayudaría a distinguir los dos patrones. El modelo sigue siendo lineal si simplemente llamamos a esta nueva característica $y_i:=x_ix_j$ y le asignamos un peso separado. Sin embargo, es no lineal en la forma en que define las características.

0 votos

@AlexR.: Mira mi comentario a continuación: Estoy hablando de lineal en el sentido de lineal en el espacio de características original, y con univariado me refería al uso de solo una característica (/predictor). Entonces, según entiendo, los clasificadores lineales se pueden reducir a clasificaciones usando solo características individuales... eso es lo que me desconcierta

2voto

dotancohen Puntos 595

En la clasificación / reconocimiento de patrones estamos tratando de encontrar f - el límite de decisión entre el tipo de patrón 1 y el tipo de patrón 2 (en el caso binomial).

Vayamos a la primera pregunta: * ¿qué hace que los clasificadores lineales sean ventajosos en comparación con los enfoques estadísticos univariados "clásicos"? * Supongo que por univariado, quieres decir que tienes una variable de resultado.

Los clasificadores lineales son siempre útiles ya que son relativamente rápidos debido a su simplicidad. Toma por ejemplo Perceptrones / Regresión Logística.

Para la regresión logística hay una solución en forma cerrada usando la pseudo inversa / ecuación normal. Ver aquí (betas son los w's que usé aquí): https://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)#The_general_problem Los Perceptrones se suelen usar cuando el aprendizaje se realiza en línea mediante el descenso de gradiente estocástico, que no es una solución en forma cerrada. Dependiendo de tu tarea, uno u otro podría ser más útil.

De cualquier manera, digamos que tienes algunas características. Puedes combinar estas características en un lineal y = f1(x1 * w1 + x2 * w2 ... ) o cualquier combinación no lineal de características que desees y = f2(x1 * x2 * w1 + x1^2 * w2 ... ) etc.

Ahora, lineal significa que tu límite de decisión es una línea. Es bastante improbable que en problemas del mundo real las clases sean separables con una línea recta. Sin embargo, si puedes encontrar una representación correcta (vamos a suponer que f2 arriba es), entonces podrás ajustar una línea recta entre las clases, aunque el espacio de características en el que lo haces es diferente del espacio original. De hecho, en el ejemplo anterior definí manualmente un espacio de características diferente. El modelo sigue siendo lineal ya que sigo ajustando una línea.

Aquí hay una forma visual de explicarlo al encontrar las funciones Y y O exclusivas (AND y XOR).

Este es un perceptrón que puede implementar la función Y (AND).

ingresar descripción de la imagen aquí

El modelo general es y1 = X0 * b + X1 * w11 + X2 * w12 donde X0 = 1. (agregas un grado de libertad adicional que siempre es uno, para que tu límite de decisión no esté restringido a moverse solo a través del origen). Luego encuentras b, w11 y w12 y puedes aprender la función Y, que es claramente linealmente separable.

ingresar descripción de la imagen aquí

Ahora, digamos que queremos encontrar la función O (XOR). Así es como se ve: ingresar descripción de la imagen aquí

Bueno, en la imagen de arriba no puedes dividir las dos clases con solo una línea. Puedes hacerlo con una elipse o con más de una línea.

Entonces, necesitas encontrar un espacio de características donde este límite de decisión pueda ubicarse. Afortunadamente, los perceptrones de múltiples capas pueden hacer eso. De hecho, esto encuentra el espacio de características donde puedes colocar múltiples límites lineales de esa manera.

ingresar descripción de la imagen aquí

Y creo que esto también responde a tu segunda pregunta.

De hecho, las imágenes de la columna derecha (versión 2) son la negación de tus primeras imágenes. Eso es invariable independientemente de la clase. Entonces, eso es una característica, puedes pensarlo como un perceptrón / unidad en la capa oculta. Normalmente no querrías buscar manualmente ejemplos como este en el mundo real y encontrar estas invariantes / reglas, así que usas perceptrones de múltiples capas que hacen esto por ti automáticamente.

EDICIÓN:

Bien, vamos a hacer esto manualmente con tu ejemplo. Necesitas al menos dos bits para poder diferenciar entre los dos patrones. Tomaré la primera fila y la primera característica de la segunda fila. Entonces puedes ver que solo necesitas la última característica de la primera fila y la primera característica de la segunda fila.

P1 - V1: (0101)0 1 | V2 (1010)1 0

P2 - V1: (0101)0 0 | V2 (1010)1 1

Entonces, 01 o 10 codifica el patrón 1 mientras que 00 o 11 codifica el patrón 2. Ahora, estas son características originales de tus datos.

Ahora, veamos la función XOR:

f1 f2 tipo (clase)

0 1 1

1 0 1

0 0 0

1 1 0

Un clasificador lineal no puede aprender la función XOR necesaria para clasificar estos patrones.

Para tu ejemplo, es imposible clasificar los patrones utilizando solo una característica / predictor, ya sea que estés utilizando clasificadores no lineales o lineales.

¿Eso responde tu pregunta?

0 votos

Hola, gracias por la respuesta, pero estoy familiarizado con clasificadores lineales y no lineales, con el problema XOR y también con kernels; sin embargo, no creo que realmente responda mi pregunta.

0 votos

...Estoy hablando de lineal en el sentido de lineal en el espacio de características original, y con univariado me refiero a usar solo una característica (/predictor). Entonces, según entiendo, los clasificadores lineales se pueden reducir a la clasificación usando solo características individuales... eso es lo que me desconcierta.

0 votos

Edite mi respuesta para mantener el formato, verifica si eso aclara las cosas.

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