একটি matrix যখন কোনো vector-কে গুণ করে, সাধারণত সেই vector ঘোরে এবং দৈর্ঘ্য বদলায়। কিন্তু কিছু "বিশেষ" vector আছে যেগুলো ঘোরে না — শুধু দৈর্ঘ্য বদলায়। সেই বিশেষ direction-গুলোকে বলে Eigenvector, আর দৈর্ঘ্য কতগুণ বদলালো সেটাই Eigenvalue।
Google PageRank, PCA, image compression, neural network stability — সব এই একটিমাত্র ধারণার উপর দাঁড়ানো।
সংজ্ঞা
Square matrix A-এর জন্য:
- v = eigenvector (≠ 0)
- λ = eigenvalue (একটি scalar)
অর্থাৎ matrix A vector v-কে শুধু λ গুণ করে — দিক বদলায় না।
Visual Intuition
একটি 2-D linear transformation কল্পনা করুন — সমস্ত বিন্দু grid রূপে stretch/rotate/shear হচ্ছে। যে কয়েকটি direction-এ point-গুলো ঘোরে না, শুধু কাছে/দূরে যায় — সেগুলোই eigen-direction।
কীভাবে বের করি?
Characteristic equation থেকে eigenvalue:
প্রতিটি λ-র জন্য eigenvector solve করি:
উদাহরণ
গুরুত্বপূর্ণ Properties
- n × n matrix-এ সর্বোচ্চ nটি eigenvalue।
- Sum of eigenvalues = trace(A) (diagonal-এর যোগফল)।
- Product of eigenvalues = det(A)।
- Symmetric matrix-এর eigenvalue real, eigenvector orthogonal।
- Eigenvector যেকোনো nonzero scalar দিয়ে গুণ করলেও eigenvector — সাধারণত unit norm করে দেওয়া হয়।
Diagonalization
যদি A-র nটি স্বাধীন eigenvector থাকে:
- V = eigenvector-গুলো column হিসেবে
- Λ = diagonal-এ eigenvalue
Python (NumPy) Implementation
import numpy as np
A = np.array([[4.0, 1.0],
[2.0, 3.0]])
eigvals, eigvecs = np.linalg.eig(A)
print("eigenvalues:", eigvals) # ~[5, 2]
print("eigenvectors (columns):\n", eigvecs)
# Verify A v = λ v for each eigenpair
for i in range(len(eigvals)):
v = eigvecs[:, i]
lam = eigvals[i]
print(f"A v = {A @ v}")
print(f"λ v = {lam * v}\n")
# Diagonalization: A = V Λ V^-1
V = eigvecs
L = np.diag(eigvals)
A_reconstructed = V @ L @ np.linalg.inv(V)
print("reconstruction close to A?", np.allclose(A, A_reconstructed))
# Symmetric matrix has real eigenvalues & orthogonal eigenvectors
S = np.array([[2.0, 1.0], [1.0, 2.0]])
w, Q = np.linalg.eigh(S) # eigh for symmetric
print("symmetric eigvals:", w)
print("Q^T Q =\n", Q.T @ Q) # ≈ IdentityAI/ML সংযোগ
- PCA: covariance matrix-এর top-k eigenvector = principal direction।
- PageRank: link matrix-এর dominant eigenvector = page importance।
- Spectral clustering: Laplacian matrix-এর eigenvector দিয়ে cluster।
- RNN stability: recurrent weight-এর eigenvalue > 1 → exploding, < 1 → vanishing।
- Hessian eigenvalue: loss landscape-এর curvature বোঝায় (second-order optimization)।
Common Mistakes
- Non-square matrix-এ eigenvalue নেই (SVD লাগে — Chapter 9)।
- সব matrix diagonalizable নয় — defective matrix-ও আছে।
- Complex eigenvalue স্বাভাবিক — non-symmetric matrix-এ আসতে পারে।
- v = 0 eigenvector নয় (সংজ্ঞা অনুযায়ী)।
Practice Tasks
- হাতে eigenvalue বের করুন: [[2, 0], [0, 3]]।
- [[0, 1], [1, 0]]-এর eigenvalue ও eigenvector বের করুন।
- NumPy-তে verify করুন: trace = sum of eigenvalues, det = product।
- একটি random 5×5 symmetric matrix বানিয়ে দেখান eigenvalue সব real।
Assignment
একটি 100×2 random dataset তৈরি করুন (2-D Gaussian)। Covariance matrix calculate করুন, তার eigenvector ও eigenvalue বের করুন এবং matplotlib দিয়ে data + ২টি eigen-direction (arrow) plot করুন। এটাই PCA-র ভিত্তি।
Interview Questions
- Eigenvector ও eigenvalue intuitively কী?
- PCA কেন covariance matrix-এর eigenvector ব্যবহার করে?
- RNN-এ exploding/vanishing gradient eigenvalue-র সাথে কীভাবে সম্পর্কিত?
- Symmetric matrix-এর eigenvalue-গুলো কেন real?
Mini Project
"Mini PageRank" — ৫টি node-এর একটি ছোট directed graph adjacency matrix বানান। Column-normalize করুন।np.linalg.eig দিয়ে dominant eigenvector বের করুন — সেটাই প্রতিটি node-এর rank। Power iteration method-এও একই answer reproduce করুন।
Summary · সারসংক্ষেপ
- Av = λv — matrix যে vector-কে শুধু scale করে।
- Trace = Σλ, Det = ∏λ; symmetric → real λ + orthogonal v।
- A = VΛV−1 — diagonalization দ্রুত power হিসাব দেয়।
- PCA, PageRank, spectral clustering, RNN stability — সব eigen ভিত্তিক।