CH 7Phase 1 · Linear Algebra for AI

Eigenvalues & Eigenvectors

১৫–২৫ মিনিট বাংলা · Math · Python
📖 একটি ছোট গল্প

একটি matrix যখন কোনো vector-কে গুণ করে, সাধারণত সেই vector ঘোরে এবং দৈর্ঘ্য বদলায়। কিন্তু কিছু "বিশেষ" vector আছে যেগুলো ঘোরে না — শুধু দৈর্ঘ্য বদলায়। সেই বিশেষ direction-গুলোকে বলে Eigenvector, আর দৈর্ঘ্য কতগুণ বদলালো সেটাই Eigenvalue

Google PageRank, PCA, image compression, neural network stability — সব এই একটিমাত্র ধারণার উপর দাঁড়ানো।

সংজ্ঞা

Square matrix A-এর জন্য:

A v = λ v
  • v = eigenvector (≠ 0)
  • λ = eigenvalue (একটি scalar)

অর্থাৎ matrix A vector v-কে শুধু λ গুণ করে — দিক বদলায় না

Visual Intuition

একটি 2-D linear transformation কল্পনা করুন — সমস্ত বিন্দু grid রূপে stretch/rotate/shear হচ্ছে। যে কয়েকটি direction-এ point-গুলো ঘোরে না, শুধু কাছে/দূরে যায় — সেগুলোই eigen-direction।

💡 ইনসাইট
Eigenvalue λ > 1 → সেই দিকে stretch। 0 < λ < 1 → shrink।λ < 0 → flip + scale।

কীভাবে বের করি?

Characteristic equation থেকে eigenvalue:

det(A − λI) = 0

প্রতিটি λ-র জন্য eigenvector solve করি:

(A − λI) v = 0

উদাহরণ

A = [[4, 1], [2, 3]] det(A − λI) = (4−λ)(3−λ) − 2 = λ² − 7λ + 10 = 0 λ = 5, λ = 2

গুরুত্বপূর্ণ 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 থাকে:

A = V Λ V−1
  • V = eigenvector-গুলো column হিসেবে
  • Λ = diagonal-এ eigenvalue
✨ টিপ
এই decomposition দিয়ে Ak = V Λk V−1 — power দ্রুত হিসাব হয়, যা Markov chain ও recurrent network-এ অপরিহার্য।

Python (NumPy) Implementation

pythonPython · NumPy
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)     # ≈ Identity

AI/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

  1. হাতে eigenvalue বের করুন: [[2, 0], [0, 3]]
  2. [[0, 1], [1, 0]]-এর eigenvalue ও eigenvector বের করুন।
  3. NumPy-তে verify করুন: trace = sum of eigenvalues, det = product।
  4. একটি 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

  1. Eigenvector ও eigenvalue intuitively কী?
  2. PCA কেন covariance matrix-এর eigenvector ব্যবহার করে?
  3. RNN-এ exploding/vanishing gradient eigenvalue-র সাথে কীভাবে সম্পর্কিত?
  4. 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 ভিত্তিক।
✨ পরবর্তী পদক্ষেপ
Chapter 8-এ Linear Transformation দেখব — matrix কীভাবে space-কে বদলায়, eigenvector কেন "অপরিবর্তিত দিক"।