0Pricing
R Academy · Ders

Özdeğerler ve Özvektörler

eigen() ile özayrışımları hesaplayın ve sonuçları yorumlayın.

Özdeğerler ve Özvektörler, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Özdeğerler Nedir?

Bir A matrisinin özvektörü v, A ile çarpıldığında yalnızca ölçeklenen (dönmeyen) sıfır olmayan bir vektördür: Av = λv. Skaler λ özdeğerdir. Özdeğer ve özvektörler, bir matrisin kendine özgü germe yönlerini ortaya çıkarır.

# Intuition: A simple scaling matrix
A <- matrix(c(3, 0,
              0, 2), nrow = 2, byrow = TRUE)

# The eigenvectors are the standard basis vectors
# A * c(1,0) = 3 * c(1,0)  -> eigenvalue 3
# A * c(0,1) = 2 * c(0,1)  -> eigenvalue 2

v1 <- c(1, 0)
A %*% v1  # c(3, 0) = 3 * v1

v2 <- c(0, 1)
A %*% v2  # c(0, 2) = 2 * v2

cat('Eigenvalues of a diagonal matrix are its diagonal entries')

eigen(): Özdeğerleri Hesaplama

eigen(A), $values (azalan büyüklüğe göre sıralanmış özdeğerler) ve $vectors (özvektörlerin sütun olarak bulunduğu matris) içeren bir liste döndürür. Özvektörler birim uzunluğa göre normalize edilir.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)

# Compute eigendecomposition
eig <- eigen(A)

# Eigenvalues
eig$values
# [1] 5 2  (descending order)

# Eigenvectors (columns)
eig$vectors
#           [,1]       [,2]
# [1,] 0.7071068 -0.4472136
# [2,] 0.7071068  0.8944272

cat('Each column is one eigenvector (unit length)')

Av = lambda * v Eşitliğini Doğrulama

Doğrulamak için A %*% v - lambda * v ifadesinin esasen sıfır olduğunu kontrol edin. Kayan nokta hesaplamaları nedeniyle max(abs(...)) kullanın ve tam eşitliği test etmek yerine sonucun makine epsilon değerine yakın olup olmadığını kontrol edin.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)
eig <- eigen(A)

lambda1 <- eig$values[1]   # 5
v1      <- eig$vectors[, 1]

# Verify: Av - lambda*v should be ~0
residual <- A %*% v1 - lambda1 * v1
max(abs(residual))  # ~ 1e-16

# Check all eigenpairs at once
# A V = V diag(lambda) where V = eigenvectors matrix
V <- eig$vectors
Lambda <- diag(eig$values)
err <- A %*% V - V %*% Lambda
max(abs(err))  # near zero

Simetrik Matrisler: Gerçek Özdeğerler

Simetrik matrislerin (A = t(A)) her zaman gerçek özdeğerleri ve ortogonal özvektörleri vardır. Bu, istatistikte temel öneme sahip spektral teoremdir (kovaryans matrisleri simetrik pozitif yarı-belirlidir).

# Symmetric matrix
S <- matrix(c(4, 2, 2,
              2, 3, 1,
              2, 1, 5), nrow = 3, byrow = TRUE)

# All symmetric: A = t(A)
all.equal(S, t(S))  # TRUE

# Eigenvalues are real
eig <- eigen(S)
eig$values  # All real numbers
Im(eig$values)  # All zero

# Eigenvectors are orthogonal: V'V = I
V <- eig$vectors
round(t(V) %*% V, 10)  # Identity matrix
cat('Symmetric -> real eigenvalues, orthogonal eigenvectors')

Simetrik Olmayan Matrisler: Karmaşık Özdeğerler

Simetrik olmayan matrislerin karmaşık özdeğerleri olabilir (karmaşık eşlenik çiftler). R bunları karmaşık sayılar olarak döndürür. Gerçel kısım büyüme veya küçülmeyi; sanal kısım ise dönme veya salınımı belirler.

# Rotation-like matrix -> complex eigenvalues
A <- matrix(c(0, -1,
              1,  0), nrow = 2, byrow = TRUE)
# This is a 90-degree rotation matrix
eig <- eigen(A)
eig$values
# [1] 0+1i 0-1i  (pure imaginary!)

# Real part: zero -> neither grows nor decays
Re(eig$values)  # 0 0

# Imaginary part: indicates rotation
Im(eig$values)  # 1 -1

# Another example: stable spiral
B <- matrix(c(-1, -2,
               2, -1), nrow = 2, byrow = TRUE)
eigen(B)$values  # -1 +/- 2i

Özdeğer Ayrıştırması A = VLV^-1

Köşegenleştirilebilir bir A matrisi A = V Λ V⁻¹ biçiminde yazılabilir; burada V özvektör matrisi, Λ = diag(eigenvalues) olur. Bu ayrıştırma matris kuvvetlerinin hesaplanmasını sağlar: A^n = V Λ^n V⁻¹.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)
eig <- eigen(A)
V      <- eig$vectors
Lambda <- diag(eig$values)

# Reconstruct A = V %*% Lambda %*% solve(V)
A_reconstructed <- V %*% Lambda %*% solve(V)
all.equal(A, A_reconstructed)  # TRUE

# Matrix power A^3 using eigendecomposition
A_cubed_eig <- V %*% diag(eig$values^3) %*% solve(V)
A_cubed_direct <- A %*% A %*% A
all.equal(Re(A_cubed_eig), A_cubed_direct)  # TRUE

Kovaryans Özdeğerleriyle PCA Kavramı

Temel Bileşen Analizi (PCA), kovaryans matrisinin özdeğer ayrıştırmasını kullanır. Özvektörler en yüksek varyans yönlerini (temel bileşenleri), özdeğerler ise her yöndeki varyansı verir.

set.seed(42)
# Correlated 2D data
x1 <- rnorm(100)
x2 <- 0.8 * x1 + 0.6 * rnorm(100)
X <- cbind(x1, x2)

# Covariance matrix
C <- cov(X)
print(round(C, 3))

# Eigendecomposition of covariance matrix
eig <- eigen(C)
cat('Eigenvalues (variance explained):\n')
print(eig$values)
cat('PC1 direction:\n')
print(eig$vectors[, 1])

# Variance explained by PC1
prop_var <- eig$values[1] / sum(eig$values)
cat('PC1 explains:', round(100 * prop_var, 1), '%')

Spektral Yarıçap

Spektral yarıçap ρ(A) = max|λᵢ|, mutlak değeri en büyük özdeğerdir. Yinelemeli algoritmalardaki kararlılığı belirler: ρ < 1 ise yinelemeler yakınsar; ρ > 1 ise ıraksar.

spectral_radius <- function(A) {
  max(Mod(eigen(A)$values))
}

# Convergent matrix: spectral radius < 1
A_conv <- matrix(c(0.5, 0.2,
                   0.1, 0.3), nrow = 2, byrow = TRUE)
spectral_radius(A_conv)  # < 1 -> iterations converge

# Divergent matrix: spectral radius > 1
A_div <- matrix(c(2, 0.5,
                  0.3, 1.5), nrow = 2, byrow = TRUE)
spectral_radius(A_div)  # > 1 -> iterations diverge

# For positive definite A, spectral radius = max eigenvalue
cat('Spectral radius determines iterative stability')

Özdeğerlerle Determinant ve İz

Determinant, özdeğerlerin çarpımına; iz ise toplamına eşittir. Bu ilişkiler cebirsel özellikleri özdeğerlere bağlar ve eigen() sonuçlarınız için tutarlılık kontrolleri sağlar.

A <- matrix(c(5, 2,
              1, 4), nrow = 2, byrow = TRUE)
eig_vals <- eigen(A)$values

# det(A) = product of eigenvalues
det(A)
prod(eig_vals)  # Same!

# trace = sum of eigenvalues
sum(diag(A))
sum(eig_vals)  # Same!

# For numeric precision, use Re() on complex
A2 <- matrix(c(3, -1, 2, 5), nrow = 2, byrow = TRUE)
ev <- eigen(A2)$values
all.equal(det(A2), prod(Re(ev)), tolerance = 1e-10)
all.equal(sum(diag(A2)), sum(Re(ev)), tolerance = 1e-10)

Pozitif Belirli Matrisler

Simetrik bir matris, tüm özdeğerleri pozitifse pozitif belirli (PD) olur. Kovaryans matrisleri pozitif yarı-belirlidir (özdeğerler ≥ 0). PD matrisler terslenebilirdir ve Cholesky ayrıştırmasına sahiptir.

# Check positive definiteness
is_positive_definite <- function(A) {
  # Symmetric check
  if (!isTRUE(all.equal(A, t(A)))) return(FALSE)
  all(eigen(A)$values > 0)
}

# Positive definite covariance matrix
S <- matrix(c(4, 2,
              2, 3), nrow = 2, byrow = TRUE)
is_positive_definite(S)  # TRUE
eigen(S)$values  # Both positive

# Not PD (one negative eigenvalue)
Q <- matrix(c(1, 3,
              3, 2), nrow = 2, byrow = TRUE)
is_positive_definite(Q)  # FALSE
eigen(Q)$values  # One negative

Baskın Özdeğer için Kuvvet Yinelemesi

Büyük matrislerde tüm özdeğerleri hesaplamak pahalıdır. Kuvvet yinelemesi, en büyük özdeğeri yinelemeli olarak bulur — Google'ın PageRank algoritmasının temelidir. A ile tekrar tekrar çarpın, ardından normalize edin.

# Power iteration: finds dominant eigenvalue
power_iteration <- function(A, tol = 1e-10, max_iter = 1000) {
  n <- nrow(A)
  v <- rnorm(n); v <- v / sqrt(sum(v^2))  # random unit vector
  lambda_old <- 0
  for (i in seq_len(max_iter)) {
    w <- A %*% v
    lambda <- max(abs(w))
    v <- w / lambda
    if (abs(lambda - lambda_old) < tol) break
    lambda_old <- lambda
  }
  list(value = lambda, vector = v)
}

A <- matrix(c(4, 1, 2, 3), nrow = 2, byrow = TRUE)
result <- power_iteration(A)
result$value  # Should be ~5 (dominant eigenvalue)
eigen(A)$values[1]  # Compare

Hızlı Kontrol

R'de özdeğerleri ve özvektörleri anlayıp anlamadığınızı test edin.

Özet: Özdeğerler ve Özvektörler

Temel çıkarımlar: eigen(A), $values ve $vectors döndürür. A %*% v - lambda*v ≈ 0 ile doğrulayın. Simetrik matrislerin gerçek özdeğerleri ve ortogonal özvektörleri vardır. Simetrik olmayan matrislerin karmaşık özdeğerleri olabilir. det(A) = özdeğerlerin çarpımı; iz = toplam. PCA, kovaryans matrisini ayrıştırır. Pozitif belirli ↔ tüm özdeğerler > 0.

A <- matrix(c(6, 2, 2, 3), nrow = 2)
eig <- eigen(A)

# Key eigen operations:
eig$values    # eigenvalues
eig$vectors   # eigenvectors (columns)

# Verify Av = lambda*v
v1 <- eig$vectors[, 1]
max(abs(A %*% v1 - eig$values[1] * v1))  # ~0

# Properties
all.equal(det(A), prod(eig$values))       # TRUE
all.equal(sum(diag(A)), sum(eig$values))  # TRUE

# Reconstruct A = V Lambda V^{-1}
V <- eig$vectors
all.equal(A, Re(V %*% diag(eig$values) %*% solve(V)))

Sıkça Sorulan Sorular

“Özdeğerler ve Özvektörler” dersi ücretsiz mi?

Evet — “Özdeğerler ve Özvektörler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“Özdeğerler ve Özvektörler” dersinde ne öğreneceğim?

eigen() ile özayrışımları hesaplayın ve sonuçları yorumlayın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Özdeğerler ve Özvektörler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Matris Çarpımı ve Determinantlar
  2. solve() ile Doğrusal Sistemleri Çözme
  3. Özdeğerler ve Özvektörler
  4. SVD, QR ve Cholesky Ayrışımları
← R Academy Sayfasına Dön