🧮ML গণিত গুরু
linear-algebraকঠিন17 মিনিট

PCA — Principal Component Analysis

Principal Component Analysis

📸

নিউমার্কেটের ফটোগ্রাফার

ধর তোর বন্ধু সাকিব নিউমার্কেটে ফটো স্টুডিও চালায়। বিয়ার ছবি তোলে, পাসপোর্ট ছবি তোলে। একদিন এক কাস্টমার আসল ১০০টা বিয়ার ছবি নিয়া আর বলল 'মামা, এই ১০০টা ছবি থেইকা ৫টা ছবি বাছো যেইগুলা দিয়া পুরা বিয়ার অনুষ্ঠান বোঝা যায়।' সাকিব বলল 'ভাই, প্রথমে সবচেয়ে important মুহূর্তটা — গায়ে হলুদ, তারপর আকদ, তারপর ওয়ালিমা, তারপর বিদায়, তারপর রিসেপশন। এই ৫টা ছবি দিলে ৯৫% story বোঝা যায়!' কাস্টমার বলল 'বাকি ৯৫টা?' সাকিব বলল 'ডুপ্লিকেট মামা — একই জিনিসের বারবার ছবি!'

এইটাই PCA! অনেক features/dimensions থেকে সবচেয়ে important কয়েকটা direction (principal components) বাইর করা। ১০০ dimension থেকে ৫টা নিলে ৯৫% information retain হইতে পারে — বাকিগুলা redundant বা noise!

সংজ্ঞা

PCA (Principal Component Analysis) হইল data-র covariance matrix-এর eigenvectors খুঁজে বাইর করা আর সবচেয়ে বড় eigenvalue-এর eigenvectors-এর দিকে data-কে project করা। এতে dimensionality কমে কিন্তু maximum variance (information) retain হয়।

Covariance Matrix-এর Eigendecomposition → Principal Components
\[\text{Cov}(X) = \frac{1}{n-1} X^T X = V \Lambda V^T\]

ব্যাখ্যা

PCA-এর ধাপগুলা

PCA করতে ৪টা ধাপ: (১) Data mean-center করো (প্রতিটা feature থেকে mean বাদ দাও), (২) Covariance matrix বানাও, (৩) Eigenvalue ও eigenvector বাইর করো, (৪) Top-k eigenvectors select করো আর data-কে project করো। সাকিব মামার ভাষায়: 'প্রথমে সব ছবি এক জায়গায় আনো, তারপর কোনটা কতটা different দেখো, তারপর সবচেয়ে different গুলা বাছো!'

\[X_{\text{centered}} = X - \mu, \quad \text{Cov} = \frac{1}{n-1} X_{\text{centered}}^T X_{\text{centered}}\]

Variance Explained কি?

প্রতিটা principal component কতটুকু total variance explain করে সেইটা eigenvalue দিয়া বোঝা যায়। λᵢ / Σλ = i-th component-এর explained variance ratio। Cumulative sum 95% হইলে বাকি components বাদ দাও — noise বা trivial information।

\[\text{Explained Variance Ratio}_i = \frac{\lambda_i}{\sum_{j=1}^{d} \lambda_j}\]

কয়টা Component রাখবা?

Scree plot বানাও — eigenvalues plot করো। যেখানে elbow (হঠাৎ drop) দেখবা, সেখান পর্যন্ত রাখো। অথবা cumulative explained variance ≥ 95% হওয়া পর্যন্ত components রাখো। Rule of thumb: যদি ১০০ features থেকে ১০টা component-এ 95% variance capture হয়, তাহলে বাকি ৯০টা মূলত noise।

\[k = \min \left\{ k : \sum_{i=1}^{k} \frac{\lambda_i}{\sum_j \lambda_j} \geq 0.95 \right\}\]

Iris Dataset-এ PCA

Iris dataset-এ ৪টা feature আছে (sepal length, sepal width, petal length, petal width)। PCA দিয়া 2D-তে নামাও যাতে 3 species visualize করা যায়।

Step 1: Data Load ও Mean-Center

150 samples, 4 features। প্রতিটা feature থেকে mean বাদ দাও।

\[X \in \mathbb{R}^{150 \times 4}, \quad X_{\text{centered}} = X - \bar{X}\]

Step 2: Covariance Matrix

4×4 covariance matrix বানাও। Eigenvalues হইব: λ₁ ≈ 4.23, λ₂ ≈ 0.24, λ₃ ≈ 0.08, λ₄ ≈ 0.02।

\[\lambda_1 = 4.23, \; \lambda_2 = 0.24, \; \lambda_3 = 0.08, \; \lambda_4 = 0.02\]

Step 3: Variance Explained

PC1 = 4.23/4.57 = 92.5%, PC2 = 0.24/4.57 = 5.3%। দুইটা মিলায়া 97.8%!

\[\text{PC1} = 92.5\%, \; \text{PC2} = 5.3\%, \; \text{Total} = 97.8\%\]

Step 4: Project to 2D

Top-2 eigenvectors নিয়া 150×4 data-কে 150×2-তে project করো। Plot করলে 3 species আলাদা cluster দেখবা!

\[X_{\text{2D}} = X_{\text{centered}} \cdot V_{[:, :2]} \in \mathbb{R}^{150 \times 2}\]
উত্তর:

2 principal components-এ 97.8% variance capture! 4D থেকে 2D-তে নামলেও 3 species clearly আলাদা দেখা যায়। মামা বলে 'চারটা feature দিয়া confuse হওয়ার দরকার নাই — দুইটাই যথেষ্ট!'

ML-এ কোথায় লাগে?

💡

মনে রাখার ট্রিক

PCA = সাকিব মামার ফটো বাছাই — ১০০ ছবি থেকে ৫টা important ছবি বাছলেই পুরা story বোঝা যায়। বড় eigenvalue = important direction, ছোট eigenvalue = noise। Variance maximize করো, dimension minimize করো!

#pca#principal-components#dimensionality-reduction#eigenfaces#variance#covariance#visualization