Quelle est la différence entre le blanchiment ZCA et le blanchiment PCA?

60

Je suis confus quant au blanchiment ZCA et au blanchiment normal (obtenu en divisant les composants principaux par les racines carrées des valeurs propres de la PCA). Pour autant que je sache,

xZCAwhite=UxPCAwhite,
où sont les vecteurs propres de la PCA.U

Quelles sont les utilisations de ZCA whitening? Quelles sont les différences entre le blanchiment normal et le blanchiment ZCA?

RockTheStar
la source
2
Selon "Réseaux de neurones: astuces du métier", PCA et ZCA ne diffèrent que par une rotation.
Martin Thoma

Réponses:

81

Laissez vos données (centrées) stockées dans une matrice avec caractéristiques (variables) dans des colonnes et points de données dans des lignes. Que la matrice de covariance ait des vecteurs propres dans les colonnes de et des valeurs propres sur la diagonale de , de sorte que .X d n C = XX / n E D C = E D En×dXdnC=XX/nEDC=EDE

Ensuite, ce que vous appelez la transformation de blanchiment PCA "normale" est donné par , voir par exemple ma réponse dans Comment blanchir les données à l'aide analyse des composants principaux?WPCA=D1/2E

Cependant, cette transformation de blanchiment n’est pas unique. En effet, les données blanchies resteront blanchies après toute rotation, ce qui signifie que tout avec matrice orthogonale sera également une transformation blanchissante. Dans ce qu'on appelle le blanchiment ZCA, nous prenons (vecteurs propres empilés de la matrice de covariance) comme cette matrice orthogonale, c'est-à-dire R E W Z C A = E D - 1 / deux E = C - 1 / deux .W=RWPCARE

WZCA=ED1/2E=C1/2.

Une propriété déterminante de la transformation ZCA ( parfois aussi appelée "transformation de Mahalanobis") est qu'elle aboutit à des données blanchies aussi proches que possible des données d'origine (au sens des moindres carrés). En d'autres termes, si vous voulez minimiser sous réserve que soit blanchi, vous devez alors prendre . Voici une illustration en 2D:XXA2XAA=WZCA

PCA et ZCA blanchiment

La sous-parcelle de gauche montre les données et leurs principaux axes. Notez la couleur sombre dans le coin supérieur droit de la distribution: elle marque son orientation. Les rangées de apparaissent sur la deuxième sous-parcelle: ce sont les vecteurs sur lesquels les données sont projetées. Après avoir blanchi (ci-dessous), la distribution semble ronde, mais vous remarquerez qu’elle semble également pivotée: le coin sombre se trouve maintenant du côté est, pas du côté nord-est. Les rangées de apparaissent sur la troisième sous-parcelle (notez qu'elles ne sont pas orthogonales!). Après blanchiment (ci-dessous), la répartition est tournée et orientée de la même manière qu’à l’origine. Bien sûr, on peut obtenir de PCA blanchies données ZCA blanchies données en tournant avec .WPCAWZCAE

Le terme "ZCA" semble avoir été introduit dans Bell et Sejnowski 1996dans le contexte de l'analyse par composante indépendante, et signifie «analyse en phase zéro». Voir là pour plus de détails. Très probablement, vous avez rencontré ce terme dans le contexte du traitement d'image. Il s'avère que, lorsqu'ils sont appliqués à un ensemble d'images naturelles (pixels en tant qu'entités, chaque image en tant que point de données), les axes principaux ressemblent à des composantes de Fourier de fréquences croissantes (voir la première colonne de leur Figure 1 ci-dessous). Donc, ils sont très "globaux". En revanche, les lignes de la transformation ZCA ont un aspect très "local", voir la deuxième colonne. C’est précisément parce que ZCA essaie de transformer le moins possible les données. Chaque rangée devrait donc être proche de l’une des fonctions de base originales (qui seraient des images avec un seul pixel actif). Et cela est possible à réaliser,

PCA et ZCA dans Bell et Sejnowski 1996

Mise à jour

D'autres exemples de filtres ZCA et d'images transformées avec ZCA sont donnés dans Krizhevsky, 2009, Apprendre plusieurs couches de fonctions à partir d'images minuscules . Voir également des exemples dans la réponse de @ bayerj (+1).

Je pense que ces exemples donnent une idée du moment où le blanchiment ZCA pourrait être préférable à celui de la PCA. À savoir, les images blanchies en ZCA ressemblent encore aux images normales , alors que celles blanchies en PCA ne ressemblent en rien à des images normales. Cela est probablement important pour des algorithmes tels que les réseaux de neurones convolutifs (tels que ceux utilisés dans l'article de Krizhevsky), qui traitent les pixels voisins ensemble et reposent donc grandement sur les propriétés locales des images naturelles. Pour la plupart des autres algorithmes d'apprentissage automatique, le fait que les données soient blanchies avec PCA ou ZCA ne doit absolument pas être pertinent .

l'amibe dit de réintégrer Monica
la source
Merci! J'ai une question: est-ce que cela signifie que ZCA est fondamentalement changer l'accès, mais pas changer beaucoup la position des données? (en fonction de votre zone d'ombrage). En outre, est-ce que cela signifie que chaque fois que nous blanchissons, nous devrions faire le blanchiment ZCA? Comment déciderions-nous d'utiliser PCA Whitening ou ZCA Blanchiment?
RockTheStar
4
(1) Je ne suis pas tout à fait sûr de ce que vous voulez dire, mais je le dirais ainsi: ZCA étire le jeu de données pour le rendre sphérique, mais essaie de ne pas le faire pivoter (alors que PCA le fait beaucoup tourner). (2) En fait, je pense que dans la plupart des cas, peu importe que vous utilisiez le blanchiment PCA ou ZCA. La seule situation dans laquelle je peux imaginer où la ZCA pourrait être préférable est le prétraitement des réseaux de neurones de convolution. S'il vous plaît voir une mise à jour de ma réponse.
Amibe dit de réintégrer Monica
5
La PCA est comme une transformation de Fourier, la ZCA est comme une transformation, une multiplication et une transformation en arrière, en appliquant un filtre linéaire (à phase nulle). Nous voyons donc la réponse impulsionnelle du filtre à chaque pixel. Les "composants" impliqués dans l'opération sont les mêmes, les colonnes de E, qui sont les "composants principaux" ... Je veux dire, vous pouvez aussi appeler les rangées de composants W, mais je pense qu'il est important de comprendre que les mêmes "composants principaux" entrent en jeu, et lorsque vous appliquez la ZCA, vous revenez au domaine d'origine, tandis qu'avec la PCA, vous devez "reconstruire" le signal.
dividebyzero
1
@dividebyzero +1 à votre dernier commentaire, je pense que c'est une perspective valable. Quoi qu'il en soit, j'espère que la signification de mon dernier chiffre (tiré du document lié) est claire maintenant.
amibe dit de réintégrer Monica
1
@learning Vous ne voyez pas d'images blanchies PCA sur cette page! Ils montrent des "images à dimension réduite PCA", c'est-à-dire des reconstructions via PCA, mais pas des projections PCA elles-mêmes.
Amibe dit de réintégrer Monica
23

Étant donné la composition eigend d'une matrice de covariance, où est la matrice diagonale de Eigenvalues , le blanchiment ordinaire a pour objectif de transformer les données en un espace où la matrice de covariance est diagonale: (avec quelques abus de notation.) Cela signifie que nous pouvons diagonaliser la covariance en transformant les données selon

X¯X¯T=LDLT
D=diag(λ1,λ2,,λn)
D1L1X¯X¯TLTD1=D1L1LDLTLTD1=I
X~=D1L1X.

Ceci est un blanchiment ordinaire avec PCA. Maintenant, ZCA fait quelque chose de différent - il ajoute un petit epsilon aux valeurs propres et transforme les données. Voici quelques images du jeu de données ICRA avant et après ZCA.

X~=L(D+ϵ)1L1X.

Avant la ZCA:

avant ZCA

Après ZCA avecϵ=0.0001

après ZCA 1e-4

Après ZCA avecϵ=0.1

après ZCA avec .1

Pour les données visuelles, les données à haute fréquence se trouveront généralement dans l’espace couvert par les valeurs propres inférieures. Par conséquent, ZCA est un moyen de les renforcer, ce qui conduit à des bords plus visibles, etc.

Bayerj
la source
1
Epsilon ne devrait-il pas être ajouté avant de prendre l'inverse? Je pense que cela est simplement ajouté pour stabiliser l'inversion en cas de valeurs propres proches de zéro. Donc, en fait, s'il est logique de l'ajouter pour le blanchiment ZCA, il serait logique de l'ajouter également pour le blanchiment PCA.
Amibe dit de réintégrer Monica
Oui, avant l'inverse, merci. Comme cela est généralement fait avec la SVD en pratique, je ne sais pas si la stabilisation de l'inversion est nécessaire.
bayerj
J'ai ajouté une autre image pour montrer l'effet.
bayerj
2
+1, mais j'ai un certain nombre d'autres questions et problèmes. (1) Ce que je voulais dire à propos d’epsilon, c’est qu’il n’est pas spécifique à ZCA, il peut également être utilisé pour le blanchiment PCA. (2) Je ne suis pas sûr de comprendre votre commentaire à propos de SVD: SVD ou non, il faut inverser les valeurs singulières, d’où la nécessité d’epsilon. (3) La transformation de blanchiment de PCA est , vous l’avez écrite en sens inverse, ce qui rend le calcul de la seconde formule erroné ... (4) Les chiffres sont sympas, où sont-ils de? (5) Savez-vous dans quelles situations le blanchiment ZCA serait préférable au blanchiment PCA et pourquoi? D1/2L
amibe dit de réintégrer Monica
(1) d'accord. Je n'ai aucune intuition sur ce que cela signifie, cependant. (2) Ma connaissance de la décomposition est incomplète ici, mais j'ai supposé qu'une matrice d'inversion classique sur une matrice de covariance singulière échouera, tandis que la SVD sur une matrice de données donnant lieu à une covariance singulière ne le sera pas. (3) Merci, va le réparer. (4) De mon code :) (5) J'émets l'hypothèse que pour de nombreux algorithmes donnant des représentations trop complètes (par exemple, GainShape K-Means, Auto Encoder, RICA) et / ou faire un travail similaire comme une indépendance algébrique PCA des fonctionnalités blesse, mais Je n'ai aucune connaissance dure à ce sujet.
bayerj