Saya sudah membaca banyak tentang PCA, termasuk berbagai tutorial dan pertanyaan (seperti yang ini , yang ini , yang ini , dan yang ini ).
Masalah geometris yang PCA coba optimalkan jelas bagi saya: PCA mencoba menemukan komponen utama pertama dengan meminimalkan kesalahan rekonstruksi (proyeksi), yang secara bersamaan memaksimalkan varians dari data yang diproyeksikan.
Ketika saya pertama kali membaca itu, saya langsung memikirkan sesuatu seperti regresi linier; mungkin Anda bisa menyelesaikannya dengan menggunakan gradient descent jika diperlukan.
Namun, kemudian pikiran saya meledak ketika saya membaca bahwa masalah optimasi diselesaikan dengan menggunakan aljabar linier dan menemukan vektor eigen dan nilai eigen. Saya benar-benar tidak mengerti bagaimana penggunaan aljabar linier ini ikut berperan.
Jadi pertanyaan saya adalah: Bagaimana PCA dapat berubah dari masalah optimasi geometris menjadi masalah aljabar linier? Bisakah seseorang memberikan penjelasan yang intuitif?
Saya tidak mencari jawaban seperti ini yang mengatakan "Ketika Anda memecahkan masalah matematika PCA, akhirnya setara dengan menemukan nilai eigen dan vektor eigen dari matriks kovarians." Tolong jelaskan mengapa vektor eigen menjadi komponen utama dan mengapa nilai eigen keluar menjadi varian dari data yang diproyeksikan ke mereka
Ngomong-ngomong, saya seorang insinyur perangkat lunak dan bukan ahli matematika.
Catatan: gambar di atas diambil dan dimodifikasi dari tutorial PCA ini .
sumber
optimization problem
Ya masalah PCA dapat diselesaikan melalui pendekatan optimasi (iteratif, konvergen), saya percaya. Tetapi karena telah menutup solusi bentuk melalui matematika mengapa tidak menggunakan solusi yang lebih sederhana dan efisien itu?provide an intuitive explanation
. Saya ingin tahu mengapa jawaban yang intuitif dan jelas oleh amuba, tempat saya ditautkan, tidak cocok untuk Anda. Anda bertanya_why_ eigenvectors come out to be the principal components...
mengapa? Menurut definisi! Vektor eigen adalah arah utama dari cloud data.Jawaban:
Pernyataan masalah
Tepat sekali. Saya menjelaskan hubungan antara dua formulasi ini dalam jawaban saya di sini (tanpa matematika) atau di sini (dengan matematika).
(Hanya dalam kasus ini tidak jelas: jika adalah matriks data terpusat, maka proyeksi diberikan oleh dan variansinya adalah .)X Xw 1n−1(Xw)⊤⋅Xw=w⊤⋅(1n−1X⊤X)⋅w=w⊤Cw
Di sisi lain, vektor eigen dari adalah, menurut definisi, setiap vektor sedemikian rupa sehingga .C v Cv=λv
Ternyata arah utama pertama diberikan oleh vektor eigen dengan nilai eigen terbesar. Ini adalah pernyataan yang tidak menyakitkan dan mengejutkan.
Bukti
Jika seseorang membuka buku atau tutorial apa pun di PCA, Anda dapat menemukan di sana bukti hampir satu baris berikut dari pernyataan di atas. Kami ingin memaksimalkan bawah batasan bahwa ; ini dapat dilakukan dengan memperkenalkan pengali Lagrange dan memaksimalkan ; membedakan, kita memperoleh , yang merupakan persamaan vektor eigen. Kita melihat bahwa sebenarnya menjadi nilai eigen terbesar dengan menggantikan solusi ini ke dalam fungsi objektif, yang memberikanw⊤Cw ∥w∥=w⊤w=1 w⊤Cw−λ(w⊤w−1) Cw−λw=0 λ w⊤Cw−λ(w⊤w−1)=w⊤Cw=λw⊤w=λ . Berdasarkan fakta bahwa fungsi objektif ini harus dimaksimalkan, harus menjadi nilai eigen terbesar, QED.λ
Ini cenderung tidak terlalu intuitif bagi kebanyakan orang.
Bukti yang lebih baik (lihat mis. Jawaban rapi oleh @ cardinal ) ini mengatakan bahwa karena adalah matriks simetris, ia diagonal dalam basis vektor eigennya. (Ini sebenarnya disebut teorema spektral .) Jadi kita dapat memilih basis ortogonal, yaitu yang diberikan oleh vektor eigen, di mana diagonal dan memiliki nilai eigen di diagonal. Dengan dasar itu, menyederhanakan menjadi , atau dengan kata lain varians diberikan oleh jumlah tertimbang dari nilai-nilai eigen. Hampir segera bahwa untuk memaksimalkan ungkapan ini orang cukup mengambilC C λ i w ⊤ C w Σ λ i w 2 i w = ( 1 , 0 , 0 , ... , 0 ) λ 1C λi w⊤Cw ∑λiw2i w=(1,0,0,…,0) , yaitu vektor eigen pertama, menghasilkan varians (memang, menyimpang dari solusi ini dan "memperdagangkan" bagian-bagian dari nilai eigen terbesar untuk bagian-bagian yang lebih kecil hanya akan mengarah pada keseluruhan varian yang lebih kecil). Perhatikan bahwa nilai tidak bergantung pada basis! Mengubah ke basis vektor eigen sama dengan rotasi, jadi dalam 2D orang dapat membayangkan hanya memutar selembar kertas dengan scatterplot; jelas ini tidak dapat mengubah varian apa pun.λ1 w⊤Cw
Saya pikir ini adalah argumen yang sangat intuitif dan sangat berguna, tetapi ini bergantung pada teorema spektral. Jadi masalah sebenarnya di sini yang saya pikirkan adalah: apa intuisi di balik teorema spektral?
Teorema spektral
Ambil matriks simetris . Ambil vektor eigennya dengan nilai eigen terbesar . Jadikan vektor eigen ini sebagai vektor basis pertama dan pilih vektor basis lainnya secara acak (sehingga semuanya vektor ortonormal). Bagaimana terlihat dalam basis ini?C w1 λ1 C
Ini akan memiliki di sudut kiri atas, karena dalam basis ini dan harus sama dengan .λ1 w1=(1,0,0…0) Cw1=(C11,C21,…Cp1) λ1w1=(λ1,0,0…0)
Dengan argumen yang sama, akan ada nol di kolom pertama di bawah .λ1
Tetapi karena simetris, ia akan memiliki nol di baris pertama setelah juga. Jadi akan terlihat seperti itu:λ1
dimana ruang kosong berarti ada blok dari beberapa elemen di sana. Karena matriksnya simetris, blok ini juga akan simetris. Jadi kita dapat menerapkan argumen yang persis sama dengannya, secara efektif menggunakan vektor eigen kedua sebagai vektor basis kedua, dan mendapatkan dan di diagonal. Ini dapat berlanjut sampai diagonal. Itu pada dasarnya adalah teorema spektral. (Perhatikan cara kerjanya hanya karena simetris.)λ1 λ2 C C
Inilah reformulasi yang lebih abstrak dari argumen yang persis sama.
Kita tahu bahwa , jadi vektor eigen pertama mendefinisikan subruang 1 dimensi di mana bertindak sebagai perkalian skalar. Sekarang mari kita ambil vektor orthogonal ke . Maka hampir segera bahwa juga ortogonal untuk . Memang:Cw1=λ1w1 C v w1 Cv w1
Ini berarti bertindak pada seluruh subruang yang tersisa ortogonal ke sehingga tetap terpisah dari . Ini adalah properti penting dari matriks simetris. Jadi kita dapat menemukan vektor eigen terbesar di sana, , dan melanjutkan dengan cara yang sama, akhirnya membangun basis vektor eigen ortonormal.C w1 w1 w2
sumber
prcomp(iris[,1:4], center=T, scale=T)
), saya melihat vektor eigen satuan panjang dengan sekelompok mengapung seperti(0.521, -0.269, 0.580, 0.564)
. Namun, dalam jawaban Anda di bawah "Bukti", Anda menulis Hampir segera bahwa untuk memaksimalkan ungkapan ini orang harus mengambil w = (1,0,0, ..., 0), yaitu vektor eigen pertama . Mengapa vektor eigen dalam buktimu terlihat sangat bagus?Ada hasil dari 1936 oleh Eckart and Young ( https://ccrma.stanford.edu/~dattorro/eckart%26young.1936.pdf ), yang menyatakan sebagai berikut
di mana M (r) adalah himpunan matriks peringkat-r, yang pada dasarnya berarti komponen r pertama dari SVD dari X memberikan perkiraan matriks peringkat-rendah terbaik X dan terbaik didefinisikan dalam hal norma Frobenius kuadrat - jumlah kuadrat elemen matriks.
Ini adalah hasil umum untuk matriks dan pada pandangan pertama tidak ada hubungannya dengan set data atau pengurangan dimensi.
Namun jika Anda tidak menganggap sebagai sebuah matriks melainkan memikirkan kolom dari matriks mewakili vektor titik data maka adalah perkiraan dengan kesalahan representasi minimum dalam hal perbedaan kesalahan kuadrat.X X X^
sumber
Ini adalah pendapat saya tentang aljabar linier di belakang PCA. Dalam aljabar linier, salah satu teorema kunci adalah . Ini menyatakan jika S adalah setiap matriks n oleh n simetris dengan koefisien nyata, maka S memiliki n vektor eigen dengan semua nilai eigen menjadi nyata. Itu berarti kita dapat menulis dengan D sebuah matriks diagonal dengan entri positif. Itu adalah dan tidak ada salahnya mengasumsikan . A adalah perubahan matriks basis. Yaitu, jika basis asli kami adalah , maka sehubungan dengan dasar yang diberikan olehSpectral Theorem S=ADA−1 D=diag(λ1,λ2,…,λn) λ1≥λ2≥…≥λn x1,x2,…,xn A(x1),A(x2),…A(xn) , aksi S adalah diagonal. Ini juga berarti bahwa dapat dianggap sebagai basis ortogonal dengan Jika matriks kovarians kami adalah untuk n pengamatan variabel n, kami akan selesai. Basis yang diberikan oleh adalah basis PCA. Ini mengikuti dari fakta-fakta aljabar linier. Pada dasarnya itu benar karena basis PCA adalah basis vektor eigen dan ada paling banyak vektor eigen dari matriks ukuran persegi n.
Tentu saja sebagian besar matriks data tidak persegi. Jika X adalah matriks data dengan n pengamatan variabel p, maka X adalah ukuran n oleh p. Saya akan berasumsi bahwa (lebih banyak pengamatan daripada variabel) dan bahwaA(xi) ||A(xi)||=λi A(xi)
n>p rk(X)=p (semua variabel bebas linear). Tidak ada asumsi yang diperlukan, tetapi akan membantu dengan intuisi. Aljabar linier memiliki generalisasi dari teorema Spectral yang disebut dekomposisi nilai singular. Untuk X seperti itu menyatakan bahwa dengan matriks U, V ortonormal (persegi) dari ukuran n dan p dan matriks diagonal nyata dengan hanya non-negatif entri pada diagonal. Sekali lagi kita dapat mengatur ulang dasar V sehingga Dalam istilah matriks, ini berarti bahwa jika dan jika . TheX=UΣVt Σ=(sij) s11≥s22≥…spp>0 i ≤ p s i i = 0 i > n v i Σ V tX(vi)=siiui i≤p sii=0 i>n vi berikan dekomposisi PCA. Lebih tepatnya adalah dekomposisi PCA. Mengapa? Sekali lagi, aljabar linier mengatakan bahwa hanya ada vektor eigen. SVD memberikan variabel baru (diberikan oleh kolom V) yang ortogonal dan memiliki norma yang menurun. ΣVt
sumber
"Yang secara bersamaan memaksimalkan varians dari data yang diproyeksikan." Pernahkah Anda mendengar tentang hasil bagi Rayleigh ? Mungkin itu salah satu cara untuk melihat ini. Yaitu hasil rayleigh dari matriks kovarians memberi Anda varians dari data yang diproyeksikan. (dan halaman wiki menjelaskan mengapa vektor eigen memaksimalkan hasil Rayleigh)
sumber
@amoeba memberikan formalisasi dan bukti rapi:
Tapi saya pikir ada satu bukti intuitif untuk:
Kita bisa menafsirkan w T Cw sebagai produk dot antara vektor w dan Cw, yang mendapatkan oleh w akan melalui transformasi C:
w T Cw = ‖w‖ * ‖Cw‖ * cos (w, Cw)
Karena w memiliki panjang fix, untuk memaksimalkan w T Cw, kita perlu:
Ternyata jika kita mengambil w menjadi vektor eigen dari C dengan nilai eigen terbesar, kita dapat mengarsipkan keduanya secara bersamaan:
Karena vektor eigen adalah ortogonal, bersama-sama dengan vektor eigen lainnya dari C, mereka membentuk seperangkat komponen utama ke X.
bukti 1
dekomposit w menjadi vektor eigen primer dan sekunder ortogonal v1 dan v2 , misalkan panjangnya masing-masing adalah v1 dan v2. kami ingin membuktikan
(λ 1 w) 2 > ((λ 1 v1) 2 + (λ 2 v2) 2 )
karena λ 1 > λ 2 , kita punya
((λ 1 v1) 2 + (λ 2 v2) 2 )
<((λ 1 v1) 2 + (λ 1 v2) 2 )
= (λ 1 ) 2 * (v1 2 + v2 2 )
= (λ 1 ) 2 * w 2
sumber