Estoy estudiando reconocimiento de patrones y aprendizaje automático, y me encontré con la siguiente pregunta.
Considere un problema de clasificación de dos clases con igual probabilidad de clase previa
y la distribución de instancias en cada clase dada por
¿Cómo calcular los pesos del criterio de Fisher?
Actualización 2: El peso calculado proporcionado por mi libro es: .
Actualización 3: Según lo insinuado por @xeon, entiendo que debo determinar la línea de proyección para el discriminante de Fisher.
Actualización 4: Sea la dirección de la línea de proyección, entonces el método discriminante lineal de Fisher determina que la mejor es aquella para la cual se maximiza la función de criterio. El desafío restante es ¿cómo podemos obtener numéricamente el vector ?
Respuestas:
Siguiendo el documento al que se vinculó (Mika et al., 1999) , tenemos que encontrar el que maximiza el llamado cociente de Rayleigh generalizado ,w
donde para significa y covarianzas ,C 1 , C 2m1,m2 C1,C2
La solución se puede encontrar resolviendo el problema de valor propio generalizado calculando primero los valores propios resolviendo y luego resolviendo para el vector propio . En su caso, El determinante de esta matriz de 2x2 se puede calcular a mano.λdet( S B -λ S W )=0
El vector propio con el valor propio más grande maximiza el cociente de Rayleigh. En lugar de hacer los cálculos a mano, resolví el problema del valor propio generalizado en Python usando
scipy.linalg.eig
y obtuve que es diferente de la solución que encontró en su libro. A continuación, tracé el hiperplano óptimo del vector de peso que encontré (negro) y el plano inferior del vector de peso que se encuentra en su libro (rojo).fuente
Siguiendo a Duda et al. (Pattern CLassification) que tiene una solución alternativa a @lucas y en este caso proporciona una solución muy fácil de calcular a mano. (¡Espero que esta solución alternativa ayude! :))
En dos clases LDA el objetivo es:
donde y , aquí son matrices de covarianza y son medias de clase 1 y 2 respectivamente.S W = S 1 + S 2 S 1 , S 2 m 1 , m 2SB=(m1−m2)(m1−m2)T SW=S1+S2 S1,S2 m1,m2
La solución de este cociente de Raleigh generalizado es un probem de valor propio generalizado.
La formulación anterior tiene una solución de forma cerrada. es una matriz de rango 1 con base por lo que que puede ser normalizada para obtener la respuesta.m 1 - m 2SB m1−m2 w∝SW−1(m1−m2)
Acabo de calcular la y obtuve [0.5547; 0.8321].w
Ref: Clasificación de patrones por Duda, Hart, Stork
Alternativamente, se puede resolver encontrando el vector propio al problema del valor propio generalizado.SBw=λSWw
Un polinomio en lambda puede formarse por y las soluciones a ese polinomio serán el valor propio para . Ahora supongamos que tiene un conjunto de valores propios como raíces del polinomio. Ahora sustituya y obtenga el vector propio correspondiente como solución al sistema lineal de ecuaciones . Al hacer esto para cada i, puede obtener un conjunto de vectores y es un conjunto de vectores propios como soluciones.determinant(SB−λSW) SBw=λSWw λ1,λ2,...,λn, λ=λi,i∈{1,2,..,n} SBwi=λiSWwi {wi}ni=1
Entonces 0 y 40/3 son las dos soluciones. Para LDA, el vector propio correspondiente al valor más alto es la solución.λ=
Solución al sistema de ecuaciones y(SB−λiSW)wi=0 λi=40/3
que resulta ser[16−3λ161616−2λ]wi∝[−724848−32]wi=0
La solución al sistema de ecuaciones anterior es que es igual que la solución anterior.[−0.5547−0.8321]∝[0.55470.8321]
Alternativamente, podemos decir que encuentra en el espacio nulo de .[ - 72 48 48 - 32 ][0.55470.8321] [−724848−32]
Para dos clases de LDA, el vector propio con el valor propio más alto es la solución. En general, para la clase C LDA, los primeros vectores eigen C - 1 a los valores eigen C - 1 más altos constituyen la solución.
Este video explica cómo calcular los vectores propios para un problema simple de valor propio. ( https://www.khanacademy.org/math/linear-algebra/alternate_bases/eigen_everything/v/linear-algebra-finding-eigenvectors-and-eigenspaces-example )
El siguiente es 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
fuente