Après quelques recherches, je trouve très peu sur l'incorporation de poids d'observation / erreurs de mesure dans l'analyse des composants principaux. Ce que je trouve a tendance à s'appuyer sur des approches itératives pour inclure des pondérations (par exemple, ici ). Ma question est pourquoi cette approche est-elle nécessaire? Pourquoi ne pouvons-nous pas utiliser les vecteurs propres de la matrice de covariance pondérée?
pca
measurement-error
weighted-data
sans nom
la source
la source
Réponses:
Cela dépend à quoi s'appliquent exactement vos poids.
Poids des rangées
Soit la matrice de données avec des variables dans les colonnes et n observations x i dans les lignes. Si chaque observation a un poids associé w i , il est en effet simple d'incorporer ces poids dans l'ACP.X n xi wi
Tout d'abord, il faut calculer la moyenne pondérée et soustrayez-le des données afin de lecentrer.μ=1∑wi∑wixi
Ensuite, nous calculons la matrice de covariance pondérée , oùW=diag(wi)est la matrice diagonale des poids, et appliquer l'APC standard pour l'analyser.1∑wiX⊤WX W=diag(wi)
Poids des cellules
L'article de Tamuz et al., 2013 , que vous avez trouvé, considère un cas plus compliqué lorsque différents poids sont appliqués à chaque élément de la matrice de données. Alors en effet il n'y a pas de solution analytique et il faut utiliser une méthode itérative. Notez que, comme l'ont reconnu les auteurs, ils ont réinventé la roue, car de tels poids généraux ont certainement été pris en compte auparavant, par exemple dans Gabriel et Zamir, 1979, Lower Rank Approximation of Matrices by Least Squares With Any Choice of Weights . Cela a également été discuté ici .wij
Comme remarque supplémentaire: si les poids varient à la fois avec les variables et les observations, mais sont symétriques, de sorte que w i j = w j i , alors la solution analytique est à nouveau possible, voir Koren et Carmel, 2004, Robust Linear Dimensionality Reduction Reduction .wje j wje j= wj i
la source
Merci beaucoup amibe pour la compréhension des poids des rangées. Je sais que ce n'est pas un stackoverflow, mais j'ai eu quelques difficultés à trouver une implémentation de PCA pondérée par ligne avec explication et, puisque c'est l'un des premiers résultats lors de la recherche de PCA pondéré, j'ai pensé qu'il serait bon d'attacher ma solution , cela peut peut-être aider d'autres personnes dans la même situation. Dans cet extrait de code Python2, une PCA pondérée avec un noyau RBF comme celui décrit ci-dessus est utilisée pour calculer les tangentes d'un ensemble de données 2D. Je serai très heureux d'entendre des commentaires!
Et un exemple de sortie (il fait de même pour chaque point):
Santé,
Andres
la source