Estou estudando reconhecimento de padrões e aprendizado de máquina e me deparei com a seguinte pergunta.
Considere um problema de classificação de duas classes com igual probabilidade de classe anterior
e a distribuição de instâncias em cada classe dada por
Como calcular os pesos dos critérios de Fisher?
Atualização 2: o peso calculado fornecido pelo meu livro é: .
Atualização 3: Como sugerido por @xeon, entendo que devo determinar a linha de projeção para o discriminante de Fisher.
Atualização 4: Seja a direção da linha de projeção, o método discriminante linear de Fisher descobre que o melhor é aquele para o qual a função de critério é maximizada. O desafio restante é como podemos obter numericamente o vetor ?
Respostas:
Seguindo o artigo ao qual você vinculou (Mika et al., 1999) , precisamos encontrar que maximiza o chamado quociente generalizado de Rayleigh ,w
onde para médias e covariâncias C 1 , C 2 ,m1,m2 C1,C2
A solução pode ser encontrada resolvendo o problema generalizado de autovalores calculando primeiro os autovalores λ resolvendo det ( S B - λ S W ) = 0 e depois resolvendo o vetor próprio w . No seu caso, S B - λ S W = ( 16 - 3 λ 16 16 16 - 2 λ ) .
O vetor próprio com o maior valor próprio maximiza o quociente de Rayleigh. Em vez de fazer os cálculos manualmente, resolvi o problema de autovalor generalizado no Python usando
scipy.linalg.eig
e obtive que é diferente da solução encontrada em seu livro. Abaixo, plotei o hiperplano ideal do vetor de peso que encontrei (preto) e o hiperplano do vetor de peso encontrado em seu livro (vermelho).fonte
Seguindo Duda et al. (Pattern CLassification), que tem uma solução alternativa para @lucas e, nesse caso, facilita muito a computação da solução manualmente. (Espero que esta solução alternativa ajude !! :))
Na LDA de duas classes, o objetivo é:
A solução desse quociente de raleigh generalizado é um probem de valor próprio de generalização.
Ref: Classificação de Padrões por Duda, Hart, Stork
Soλ= 0 and 40/3 are the two solutions.
For LDA, eigen vector corresponding to highest eigen value is the solution.
Solution to system of equation(SB−λiSW)wi=0 and λi=40/3
which turns out to be[16−3λ161616−2λ]wi∝[−724848−32]wi=0
Solution to the above system of equation is[−0.5547−0.8321]∝[0.55470.8321] which is same as previous solution.
Alternatively, we can say that[0.55470.8321] lies in the null space of [−724848−32] .
For two class LDA, eigen vector with highest eigen value is the solution. In general, for C class LDA, the first C - 1 eigen vectors to highest C - 1 eigen values constitute the solution.
This video explains how to compute eigen vectors for simple eigen value problem. ( https://www.khanacademy.org/math/linear-algebra/alternate_bases/eigen_everything/v/linear-algebra-finding-eigenvectors-and-eigenspaces-example )
Following is an example. http://www.sosmath.com/matrix/eigen2/eigen2.html
Multi-class LDA: http://en.wikipedia.org/wiki/Linear_discriminant_analysis#Multiclass_LDA
Calculating Null Space of a matrix: https://www.khanacademy.org/math/linear-algebra/vectors_and_spaces/null_column_space/v/null-space-2-calculating-the-null-space-of-a-matrix
fonte