Apa perbedaan antara ZCA whitening dan PCA whitening?


60

Saya bingung tentang ZCA whitening dan normal whitening (yang diperoleh dengan membagi komponen utama dengan akar kuadrat dari nilai eigen PCA). Sejauh yang aku tahu,

xZCAwhite=UxPCAwhite,
mana adalah vektor eigen PCA.U

Apa kegunaan dari ZCA whitening? Apa perbedaan antara pemutihan normal dan pemutihan ZCA?


2
Menurut "Jaringan Saraf Tiruan: Trik Perdagangan", PCA dan ZCA hanya berbeda oleh rotasi.
Martin Thoma

Jawaban:


81

Biarkan data Anda (terpusat) disimpan dalam matriks dengan fitur (variabel) dalam kolom dan titik data dalam baris. Biarkan matriks kovarians memiliki vektor eigen dalam kolom dan nilai eigen pada diagonal , sehingga .n×dXdnC=XX/nEDC=EDE

Kemudian apa yang Anda sebut transformasi pemutihan PCA "normal" diberikan oleh , lihat mis. Jawaban saya di Cara memutihkan data menggunakan analisis komponen utama?WPCA=D1/2E

Namun, transformasi pemutihan ini tidak unik. Memang, data yang diputihkan akan tetap memutih setelah rotasi apa pun, yang berarti bahwa setiap dengan matriks ortogonal juga akan menjadi transformasi pemutihan. Dalam apa yang disebut ZCA whitening, kita mengambil (ditumpuk bersama vektor eigen dari matriks kovarians) sebagai matriks ortogonal ini, yaituW=RWPCARE

WZCA=ED1/2E=C1/2.

Salah satu properti yang menentukan dari transformasi ZCA ( kadang-kadang juga disebut "transformasi Mahalanobis") adalah bahwa ia menghasilkan data yang diputihkan yang sedekat mungkin dengan data asli (dalam pengertian kuadrat terkecil). Dengan kata lain, jika Anda ingin meminimalkan tunduk pada diputihkan, maka Anda harus mengambil . Berikut ini adalah ilustrasi 2D:XXA2XAA=WZCA

Pemutihan PCA dan ZCA

Subplot kiri menunjukkan data dan sumbu utamanya. Perhatikan bayangan gelap di sudut kanan atas distribusi: ini menandai orientasinya. Baris ditunjukkan pada subplot kedua: ini adalah vektor yang diproyeksikan. Setelah memutihkan (di bawah) distribusi terlihat bulat, tetapi perhatikan bahwa itu juga terlihat diputar --- sudut gelap sekarang di sisi Timur, bukan di sisi Utara-Timur. Baris ditunjukkan pada subplot ketiga (perhatikan bahwa mereka bukan ortogonal!). Setelah memutihkan (di bawah) distribusi terlihat bulat dan berorientasi dengan cara yang sama seperti aslinya. Tentu saja, yang bisa dapatkan dari PCA memutih data ke ZCA memutih data dengan berputar dengan .WPCAWZCAE

Istilah "ZCA" tampaknya telah diperkenalkan di Bell dan Sejnowski 1996dalam konteks analisis komponen independen, dan singkatan dari "analisis komponen fase nol". Lihat di sana untuk detail lebih lanjut. Kemungkinan besar, Anda menemukan istilah ini dalam konteks pemrosesan gambar. Ternyata, bahwa ketika diterapkan pada sekelompok gambar alami (piksel sebagai fitur, masing-masing gambar sebagai titik data), sumbu utama terlihat seperti komponen Fourier dari peningkatan frekuensi, lihat kolom pertama Gambar 1 di bawah ini. Jadi mereka sangat "global". Di sisi lain, deretan transformasi ZCA terlihat sangat "lokal", lihat kolom kedua. Ini justru karena ZCA mencoba mengubah data sesedikit mungkin, sehingga setiap baris sebaiknya lebih dekat dengan salah satu fungsi basis asli (yang akan menjadi gambar dengan hanya satu piksel aktif). Dan ini mungkin untuk dicapai,

PCA dan ZCA di Bell dan Sejnowski 1996

Memperbarui

Lebih banyak contoh filter ZCA dan gambar yang diubah dengan ZCA diberikan di Krizhevsky, 2009, Mempelajari Berbagai Fitur Lapisan dari Gambar Mungil , lihat juga contoh dalam jawaban @ bayerj (+1).

Saya pikir contoh-contoh ini memberikan gambaran kapan ZCA whitening mungkin lebih disukai daripada PCA. Yaitu, gambar yang diputihkan ZCA masih menyerupai gambar yang normal , sedangkan yang diputihkan PCA tidak tampak seperti gambar normal. Ini mungkin penting untuk algoritme seperti jaringan saraf konvolusional (seperti misalnya digunakan dalam makalah Krizhevsky), yang memperlakukan piksel tetangga secara bersamaan sehingga sangat bergantung pada properti lokal gambar alami. Untuk sebagian besar algoritma pembelajaran mesin lainnya, itu harus sama sekali tidak relevan apakah data diputihkan dengan PCA atau ZCA.


Terima kasih! Saya punya pertanyaan: jadi apakah itu berarti ZCA pada dasarnya mengubah akses, tetapi tidak banyak mengubah posisi data? (berdasarkan area naungan Anda). Juga, apakah itu berarti setiap kali kita memutihkan, kita harus melakukan pemutihan ZCA? Bagaimana kita memutuskan untuk menggunakan PCAwhitening atau ZCA whitening?
RockTheStar

4
(1) Saya tidak begitu yakin apa yang Anda maksud, tapi saya akan mengatakannya seperti itu: ZCA meregangkan dataset untuk membuatnya bulat, tetapi mencoba untuk tidak memutarnya (sedangkan PCA memutarnya cukup banyak). (2) Saya benar-benar berpikir bahwa dalam kebanyakan kasus tidak masalah jika Anda menggunakan pemutihan PCA atau ZCA. Satu-satunya situasi yang dapat saya bayangkan di mana ZCA lebih disukai, adalah pra-pemrosesan untuk jaringan saraf convolutional. Silakan lihat pembaruan untuk jawaban saya.
Amuba mengatakan Reinstate Monica

5
PCA seperti membuat transformasi Fourier, ZCA seperti mengubah, mengalikan dan mentransformasikan kembali, menerapkan filter linear (fase-nol). Jadi yang kita lihat ada respon impuls filter pada setiap piksel. "Komponen" yang terlibat dalam operasi adalah sama, kolom E, yang merupakan "komponen utama" ... Maksud saya, Anda dapat memanggil baris komponen W juga, tapi saya pikir penting untuk memahami bahwa "komponen utama" yang sama terlibat, dan ketika Anda menerapkan ZCA, Anda kembali ke domain asli, sementara dengan PCA Anda perlu "merekonstruksi" sinyal.
dividebyzero

1
@dividebyzero +1 untuk komentar terakhir Anda, saya pikir ini adalah perspektif yang berharga. Bagaimanapun, saya berharap arti dari figur terakhir saya (yang diambil dari kertas terkait) jelas sekarang.
Amuba kata Reinstate Monica

1
@pelajaran Anda tidak melihat gambar putih PCA di halaman itu! Mereka menunjukkan "gambar dengan dimensi PCA dikurangi", yaitu rekonstruksi melalui PCA, tetapi bukan proyeksi PCA sendiri.
Amuba mengatakan Reinstate Monica

23

Diberikan komposisi Eigend dari matriks kovarians mana adalah matriks diagonal dari nilai Eigenvalues , resort pemutih biasa untuk mengubah data menjadi ruang di mana matriks kovarians adalah diagonal: (dengan beberapa penyalahgunaan notasi.) Itu artinya kita dapat mendiagonalisasi kovarians dengan mentransformasikan data sesuai dengan

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

Ini adalah pemutihan biasa dengan PCA. Sekarang, ZCA melakukan sesuatu yang berbeda - ia menambahkan epsilon kecil ke nilai Eigen dan mengubah data kembali. Berikut adalah beberapa gambar dari kumpulan data CIFAR sebelum dan sesudah ZCA.

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

Sebelum ZCA:

sebelum ZCA

Setelah ZCA denganϵ=0.0001

setelah ZCA 1e-4

Setelah ZCA denganϵ=0.1

setelah ZCA dengan .1

Untuk data penglihatan, data frekuensi tinggi biasanya akan berada di ruang yang dibentang oleh nilai Eigen yang lebih rendah. Karenanya ZCA adalah cara untuk memperkuat ini, mengarah ke tepi yang lebih terlihat dll.


1
Bukankah epsilon harus ditambahkan sebelum mengambil invers? Saya pikir ini hanya ditambahkan untuk menstabilkan inversi jika nilai eigen mendekati nol. Jadi sebenarnya jika masuk akal untuk menambahkannya untuk ZCA whitening, maka akan masuk akal untuk menambahkannya untuk pemutihan PCA juga.
Amuba kata Reinstate Monica

Ya, sebelum kebalikannya, terima kasih. Karena ini biasanya dilakukan dengan SVD dalam praktek, saya tidak tahu apakah menstabilkan inversi sama sekali.
bayerj

Saya telah menambahkan gambar lain untuk menunjukkan efeknya.
bayerj

2
+1, tetapi saya memiliki sejumlah nitpicks dan pertanyaan lebih lanjut. (1) Yang saya maksudkan tentang epsilon adalah tidak spesifik untuk ZCA, dapat digunakan untuk memutihkan PCA juga. (2) Saya tidak yakin saya mengerti komentar Anda tentang SVD: SVD atau tidak, orang perlu membalikkan nilai singular, maka kebutuhan untuk epsilon. (3) Transformasi pemutihan PCA adalah , Anda menulis sebaliknya, dan ini membuat perhitungan dalam rumus kedua salah ... (4) Angka yang bagus, di mana mereka dari? (5) Apakah Anda tahu dalam situasi apa pemutihan ZCA lebih disukai daripada pemutihan PCA, dan mengapa? D1/2L
Amoeba berkata Reinstate Monica

(1) setuju. Saya tidak punya intuisi tentang apa artinya itu. (2) Pengetahuan dekomposisi saya tidak lengkap di sini, tetapi saya berasumsi bahwa matriks inversi klasik pada matriks kovarians singular akan gagal, sedangkan SVD pada matriks data yang menyebabkan kovarians singular tidak akan. (3) Terima kasih, akan memperbaikinya. (4) Dari kode saya :) (5) Saya berhipotesis bahwa untuk banyak algoritma yang memberikan representasi overcomplete (mis. GainShape K-Means, Auto encoders, RICA) dan / atau melakukan pekerjaan yang serupa seperti PCA, kemandirian aljabar dari fitur-fitur terasa menyakitkan, tetapi Saya tidak memiliki pengetahuan keras tentang ini.
bayerj
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.