Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Xos vektor: A @ v = lambda × v
- 2.2. Geometrik ma'no
- 2.3. np.linalg.eig va eigh
- 2.4. Simmetrik matritsalar
- 2.5. Kovariatsiya matritsasining xos vektorlari
- 2.6. Xos qiymatlar va matritsa xossalari
- 2.7. Daraja usuli va PageRank
- 2.8. Xos qiymatlar — matritsaning DNK si
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Xos vektorlarni topish va tekshirish
- Misol 2 — Simmetrik matritsa: eigh va ortogonallik
- Misol 3 — Kovariatsiya: asosiy o'qlar
- Misol 4 — Daraja usuli: PageRank va Markov barqaror holati
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
10.7-dars: Xos qiymatlar va xos vektorlar
10-QISM — CHIZIQLI ALGEBRA · 7-dars
1. Kirish va motivatsiya
10.4-darsda matritsa vektorni o'zgartirishini ko'rdik: burish, cho'zish, qiyshaytirish. Ko'p vektorlar o'zgartirishdan keyin yo'nalishini o'zgartiradi. Lekin ba'zi maxsus yo'nalishlar bor: matritsa ularni faqat cho'zadi yoki qisqartiradi, burmaydi. Bu yo'nalishlar — xos vektorlar (eigenvectors), cho'zish koeffitsiyenti — xos qiymat (eigenvalue): A @ v = lambda × v. Ular matritsaning "DNK" si — o'zgartirishning mohiyatini ochib beradi.
Data Science'da xos qiymatlar ko'plab muhim usullarning markazida: PCA 10.9-bob — kovariatsiya matritsasining xos vektorlari = ma'lumot eng ko'p tarqalgan yo'nalishlar; Google PageRank — havolalar matritsasining xos vektori = sahifalar muhimligi; Markov zanjiri barqaror holati 10.4-bob — xos qiymati 1 bo'lgan xos vektor; spektral klasterlash; multikollinearlik diagnostikasi (kichik xos qiymat — deyarli bog'liq belgilar); tarmoqlar tahlili (eng ta'sirli foydalanuvchi).
Real vaziyat. Mahalliy qidiruv tizimi 5 ta sayt orasidagi havolalar asosida saytlarni tartiblamoqchi. Oddiy yondashuv — kiruvchi havolalar soni: lekin u havola kimdan kelganini hisobga olmaydi. PageRank g'oyasi: muhim sayt — muhim saytlar havola bergan sayt. Bu ta'rif "o'z-o'ziga tayanadi" — va aynan xos vektor tenglamasi: r = M @ r. Havolalar matritsasining xos qiymati 1 ga mos xos vektori — saytlar reytingi. Natijada A va B saytlarga bittadan havola bor, lekin A ning havolasi eng muhim C saytdan — shuning uchun A ning reytingi B nikidan deyarli ikki baravar yuqori. Bir-biriga havola beruvchi yopiq juftlik (D-E) esa o'z ulushini saqlab qoladi — PageRank spamga to'liq chidamli emas (Vazifa 7).
Bu darsda xos qiymatlar va xos vektorlarni o'rganamiz.
Bu darsda:
- Xos vektor: A @ v = lambda × v
- Geometrik ma'no: burilmaydigan yo'nalishlar
- np.linalg.eig va eigh
- Simmetrik matritsalar (ortogonal xos vektorlar)
- Kovariatsiya matritsasining xos vektorlari
- Xos qiymatlar va matritsa xossalari (det, iz, shart soni)
- Daraja usuli va PageRank
- Amaliy: Markov barqaror holati
ℹ Misollar real numpy bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. Xos vektor: A @ v = lambda × v
A @ v = lambda × v v ≠ 0 — xos vektor, lambda — xos qiymat
A = [[3, 1],
[0, 2]]
v1 = [1, 0]: A @ v1 = [3, 0] = 3 × v1 → lambda1 = 3
v2 = [1, -1]: A @ v2 = [2, -2] = 2 × v2 → lambda2 = 2
u = [1, 1]: A @ u = [4, 2] — u ga parallel EMAS (yo'nalish o'zgardi)
Xos vektor uzunligi ixtiyoriy (2 × v ham xos vektor) → odatda birlik uzunlikXos vektor — matritsa ta'sirida faqat masshtablanadigan (yo'nalishi saqlanadigan yoki teskarisiga aylanadigan) nolmas vektor; xos qiymat — masshtab koeffitsiyenti: lambda > 1 — cho'zish, 0 < lambda < 1 — qisqarish, lambda < 0 — teskari yo'nalish, lambda = 0 — "yo'q qilish" (proyeksiya yo'qotgan yo'nalish, det = 0, 10.5). n × n matritsa — n tagacha xos qiymat. Xos vektor faqat yo'nalish bo'yicha aniqlanadi — NumPy birlik uzunlikda qaytaradi (ishorasi ixtiyoriy!).
2.2. Geometrik ma'no
Matritsani o'zgartirish sifatida ko'rsak 10.4-bob, xos vektorlar — uning "o'qlari": agar koordinatalar tizimini xos vektorlar bo'yicha tanlasak, murakkab o'zgartirish oddiy diagonal cho'zishga aylanadi (har o'q o'z xos qiymatiga cho'ziladi). Bu — diagonallashtirish: A = V @ diag(lambda) @ V^(-1). Amaliy ma'nosi: murakkab o'zaro bog'liqlik (kovariatsiya, o'tish ehtimollari) — bir-biridan mustaqil "rejimlar"ga ajraladi. Burish matritsasining (2D, 0° va 180° dan boshqa) haqiqiy xos vektori yo'q — har yo'nalish buriladi (xos qiymatlar kompleks).
2.3. np.linalg.eig va eigh
vals, vecs = np.linalg.eig(A) # umumiy kvadrat matritsa
vals — xos qiymatlar (tartibsiz! kompleks bo'lishi mumkin)
vecs[:, i] — i-xos vektor (USTUN!), birlik uzunlik
vals, vecs = np.linalg.eigh(S) # SIMMETRIK matritsa uchun
— haqiqiy qiymatlar, O'SISH tartibida, ortogonal vektorlar, tezroq va barqarorroq
Tekshiruv: np.allclose(A @ vecs[:, i], vals[i] * vecs[:, i]) eig — umumiy holat: qiymatlar tartiblanmagan, kompleks bo'lishi mumkin (.real ehtiyotkorlik bilan). eigh — simmetrik (kovariatsiya, korrelyatsiya) matritsalar uchun: haqiqiy qiymatlar, o'sish tartibida (PCA uchun teskari tartiblash kerak — eng kattasi oxirida!), ortogonal vektorlar. Eng keng tarqalgan xato: xos vektorni qator deb olish — vecs[i] emas, vecs[:, i].
2.4. Simmetrik matritsalar
Spektral teorema: simmetrik matritsa (A = A.T) uchun: (1) barcha xos qiymatlar haqiqiy; (2) xos vektorlar o'zaro ortogonal 10.2-bob — ular yangi, burilgan koordinatalar tizimini hosil qiladi; (3) A = Q @ diag(lambda) @ Q.T (Q — ortogonal, Q^(-1) = Q.T). Data Science'dagi deyarli barcha "xos" masalalar simmetrik: kovariatsiya, korrelyatsiya, X.T X, masofa/o'xshashlik (kernel) matritsalari. Musbat yarim aniqlangan (PSD): barcha xos qiymatlar ≥ 0 — kovariatsiya matritsasi doim shunday (dispersiya manfiy bo'lmaydi).
2.5. Kovariatsiya matritsasining xos vektorlari
C = kovariatsiya matritsasi (p × p, simmetrik, PSD)
Eng katta xos qiymatga mos xos vektor v1 — ma'lumot ENG KO'P tarqalgan yo'nalish
lambda1 = shu yo'nalishdagi DISPERSIYA
Keyingi v2 — v1 ga ortogonal, qolgan dispersiyaning eng ko'p yo'nalishi
...
sum(lambda) = sum(dispersiyalar) = iz(C) — umumiy dispersiya saqlanadi
lambda_i / sum(lambda) — i-yo'nalish "tushuntirgan" dispersiya ulushi → PCA (10.9)Bu — PCA ning yuragi: kovariatsiya matritsasining xos vektorlari — ma'lumot bulutining asosiy o'qlari (ellipsning o'qlari), xos qiymatlar — shu o'qlar bo'ylab dispersiya. Katta xos qiymatlar — asosiy tuzilma; kichiklari — shovqin yoki ortiqchalik. Juda kichik (≈ 0) xos qiymat — deyarli bog'liq belgilar (multikollinearlik, 10.5): shu yo'nalishda ma'lumot deyarli tarqalmagan.
2.6. Xos qiymatlar va matritsa xossalari
det(A) = lambda1 × lambda2 × ... × lambdan (biri 0 → singulyar)
iz(A) = A[0,0] + ... + A[n-1,n-1] = lambda1 + ... + lambdan
cond(S) = |lambda_max| / |lambda_min| (simmetrik matritsa uchun)
A^k = V @ diag(lambda^k) @ V^(-1) (daraja — xos qiymatlar darajasi)
A^(-1) xos qiymatlari = 1 / lambdaXos qiymatlar matritsaning ko'p xossasini "tushuntiradi": determinant — ko'paytma (hajm o'zgarishi, 10.5; bitta nol → singulyar); iz — yig'indi (kovariatsiyada — umumiy dispersiya); shart soni — eng katta / eng kichik (kichik xos qiymat — beqarorlik, 10.5; Ridge har bir xos qiymatga alpha qo'shadi: lambda + alpha — shuning uchun barqarorlashtiradi!); daraja — A^k da xos qiymatlar k-darajaga ko'tariladi: |lambda| < 1 lar so'nadi, eng katta hukmron bo'lib qoladi.
2.7. Daraja usuli va PageRank
Daraja usuli (power iteration): tasodifiy v dan boshlab, qayta-qayta v = A @ v / ||A @ v|| — v eng katta xos qiymatga mos xos vektorga yaqinlashadi (2.6: A^k da eng katta lambda hukmron). Sodda, katta siyrak matritsalarga ham qo'llanadi. PageRank: havolalar ehtimol matritsasi M (har sahifadan chiquvchi havolalar ehtimolga bo'lingan) + "tasodifiy sakrash" (damping 0.85) → r = M @ r; xos qiymat 1 ga mos xos vektor = barqaror "tasodifiy sayyoh" taqsimoti = reyting. Markov barqaror holati 10.4-bob — xuddi shu: pi @ P = pi (qator vektor, P.T ning xos vektori).
2.8. Xos qiymatlar — matritsaning DNK si
Xos vektor — A faqat cho'zadigan yo'nalish (A v = lambda v); xos qiymat — cho'zish koeffitsiyenti; diagonallashtirish — xos vektorlar bazasida o'zgartirish oddiy cho'zish; eig (umumiy) va eigh (simmetrik — haqiqiy, o'sish tartibi, ortogonal; xos vektorlar — ustunlar); simmetrik — spektral teorema, PSD; kovariatsiya — xos vektorlar asosiy o'qlar, xos qiymatlar dispersiyalar (PCA); det = ko'paytma, iz = yig'indi, cond = max/min, Ridge — lambda + alpha; daraja usuli, PageRank, Markov barqaror holati. Keyingi dars — SVD: har qanday (to'rtburchak) matritsa uchun "xos" yoyilma.
3. Tez ma'lumotnoma
import numpy as np
vals, vecs = np.linalg.eig(A) # umumiy; tartibsiz, kompleks bo'lishi mumkin
vals, vecs = np.linalg.eigh(S) # simmetrik; o'sish tartibida, ortogonal
v1 = vecs[:, -1] # eng katta (eigh) — USTUN!
np.allclose(A @ vecs[:, 0], vals[0] * vecs[:, 0]) # tekshiruv
# tartiblash (kamayish)
idx = np.argsort(vals)[::-1]; vals, vecs = vals[idx], vecs[:, idx]
# xossalar
np.prod(vals) ≈ np.linalg.det(A); vals.sum() ≈ np.trace(A)
# daraja usuli
v = np.ones(n) / np.sqrt(n)
for _ in range(100):
v = A @ v; v /= np.linalg.norm(v)
QOIDA: simmetrik — eigh · vektor — ustun · eigh o'sish tartibida · ishora ixtiyoriyXos qiymatlar xulosasi
A v = lambda v — v yo'nalishi saqlanadi, lambda marta cho'ziladi
eig — umumiy; eigh — simmetrik (haqiqiy, ortogonal, o'sish tartibi)
Kovariatsiya: xos vektorlar — asosiy o'qlar, xos qiymatlar — dispersiyalar
det = ko'paytma, iz = yig'indi, cond = max/min
Daraja usuli — eng katta xos vektor (PageRank, Markov)4. Batafsil misollar
Misollar real numpy bilan (Python 3.14).
Misol 1 — Xos vektorlarni topish va tekshirish
"""A v = lambda v: eig, tekshiruv, xos va oddiy vektor farqi (real numpy)."""
import numpy as np
def main() -> None:
A = np.array([[3.0, 1.0], [0.0, 2.0]])
print("=== 1. np.linalg.eig ===")
vals, vecs = np.linalg.eig(A)
print(f" xos qiymatlar: {vals}")
for i in range(2):
v = vecs[:, i]
print(f" v{i + 1} = {np.round(v, 4)}, A @ v = {np.round(A @ v, 4)}, "
f"lambda × v = {np.round(vals[i] * v, 4)}")
print("\n=== 2. Oddiy vektor burildi ===")
u = np.array([1.0, 1.0])
Au = A @ u
cos = u @ Au / (np.linalg.norm(u) * np.linalg.norm(Au))
print(f" A @ [1, 1] = {Au}, burchak {np.degrees(np.arccos(cos)):.1f}°")
print("\n=== 3. Xossalar ===")
print(f" det = {np.linalg.det(A):.1f}, ko'paytma = {np.prod(vals):.1f}")
print(f" iz = {np.trace(A):.1f}, yig'indi = {vals.sum():.1f}")
print("\n=== 4. Diagonallashtirish A = V diag V^-1 ===")
V = vecs
print(f" tiklandi: {np.allclose(V @ np.diag(vals) @ np.linalg.inv(V), A)}")
print(" ⭐ Xos vektor — burilmaydigan yo'nalish")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. np.linalg.eig ===
xos qiymatlar: [3.+0.j 2.+0.j]
v1 = [1.+0.j 0.+0.j], A @ v = [3.+0.j 0.+0.j], lambda × v = [3.+0.j 0.+0.j]
v2 = [-0.7071+0.j 0.7071+0.j], A @ v = [-1.4142+0.j 1.4142+0.j], lambda × v = [-1.4142+0.j 1.4142+0.j]
=== 2. Oddiy vektor burildi ===
A @ [1, 1] = [4. 2.], burchak 18.4°
=== 3. Xossalar ===
det = 6.0, ko'paytma = 6.0+0.0j
iz = 5.0, yig'indi = 5.0+0.0j
=== 4. Diagonallashtirish A = V diag V^-1 ===
tiklandi: True
⭐ Xos vektor — burilmaydigan yo'nalishNima ko'rsatdi: 2.1, 2.2, 2.6-bo'limlar.
Misol 2 — Simmetrik matritsa: eigh va ortogonallik
"""eigh: simmetrik matritsa, haqiqiy qiymatlar, ortogonal vektorlar (real numpy)."""
import numpy as np
def main() -> None:
S = np.array([[4.0, 2.0, 0.5],
[2.0, 3.0, 0.2],
[0.5, 0.2, 1.0]])
print("=== 1. eigh natijasi (o'sish tartibi) ===")
vals, Q = np.linalg.eigh(S)
print(f" xos qiymatlar: {np.round(vals, 4)}")
print("\n=== 2. Xos vektorlar ortogonal: Q.T @ Q = I ===")
print(np.round(Q.T @ Q, 10))
print("\n=== 3. Spektral yoyilma: S = Q diag Q.T ===")
print(f" tiklandi: {np.allclose(Q @ np.diag(vals) @ Q.T, S)}")
print("\n=== 4. Kamayish tartibiga o'tkazish ===")
idx = np.argsort(vals)[::-1]
print(f" tartiblangan: {np.round(vals[idx], 4)}")
print(f" eng katta xos vektor (ustun): {np.round(Q[:, idx[0]], 4)}")
print("\n=== 5. Ishora ixtiyoriy ===")
v = Q[:, idx[0]]
print(f" S @ (-v) = lambda × (-v): {np.allclose(S @ -v, vals[idx[0]] * -v)}")
print(" ⭐ Simmetrik — eigh: haqiqiy, ortogonal, o'sish tartibida")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. eigh natijasi (o'sish tartibi) ===
xos qiymatlar: [0.9007 1.4797 5.6195]
=== 2. Xos vektorlar ortogonal: Q.T @ Q = I ===
[[ 1. 0. 0.]
[ 0. 1. -0.]
[ 0. -0. 1.]]
=== 3. Spektral yoyilma: S = Q diag Q.T ===
tiklandi: True
=== 4. Kamayish tartibiga o'tkazish ===
tartiblangan: [5.6195 1.4797 0.9007]
eng katta xos vektor (ustun): [-0.7858 -0.6084 -0.1114]
=== 5. Ishora ixtiyoriy ===
S @ (-v) = lambda × (-v): True
⭐ Simmetrik — eigh: haqiqiy, ortogonal, o'sish tartibidaNima ko'rsatdi: 2.3, 2.4-bo'limlar.
Misol 3 — Kovariatsiya: asosiy o'qlar
"""Kovariatsiya matritsasi xos vektorlari — ma'lumot bulutining o'qlari (real numpy)."""
import numpy as np
def main() -> None:
rng = np.random.default_rng(0)
n = 2000
# 30° burilgan ellips: bir yo'nalishda keng (SD 3), boshqasida tor (SD 0.5)
t = np.radians(30)
R = np.array([[np.cos(t), -np.sin(t)], [np.sin(t), np.cos(t)]])
X = rng.normal(size=(n, 2)) * [3.0, 0.5] @ R.T
C = np.cov(X, rowvar=False)
vals, vecs = np.linalg.eigh(C)
idx = np.argsort(vals)[::-1]
vals, vecs = vals[idx], vecs[:, idx]
print("=== 1. Xos qiymatlar — o'qlar bo'ylab dispersiya ===")
print(f" {np.round(vals, 3)} (kutilgan: 9 va 0.25)")
print("\n=== 2. Birinchi xos vektor yo'nalishi ===")
v1 = vecs[:, 0] * np.sign(vecs[0, 0])
print(f" v1 = {np.round(v1, 3)}, burchak {np.degrees(np.arctan2(v1[1], v1[0])):.1f}° (kutilgan 30°)")
print("\n=== 3. Umumiy dispersiya saqlanadi ===")
print(f" iz(C) = {np.trace(C):.3f}, sum(lambda) = {vals.sum():.3f}")
print(f" 1-o'q ulushi: {vals[0] / vals.sum():.1%}")
print("\n=== 4. Bog'liq belgi — kichik xos qiymat ===")
x = rng.normal(size=n)
B = np.column_stack([x, 2 * x + rng.normal(0, 0.01, n), rng.normal(size=n)])
print(f" xos qiymatlar: {np.round(np.sort(np.linalg.eigvalsh(np.cov(B, rowvar=False)))[::-1], 5)}")
print(" ⭐ Katta lambda — tuzilma; ≈0 — ortiqcha yo'nalish")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Xos qiymatlar — o'qlar bo'ylab dispersiya ===
[9.043 0.247] (kutilgan: 9 va 0.25)
=== 2. Birinchi xos vektor yo'nalishi ===
v1 = [0.869 0.495], burchak 29.7° (kutilgan 30°)
=== 3. Umumiy dispersiya saqlanadi ===
iz(C) = 9.290, sum(lambda) = 9.290
1-o'q ulushi: 97.3%
=== 4. Bog'liq belgi — kichik xos qiymat ===
xos qiymatlar: [4.90044e+00 9.58270e-01 2.00000e-05]
⭐ Katta lambda — tuzilma; ≈0 — ortiqcha yo'nalishNima ko'rsatdi: 2.5, 2.6-bo'limlar.
Misol 4 — Daraja usuli: PageRank va Markov barqaror holati
"""Daraja usuli: PageRank va Markov barqaror holati (real numpy)."""
import numpy as np
def main() -> None:
print("=== 1. PageRank: 5 sayt ===")
# havolalar[i, j] = 1 — i sayt j saytga havola beradi
havolalar = np.array([
[0, 1, 1, 0, 0], # A → B, C
[0, 0, 1, 0, 0], # B → C
[1, 0, 0, 0, 0], # C → A
[0, 0, 0, 0, 1], # D → E (spam juftlik)
[0, 0, 0, 1, 0], # E → D
], dtype=float)
n = len(havolalar)
M = (havolalar / havolalar.sum(axis=1, keepdims=True)).T # ustun — chiquvchi ehtimol
d = 0.85
G = d * M + (1 - d) / n
r = np.ones(n) / n
for _ in range(100):
r = G @ r
r /= r.sum()
kiruvchi = havolalar.sum(axis=0)
for nom, k, s in zip("ABCDE", kiruvchi, r):
print(f" {nom}: kiruvchi {int(k)}, PageRank {s:.3f}")
print("\n=== 2. eig bilan tekshiruv (lambda = 1) ===")
vals, vecs = np.linalg.eig(G)
i = np.argmin(np.abs(vals - 1))
v = np.real(vecs[:, i]); v /= v.sum()
print(f" lambda = {np.real(vals[i]):.4f}, bir xil: {np.allclose(v, r, atol=1e-6)}")
print("\n=== 3. Markov barqaror holati 10.4-bob ===")
P = np.array([[0.80, 0.15, 0.05], [0.30, 0.60, 0.10], [0.10, 0.10, 0.80]])
vals, vecs = np.linalg.eig(P.T)
pi = np.real(vecs[:, np.argmin(np.abs(vals - 1))]); pi /= pi.sum()
print(f" pi = {np.round(pi, 4)}, pi @ P = {np.round(pi @ P, 4)}")
print(" ⭐ Xos qiymati 1 — barqaror holat")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. PageRank: 5 sayt ===
A: kiruvchi 1, PageRank 0.233
B: kiruvchi 1, PageRank 0.129
C: kiruvchi 2, PageRank 0.238
D: kiruvchi 1, PageRank 0.200
E: kiruvchi 1, PageRank 0.200
=== 2. eig bilan tekshiruv (lambda = 1) ===
lambda = 1.0000, bir xil: True
=== 3. Markov barqaror holati 10.4-bob ===
pi = [0.5 0.25 0.25], pi @ P = [0.5 0.25 0.25]
⭐ Xos qiymati 1 — barqaror holatNima ko'rsatdi: 2.7-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "vecs[i] — i-xos vektor" | vecs[:, i] (ustun) |
| "eigh kamayish tartibida" | O'sish tartibida |
| "Xos vektor ishorasi muhim" | Ixtiyoriy (-v ham) |
| "Har matritsaning haqiqiy xos vektori bor" | Burishda yo'q (kompleks) |
| "Kovariatsiya uchun eig" | eigh (simmetrik) |
| "Xos qiymat — abstrakt tushuncha" | Dispersiya, reyting, barqarorlik |
| "Kichik xos qiymat — muhim emas" | Multikollinearlik belgisi |
| "PageRank — havolalar soni" | Muhim saytlardan havola |
6. Keng tarqalgan xatolar va yechimlari
1. Qator deb olish
v1 = vecs[0] # ⚠️
v1 = vecs[:, 0] # ✅2. eigh tartibi
eng_katta = vecs[:, 0] # eigh — eng KICHIK # ⚠️
eng_katta = vecs[:, -1] # yoki argsort[::-1] # ✅3. Simmetrikka eig
vals, vecs = np.linalg.eig(C) # kompleks shovqin, tartibsiz # ⚠️
vals, vecs = np.linalg.eigh(C) # ✅4. Kompleks qismini e'tiborsiz
v = vecs[:, i] # complex128 # ⚠️
v = np.real(vecs[:, i]) # agar imag ≈ 0 ekanini tekshirgan bo'lsangiz # ✅5. Ishora bo'yicha talqin
if v1[0] < 0: print("teskari bog'liqlik") # ishora ixtiyoriy # ⚠️
v1 = v1 * np.sign(v1[np.argmax(np.abs(v1))]) # ishorani qotiring # ✅6. Kovariatsiya yo'nalishi
np.linalg.eigh(np.cov(X)) # n × n # ⚠️
np.linalg.eigh(np.cov(X, rowvar=False)) # ✅7. Normallashtirilmagan xos vektor
pi = np.real(vecs[:, i]) # ehtimol emas (yig'indi ≠ 1) # ⚠️
pi = pi / pi.sum() # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 10.3-dars (o'tilgan): Kovariatsiya matritsasi, simmetrik matritsa
- 10.4-dars (o'tilgan): O'zgartirish, Markov zanjiri
- 10.5-dars (o'tilgan): Determinant, shart soni
- 10.8-10.9-darslar: SVD, PCA
- ML qismlari: Spektral klasterlash, grafik tahlili
8. Eng yaxshi amaliyotlar
Simmetrik matritsa — eigh.
Xos vektor — ustun (vecs[:, i]).
Tartibni aniq belgilang (argsort).
A v = lambda v bilan tekshiring.
Ishorani talqindan oldin qotiring.
Kichik xos qiymatlarga e'tibor bering (bog'liqlik).
Katta siyrak matritsa — daraja usuli.
Ehtimol vektorini normallashtiring.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # diag([5, 2]) xos qiymatlari?
2. # diag([5, 2]) xos vektorlari?
3. # 2 × v xos vektormi?
4. # lambda = 0 nimani bildiradi?
5. # simmetrik matritsa xos qiymatlari?
6. # simmetrik xos vektorlari?
7. # eigh qaytarish tartibi?
8. # det = ?
9. # iz = ?
10. # kovariatsiya xos qiymati nima?
11. # 90° burish haqiqiy xos vektori?
12. # PageRank qaysi xos qiymatga mos?Javoblar
- 5 va 2
- [1, 0] va [0, 1]
- Ha
- Singulyar (yo'nalish yo'qoladi)
- Haqiqiy
- Ortogonal
- O'sish
- Xos qiymatlar ko'paytmasi
- Xos qiymatlar yig'indisi
- Shu o'q bo'ylab dispersiya
- Yo'q
- 1
Vazifa 2: Xatolarni tuzating
1. v1 = np.linalg.eigh(C)[1][0] # eng katta xos vektor
2. vals, vecs = np.linalg.eig(np.cov(X))
3. pi = np.linalg.eig(P.T)[1][:, 0] # barqaror taqsimot
4. if pca_v1[2] < 0: print("3-belgi manfiy ta'sir")
5. vals = np.linalg.eigh(C)[0]; print("eng katta:", vals[0])Javoblar
1. v1 = np.linalg.eigh(C)[1][:, -1]
2. vals, vecs = np.linalg.eigh(np.cov(X, rowvar=False))
3. vals, vecs = np.linalg.eig(P.T); pi = np.real(vecs[:, np.argmin(np.abs(vals - 1))]); pi /= pi.sum()
4. # avval ishorani qotiring; komponenta ishorasi ixtiyoriy
5. vals = np.linalg.eigh(C)[0]; print("eng katta:", vals[-1])Vazifa 3: 2D o'zgartirishlar
Modellang:
- Cho'zish, qiyshaytirish, aks, burish
- Har birining xos qiymat/vektorlari
- Qaysi birida haqiqiy xos vektor yo'q
- Grafikda xos yo'nalishlar
Vazifa 4: Kovariatsiya
Modellang:
- 3 belgili korrelyatsiyali ma'lumot
- Kovariatsiya xos qiymatlari
- Dispersiya ulushlari
- Bitta belgini boshqasining nusxasiga almashtirish
Vazifa 5: PageRank
Modellang:
- 8 sayt havolalar grafi
- Daraja usuli
- Damping 0.5, 0.85, 0.99
- Spam klaster ta'siri
Vazifa 6: Integratsiya
Modellang:
- Markov (10.4)
- Kovariatsiya (10.3)
- Shart soni (10.5)
- Ridge 10.6-bob — lambda + alpha
Vazifa 7: O'ylash
Google'ning dastlabki muvaffaqiyati PageRank algoritmiga bog'liq — u aslida ulkan matritsaning xos vektori. Nima uchun "havolalar soni" o'rniga "muhim saytlardan kelgan havolalar" (rekursiv ta'rif) yaxshiroq ishlaydi? Bu g'oya (tarmoqdagi markaziylik) boshqa sohalarda — ijtimoiy tarmoqlar, moliya, ilmiy maqolalar — qanday qo'llanishi mumkin, va uning zaif tomonlari nimada?
Javob
Qisqa javob: havolalar sonini soxtalashtirish oson (ko'p sayt yaratib, bir-biriga havola berish). Rekursiv ta'rif esa havola beruvchining o'z obro'sini hisobga oladi: obro'siz saytlar bir-biriga qancha havola bermasin, tashqi muhim saytlardan havola bo'lmasa, o'z ulushidan yuqoriga ko'tarila olmaydi. Matematik jihatdan bu — o'zaro tayanuvchi tenglamalar sistemasi, yechimi — xos qiymati 1 ga mos xos vektor.
1. Nega rekursiv ta'rif yaxshi
| Havolalar soni | PageRank |
|---|---|
| Har havola bir xil vazn | Havola beruvchining obro'si hisobga olinadi |
| Spam tarmoq oson ko'tariladi | Spam tarmoq o'z ulushidan oshmaydi |
| Mahalliy ko'rsatkich | Global tuzilma (butun tarmoq) |
2. Boshqa sohalarda
- Ijtimoiy tarmoq: ta'sirli foydalanuvchilar (ta'sirlilar kuzatadigan odam)
- Ilmiy maqolalar: muhim maqolalar iqtibos keltirgan maqola
- Moliya: tizimli xavf — ko'p muhim bank bog'liq bo'lgan bank
- Biologiya: oqsillar tarmog'idagi markaziy genlar
- Tavsiya: foydalanuvchi-mahsulot grafida mashhurlik
3. Zaif tomonlar
- Havola ≠ sifat (tanqidiy havola ham "ovoz")
- Boy yanada boyiydi (mashhurlik o'z-o'zini kuchaytiradi)
- Manipulyatsiya baribir mumkin (havola sotib olish, link farm'lar)
- Faqat tuzilma — mazmunni ko'rmaydi (zamonaviy qidiruv yuzlab belgidan foydalanadi)
4. Data Scientist qanday
- Grafni to'g'ri qurish (yo'nalish, vazn)
- Damping va osilib qolgan tugunlarni (chiquvchi havolasiz) hisobga olish
- Natijani boshqa ko'rsatkichlar bilan solishtirish
- Manipulyatsiya va tarafkashlikni monitoring qilish
5. Xulosa
- Rekursiv markaziylik — xos vektor masalasi
- Obro' tarmoq bo'ylab tarqaladi — spamga chidamliroq
- Ijtimoiy, ilmiy, moliyaviy tarmoqlarda keng qo'llanadi
- Zaif tomon: tuzilma ≠ sifat, mashhurlik effekti
Nimani mustahkamlaydi: 2.7-bo'lim.
Xulosa
Bu darsda xos qiymatlar va xos vektorlarni o'rgandik.
Eng muhim uch fikr:
A v = lambda v. Xos vektor — matritsa faqat cho'zadigan (burmaydigan) yo'nalish; xos qiymat — cho'zish koeffitsiyenti (0 — yo'nalish yo'qoladi, singulyar). Xos vektorlar bazasida o'zgartirish — oddiy diagonal cho'zish (diagonallashtirish). NumPy:
eig(umumiy),eigh(simmetrik); xos vektor — ustun, ishorasi ixtiyoriy; eigh — o'sish tartibi.Simmetrik va kovariatsiya. Simmetrik matritsa — haqiqiy xos qiymatlar, ortogonal xos vektorlar (S = Q diag Q.T). Kovariatsiya xos vektorlari — ma'lumot bulutining asosiy o'qlari, xos qiymatlar — shu o'qlardagi dispersiya (yig'indisi = umumiy dispersiya) → PCA; ≈ 0 xos qiymat — multikollinearlik.
Xossalar va daraja usuli. det = ko'paytma, iz = yig'indi, cond = max/min, Ridge — lambda + alpha. Daraja usuli (A^k da eng katta lambda hukmron) — PageRank (xos qiymat 1, "muhim saytlardan havola") va Markov barqaror holati.
Keyingi darsda SVD (singulyar yoyilma)ni o'rganamiz: har qanday to'rtburchak matritsani burish × cho'zish × burish ga ajratish, past rankli yaqinlashtirish, rasm siqish va lstsq ning ichki mexanizmi.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!