PCA sebenarnya hanya rotasi. Serius, itu saja: itu cara cerdas untuk memutar data ke basis baru. Dasar ini memiliki sifat yang menjadikannya berguna sebagai langkah pra-pemrosesan untuk beberapa prosedur.
Dasarnya adalah ortonormal . Ini sangat berguna jika fitur Anda menunjukkan multikolinearitas (dua atau lebih fitur tergantung secara linear): menerapkan PCA dijamin memberi Anda dasar di mana ini tidak lagi menjadi masalah. Prosedur ini dikenal sebagai regresi komponen utama
Vektor dasar bermakna sehubungan dengan penyebaran data: mereka adalah vektor eigen dari matriks kovarians . Properti kedua ini memunculkan utilitas PCA yang terkenal sebagai teknik pengurangan dimensionalitas: setelah memutar data, memproyeksikan data ke subset dari vektor basis yang terkait dengan bagian signifikan dari total varians menghasilkan representasi dimensi yang lebih rendah yang (sering) tetap dipertahankan ( sebagian besar) sifat struktural (menarik) dari data.
Jadi: apakah ini algoritma pembelajaran? Ini semacam pertanyaan filosofis. Apa yang menjadikan sesuatu algoritma pembelajaran? Tentu saja PCA bukan algoritma pembelajaran "diawasi" karena kita dapat melakukannya dengan atau tanpa variabel target, dan kami biasanya mengaitkan teknik "tidak diawasi" dengan pengelompokan.
Ya, PCA adalah prosedur preprocessing. Tetapi sebelum Anda menuliskannya sepenuhnya sebagai bukan "belajar" sesuatu, saya ingin Anda mempertimbangkan yang berikut: PCA dapat dihitung dengan benar-benar mengambil vektor eigen dari matriks kovarians, tetapi ini bukan bagaimana umumnya dilakukan dalam praktik. Prosedur yang setara secara numerik dan lebih efisien secara komputasi adalah dengan hanya mengambil SVD data. Oleh karena itu, PCA hanyalah aplikasi spesifik SVD, jadi menanyakan apakah PCA adalah algoritma pembelajaran benar-benar menanyakan apakah SVD adalah algoritma pembelajaran.
Sekarang, meskipun Anda mungkin merasa nyaman menulis PCA sebagai bukan algoritma pembelajaran, inilah mengapa Anda harus kurang nyaman melakukan hal yang sama dengan SVD: ini adalah metode yang sangat kuat untuk pemodelan topik dan penyaringan kolaboratif . Properti SVD yang membuatnya berguna untuk aplikasi ini adalah properti yang persis sama yang membuatnya berguna untuk pengurangan dimensionalitas (yaitu PCA).
SVD adalah generalisasi dari komposisi eigend, dan itu juga sangat kuat bahkan sebagai versi SVD yang terbatas. Anda dapat melakukan deteksi komunitas pada grafik dengan melihat vektor eigen dari matriks adjacency, atau menentukan probabilitas kondisi-mapan dari model markov dengan melihat vektor eigen dari matriks transisi, yang secara kebetulan juga pada dasarnya adalah bagaimana PageRank dihitung.
Di bawah tenda, PCA melakukan operasi aljabar linier sederhana. Tapi, ini persis operasi yang sama yang mendasari banyak aplikasi yang kebanyakan orang tidak akan mempertanyakan penerapan label "pembelajaran mesin". Kelas algoritma ini disebut Matrix Factorization , dan bahkan meluas ke teknik canggih seperti word2vec : memang, Anda benar-benar bisa mendapatkan hasil seperti word2vec dengan benar-benar hanya menerapkan PCA ke matriks co-occrrence kata . Generalisasi lagi, kata lain untuk hasil PCA adalah embedding . Word2vec mungkin merupakan contoh embedding yang paling terkenal, tetapi membangun embeddings (sebagai perantara) juga merupakan komponen penting dari arsitektur encoder-decoder yang digunakan dalam RNNsdan GAN , yang merupakan ujung pendarahan dari penelitian ML saat ini.
Jadi kembali ke pertanyaan Anda: apakah PCA adalah "algoritma pembelajaran mesin?" Nah, jika tidak, Anda harus siap untuk mengatakan hal yang sama tentang pemfilteran kolaboratif, pemodelan topik, deteksi komunitas, sentralitas jaringan, dan model penyematan juga.
Hanya karena itu aljabar linier sederhana tidak berarti itu juga bukan sihir.