J'étudie la reconnaissance des formes et l'apprentissage automatique, et je suis tombé sur la question suivante.
Considérons un problème de classification à deux classes avec une probabilité de classe antérieure égale
et la distribution des instances dans chaque classe donnée par
Comment calculer les poids des critères Fisher?
Mise à jour 2: Le poids calculé fourni par mon livre est: .
Mise à jour 3: Comme laissé entendre par @xeon, je comprends que je devrais déterminer la ligne de projection pour le discriminant de Fisher.
Mise à jour 4: Soit la direction de la ligne de projection, alors la méthode discriminante linéaire de Fisher trouve que le meilleur est celui pour lequel la fonction de critère est maximisée. Le défi restant est de savoir comment obtenir numériquement le vecteur ?
Réponses:
À la suite de l'article auquel vous avez lié (Mika et al., 1999) , nous devons trouver le qui maximise le soi-disant quotient de Rayleigh généralisé ,w
où pour les moyens et les covariances ,C 1 , C 2m1,m2 C1,C2
La solution peut être trouvée en résolvant le problème généralisé des valeurs propres par le premier calcul les valeurs propres en résolvant puis en résolvant pour le vecteur propre . Dans votre cas, Le déterminant de cette matrice 2x2 peut être calculé à la main.λdet( S B -λ S W )=0wSB-λSW=( 16 - 3 λ 16
Le vecteur propre avec la plus grande valeur propre maximise le quotient de Rayleigh. Au lieu de faire les calculs à la main, j'ai résolu le problème des valeurs propres généralisées en Python en utilisant
scipy.linalg.eig
et j'ai obtenu ce qui est différent de la solution que vous avez trouvée dans votre livre. Ci-dessous, j'ai tracé l'hyperplan optimal du vecteur de poids que j'ai trouvé (noir) et l'hyerplan du vecteur de poids trouvé dans votre livre (rouge).la source
Après Duda et al. (Pattern CLassification) qui a une solution alternative à @lucas et dans ce cas donne une solution très facile à calculer à la main. (J'espère que cette solution alternative vous aidera !! :))
Dans deux LDA de classe, l'objectif est:
où et , ici sont une matrice de covariance et sont des moyennes de classe 1 et 2 respectivement.SB=(m1−m2)(m1−m2)T SW=S1+S2 S1,S2 m1,m2
La solution de ce quotient de raleigh généralisé est un probem de valeur propre généralisée.
La formulation ci-dessus a une solution sous forme fermée. est une matrice de rang 1 avec une base donc qui peut être normlizd pour obtenir la réponse.SB m1−m2 w∝SW−1(m1−m2)
Je viens de calculer le et j'ai obtenu [0,5547; 0,8321].w
Réf: Classification des motifs par Duda, Hart, Stork
Alternativement, il peut être résolu en trouvant un vecteur propre au problème de valeur propre généralisé.SBw=λSWw
Un polynôme dans lambda peut être formé par un et les solutions à ce polynôme seront la valeur propre pour . Supposons maintenant que vous ayez un ensemble de valeurs propres tant que racines du polynôme. Remplacez maintenant et obtenez le vecteur propre correspondant comme solution au système linéaire d'équations . En faisant cela pour chaque i, vous pouvez obtenir un ensemble de vecteurs et c'est un ensemble de vecteurs propres comme solutions.determinant(SB−λSW) SBw=λSWw λ1,λ2,...,λn, λ=λi,i∈{1,2,..,n} SBwi=λiSWwi {wi}ni=1
Donc 0 et 40/3 sont les deux solutions. Pour LDA, le vecteur propre correspondant à la valeur propre la plus élevée est la solution.λ=
Solution au système d'équation et(SB−λiSW)wi=0 λi=40/3
qui se révèle être[16−3λ161616−2λ]wi∝[−724848−32]wi=0
La solution au système d'équation ci-dessus est qui est identique à la solution précédente.[−0.5547−0.8321]∝[0.55470.8321]
Alternativement, nous pouvons dire que se situe dans l'espace nul de .[ - 72 48 48 - 32 ][0.55470.8321] [−724848−32]
Pour une LDA à deux classes, le vecteur propre avec la valeur propre la plus élevée est la solution. En général, pour la classe C LDA, les premiers vecteurs propres C - 1 aux valeurs propres C - 1 les plus élevées constituent la solution.
Cette vidéo explique comment calculer des vecteurs propres pour un problème de valeur propre simple. ( https://www.khanacademy.org/math/linear-algebra/alternate_bases/eigen_everything/v/linear-algebra-finding-eigenvectors-and-eigenspaces-example )
Voici un exemple. http://www.sosmath.com/matrix/eigen2/eigen2.html
LDA multi-classe: http://en.wikipedia.org/wiki/Linear_discriminant_analysis#Multiclass_LDA
Calcul de l'espace nul d'une matrice: https://www.khanacademy.org/math/linear-algebra/vectors_and_spaces/null_column_space/v/null-space-2-calculating-the-null-space-of-a-matrix
la source