12 votos

¿Cómo calcular las ponderaciones del criterio de Fisher?

Estoy estudiando reconocimiento de patrones y aprendizaje automático, y me encontré con la siguiente pregunta.

Consideremos un problema de clasificación de dos clases con igual probabilidad de clase a priori P(D1)=P(D2)=12P(D1)=P(D2)=12

y la distribución de instancias en cada clase dada por

p(x|D1)=N([00],[2001]),

p(x|D2)=N([44],[1001]).

¿Cómo calcular las ponderaciones del criterio de Fisher?

Actualización 2: El peso calculado que proporciona mi libro es: W=[4329] .

Actualización 3: Tal y como insinúa @xeon, entiendo que debo determinar la línea de proyección del discriminante de Fisher.

Actualización 4: Dejemos que W sea la dirección de la línea de proyección, entonces el método discriminante lineal de Fisher encuentra que la mejor W es aquella para la que se maximiza la función de criterio. El reto pendiente es cómo podemos obtener numéricamente W ¿Vector?

11voto

Ludwi Puntos 188

Siguiendo el documento que enlazaste (Mika et al., 1999) tenemos que encontrar el w que maximiza el llamado cociente de Rayleigh generalizado ,

wSBwwSWw,

donde para significa m1,m2 y las covarianzas C1,C2 ,

\begin {align} \mathbf {S}_B &= ( \mathbf {m}_1 - \mathbf {m}_2)( \mathbf {m}_1 - \mathbf {m}_2)^ \top , & \mathbf {S}_W &= \mathbf {C}_1 + \mathbf {C}_2. \end {align}

La solución se puede encontrar resolviendo la problema generalizado de valores propios \begin {align} \mathbf {S}_B \mathbf {w} = \lambda \mathbf {S}_W \mathbf {w}, \end {align} calculando primero los valores propios λ resolviendo \begin {align} \det ( \mathbf {S}_B - \lambda \mathbf {S}_W) = 0 \end {align} y luego resolver el vector propio w . En su caso, SBλSW=(163λ1616162λ). El determinante de esta matriz de 2x2 se puede calcular a mano.

El vector propio con el mayor valor propio maximiza el cociente de Rayleigh. En lugar de hacer los cálculos a mano, he resuelto el problema de valores propios generalizados en Python utilizando scipy.linalg.eig y consiguió w10.5547,w20.8321, que es diferente de la solución que encontró en su libro. A continuación he representado el hiperplano óptimo del vector de pesos que he encontrado (negro) y el hiperplano del vector de pesos encontrado en tu libro (rojo).

enter image description here

8voto

Antoine Puntos 1041

SOLUTION1:

Siguiendo a Duda et al. (Pattern CLassification) que tiene una solución alternativa a la de @lucas y en este caso da una solución muy fácil de calcular a mano. (¡Espero que esta solución alternativa ayude! :))

En el LDA de dos clases el objetivo es:

wTSBwwTSWw que sólo significa que aumenta la varianza entre clases y disminuye la varianza dentro de la clase.

donde SB=(m1m2)(m1m2)T y SW=S1+S2 Aquí S1,S2 son la matriz de covarianza y m1,m2 son las medias de las clases 1 y 2 respectivamente.

La solución de este cociente de Raleigh generalizado es un probema de valor propio generalizado.

SBw=λSWwSW1SBw=λw

La formulación anterior tiene una solución de forma cerrada. SB es una matriz de rango 1 con base m1m2 así que wSW1(m1m2) que puede ser normlizd para obtener la respuesta.

Acabo de calcular el w y obtuvo [0,5547;0,8321].

SW1(m1m2)=(S1+S2)1(m1m2)=([2001]+[1001])1([00][44])=([1/3001/2])([00][44])=[1.33332.0000][0.55470.8321]

Ref: Clasificación de patrones de Duda, Hart, Stork

SOLUTION2:

Alternativamente, puede resolverse encontrando el vector propio del problema de valor propio generalizado. SBw=λSWw

Un polinomio en lambda puede estar formado por determinant(SBλSW) y las soluciones de ese polinomio serán el valor propio de SBw=λSWw . Ahora digamos que tienes un conjunto de valores propios λ1,λ2,...,λn, como raíces del polinomio. Ahora sustituye λ=λi,i{1,2,..,n} y obtener el vector propio correspondiente como solución del sistema lineal de ecuaciones SBwi=λiSWwi . Haciendo esto para cada i se puede obtener un conjunto de vectores {wi}ni=1 y es un conjunto de vectores propios como soluciones.

determinant(SBλSW)=[163λ1616162λ]=6λ280λ Así que los valores propios son raíces del polinomio 6λ280λ .

Así que λ= 0 y 40/3 son las dos soluciones. Para el LDA, el vector propio correspondiente al valor propio más alto es la solución.

Solución al sistema de ecuaciones (SBλiSW)wi=0 y λi=40/3

que resulta ser [163λ1616162λ]wi[72484832]wi=0

La solución del sistema de ecuaciones anterior es [0.55470.8321][0.55470.8321] que es la misma que la solución anterior.

Alternativamente, podemos decir que [0.55470.8321] se encuentra en el espacio nulo de [72484832] .

Para el LDA de dos clases, el vector propio con mayor valor propio es la solución. En general, para el LDA de clase C, los primeros vectores propios C - 1 hasta los valores propios C - 1 más altos constituyen la solución.

Este vídeo explica cómo calcular los vectores propios para un problema simple de valores propios. ( https://www.khanacademy.org/math/linear-algebra/alternate_bases/eigen_everything/v/linear-algebra-finding-eigenvectors-and-eigenspaces-example )

A continuación, un ejemplo. http://www.sosmath.com/matrix/eigen2/eigen2.html

LDA multiclase: http://en.wikipedia.org/wiki/Linear_discriminant_analysis#Multiclass_LDA

Cálculo del espacio nulo de una matriz: https://www.khanacademy.org/math/linear-algebra/vectors_and_spaces/null_column_space/v/null-space-2-calculating-the-null-space-of-a-matrix

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