Apa penjelasan intuitif untuk bagaimana PCA berubah dari masalah geometris (dengan jarak) ke masalah aljabar linier (dengan vektor eigen)?

54

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.

masukkan deskripsi gambar di sini

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 .

stackoverflowuser2010
sumber
2
Di utas panjang di belakang tautan pertama Anda, ada jawaban @ amoeba dengan animasi, yang menjelaskan hal intinya. PCA adalah rotasi sumbu data (kolom) hingga tidak berkorelasi sebagai vektor data (variabel). Seperti matriks rotasi ditemukan melalui eigendecomposition atau tunggal nilai dekomposisi dan disebut matriks vektor eigen.
ttnphns
2
Selain itu, bahkan jika Anda bukan ahli matematika (saya tidak terlalu) Anda mungkin pernah mendengar tentang aljabar linier dan geometri Euclidean adalah bidang matematika yang sangat terkait; mereka bahkan dipelajari bersama sebagai disiplin yang disebut geometri analitik.
ttnphns
1
optimization problemYa 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?
ttnphns
Anda memintanya 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.
ttnphns
6
CwCw=λw

Jawaban:

54

Pernyataan masalah

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.

Tepat sekali. Saya menjelaskan hubungan antara dua formulasi ini dalam jawaban saya di sini (tanpa matematika) atau di sini (dengan matematika).

Cww=1wCw

(Hanya dalam kasus ini tidak jelas: jika adalah matriks data terpusat, maka proyeksi diberikan oleh dan variansinya adalah .)XXw1n1(Xw)Xw=w(1n1XX)w=wCw

Di sisi lain, vektor eigen dari adalah, menurut definisi, setiap vektor sedemikian rupa sehingga .CvCv=λ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 memberikanwCww=ww=1wCwλ(ww1)Cwλw=0λwCwλ(ww1)=wCw=λww=λ . 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 mengambilCC λ i wC w Σ λ i w 2 i w = ( 1 , 0 , 0 , ... , 0 ) λ 1CλiwCwλiwi2w=(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.λ1wCw

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?Cw1λ1C

Ini akan memiliki di sudut kiri atas, karena dalam basis ini dan harus sama dengan .λ1w1=(1,0,00)Cw1=(C11,C21,Cp1)λ1w1=(λ1,0,00)

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

C=(λ10000),

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λ2CC


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=λ1w1Cvw1Cvw1

w1Cv=(w1Cv)=vCw1=vCw1=λ1vw1=λ10=0.

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.Cw1w1w2

amuba kata Reinstate Monica
sumber
"Pengganda lagrange" benar-benar jelas bagi saya. Namun, dapatkah Anda memberi tahu saya mengapa kami membutuhkan batasan panjang unit? Terima kasih
Haitao Du
2
@ hxd1011 Sudah ada pertanyaan ini di sini, tetapi secara singkat: itu karena jika tidak, Anda dapat mengalikan dengan angka apa pun dan akan meningkat dengan kuadrat dari angka ini. Jadi masalahnya menjadi tidak jelas: maksimum ungkapan ini tidak terbatas. Faktanya, varian proyeksi pada arah adalah hanya jika adalah panjang unit. wwCwwwCww
Amoeba berkata Reinstate Monica
Saya kira mungkin sedikit lebih akrab bagi kebanyakan pembaca; Saya menggantinya di sini. Terima kasih. n1
Amuba kata Reinstate Monica
@amoeba: Terima kasih atas jawabannya. Saya bingung dengan beberapa notasi Anda. Anda menggunakan w untuk menunjukkan vektor satuan panjang yang ternyata menjadi vektor eigen pertama (komponen utama). Ketika saya menjalankan PCA di R (misalnya 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?
stackoverflowuser2010
1
Hai @ user58865, terima kasih atas dorongannya: Saya hanya lupa menjawab pertama kali. Yang tipis adalah, adalah skalar - itu hanya angka. Angka apa pun adalah "simetris" :) dan sama dengan transposnya. Apakah masuk akal? w1Cv
Amuba mengatakan Reinstate Monica
5

Ada hasil dari 1936 oleh Eckart and Young ( https://ccrma.stanford.edu/~dattorro/eckart%26young.1936.pdf ), yang menyatakan sebagai berikut

1rdkukvkT=argminX^ϵM(r)||XX^||F2

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.XXX^

Cagdas Ozgenc
sumber
4

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 TheoremS=ADA1D=diag(λ1,λ2,,λn)λ1λ2λnx1,x2,,xnA(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)||=λiA(xi)
n>prk(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)s11s22spp>0 i p s i i = 0 i > n v i Σ V tX(vi)=siiuiipsii=0i>nviberikan 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

aginensky
sumber
4

"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)

seanv507
sumber
1

@amoeba memberikan formalisasi dan bukti rapi:

Kita dapat memformalkannya sebagai berikut: mengingat matriks kovarian C, kami mencari vektor w yang memiliki panjang satuan, ‖w‖ = 1, sehingga w T Cw maksimal.

Tapi saya pikir ada satu bukti intuitif untuk:

Ternyata arah utama pertama diberikan oleh vektor eigen dengan nilai eigen terbesar. Ini adalah pernyataan tidak trivial dan mengejutkan.

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:

  1. memaksimalkan ‖Cw‖
  2. memaksimalkan cos (w, Cw)

Ternyata jika kita mengambil w menjadi vektor eigen dari C dengan nilai eigen terbesar, kita dapat mengarsipkan keduanya secara bersamaan:

  1. ‖Cw‖ adalah maks, (jika kita menyimpang dari vektor eigen ini, mendekomposisikannya di sepanjang vektor eigen ortogonal, Anda akan melihat ‖Cw‖ berkurang.)
  2. w dan Cw dalam arah yang sama, cos (w, Cw) = 1, maks

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

Langit
sumber