Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. A @ x = b — sistema matritsa ko'rinishida
- 2.2. np.linalg.solve
- 2.3. Teskari matritsa
- 2.4. Determinant
- 2.5. Rank va chiziqli bog'liqlik
- 2.6. Yechimlar soni
- 2.7. Sonli barqarorlik (shart soni)
- 2.8. Tenglamalar sistemasi — o'zgartirishni qaytarish
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Sistemani yechish: solve va inv
- Misol 2 — Determinant va singulyarlik
- Misol 3 — Rank: ortiqcha ustunlar va dummy tuzog'i
- Misol 4 — Shart soni va beqaror koeffitsiyentlar
- 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.5-dars: Chiziqli tenglamalar sistemasi
10-QISM — CHIZIQLI ALGEBRA · 5-dars
1. Kirish va motivatsiya
10.4-darsda matritsa vektorni o'zgartirishini ko'rdik: A @ x = b. Endi teskari savol: b ma'lum, x ni toping. Bu — chiziqli tenglamalar sistemasi. Maktabdagi "2x + y = 5, x - y = 1" — aynan shu, faqat 2 o'lchamda. Data Science'da bu sistemalar yuzlab-minglab noma'lumli bo'ladi: regressiya koeffitsiyentlari, resurs taqsimoti, narxlash modellari, muvozanat holatlari.
Asosiy savollar: yechim bormi? yagonami? qanday topiladi? Javoblar uchta tushunchada: teskari matritsa (o'zgartirishni orqaga qaytarish), determinant (o'zgartirish hajmni qanchalik o'zgartiradi — 0 bo'lsa, ma'lumot yo'qoladi), rank (matritsa haqiqatda nechta mustaqil yo'nalishga ega). Bular regressiyada multikollinearlik (bog'liq belgilar — 8.5), "dummy tuzog'i" 6.9-bob va sonli beqarorlik muammolarini tushuntiradi.
Real vaziyat. Tahlilchi narx modeliga uchta belgi qo'shadi: "maydon (m2)", "maydon (kv. fut)" va "xonalar soni". Model koeffitsiyentlari g'alati chiqadi: maydon (m2) uchun +15 000, maydon (fut) uchun -1 380 — ma'nosiz. Sabab: ikki ustun aynan bir xil ma'lumot (biri ikkinchisining 10.76 marta kattasi) — matritsa ranki ustunlar sonidan kichik, sistema yagona yechimga ega emas. Rank tekshiruvi muammoni bir qatorda ko'rsatdi: matrix_rank(X) = 2, ustunlar 3 ta. Ortiqcha ustun olib tashlandi — koeffitsiyentlar ma'noli bo'ldi.
Bu darsda chiziqli tenglamalar sistemasini o'rganamiz.
Bu darsda:
- A @ x = b — sistema matritsa ko'rinishida
- np.linalg.solve
- Teskari matritsa (o'zgartirishni qaytarish)
- Determinant (hajm o'zgarishi)
- Rank va chiziqli bog'liqlik
- Yechimlar soni: bitta, cheksiz, yo'q
- Sonli barqarorlik (shart soni)
- Amaliy: multikollinearlik va dummy tuzog'i
ℹ Misollar real numpy/pandas bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. A @ x = b — sistema matritsa ko'rinishida
2x + 1y = 5 [[2, 1], [x, [5,
1x - 1y = 1 → [1, -1]] @ y] = 1]
A @ x = b
Geometrik ma'no (2D): har tenglama — to'g'ri chiziq; yechim — kesishish nuqtasi
(2, 1) ← ikkala chiziq shu nuqtada kesishadi
Ustunlar ma'nosi: b ni A ustunlarining chiziqli kombinatsiyasi sifatida yozish:
x × [2, 1] + y × [1, -1] = [5, 1]Har qanday chiziqli sistema — A @ x = b: A — koeffitsiyentlar matritsasi, x — noma'lumlar, b — o'ng tomon. Ikki talqin: qator — har tenglama chiziq/tekislik, yechim — kesishish; ustun — "b ni A ustunlarining qanday kombinatsiyasi hosil qiladi?" (10.1 — chiziqli kombinatsiya). Ikkinchi talqin regressiyani tushunish kaliti: y ni belgilar (ustunlar) kombinatsiyasi bilan ifodalash.
2.2. np.linalg.solve
Kvadrat, "yaxshi" A uchun: x = np.linalg.solve(A, b) — Gauss eliminatsiyasi (LU yoyilma) bilan tez va aniq yechadi. Tekshiruv: np.allclose(A @ x, b). Qoida: sistemani yechish uchun inv(A) @ b emas, solve(A, b) ishlating — tezroq (teskari matritsani to'liq hisoblash shart emas) va sonli jihatdan aniqroq. Bir nechta o'ng tomon (b — matritsa) ham bitta chaqiruvda yechiladi. A singulyar bo'lsa — LinAlgError.
2.3. Teskari matritsa
A^(-1) — A ning "teskarisi": A^(-1) @ A = A @ A^(-1) = I
A @ x = b → x = A^(-1) @ b
Faqat KVADRAT va determinanti ≠ 0 bo'lgan matritsada mavjud
(A @ B)^(-1) = B^(-1) @ A^(-1) (tartib almashadi)
Burish matritsasi uchun: R^(-1) = R.T (ortogonal — teskarisi arzon) Teskari matritsa — o'zgartirishni orqaga qaytaradi: A cho'zsa, A^(-1) qisqartiradi; A bursa, A^(-1) teskari buradi. Proyeksiya 10.4-bob — teskarisi yo'q: yo'qolgan o'lchamni qaytarib bo'lmaydi. Amalda teskari matritsa kamdan-kam aniq hisoblanadi (solve yaxshiroq), lekin formulalarda (regressiya: w = (X.T X)^(-1) X.T y, 10.6) nazariy tushuncha sifatida muhim. np.linalg.inv(A).
2.4. Determinant
det(A) — A o'zgartirishi YUZA/HAJMNI necha marta o'zgartiradi (ishora — oriyentatsiya)
det([[2, 0], [0, 3]]) = 6 — birlik kvadrat → yuzasi 6
det(burish) = 1 — yuza saqlanadi
det([[1, 2], [2, 4]]) = 0 — tekislik chiziqqa "yassilanadi" → teskari YO'Q
det(A @ B) = det(A) × det(B)Determinant — o'zgartirish yuzani (hajmni) qanchalik cho'zishini o'lchaydi. det = 0 — fazo pastroq o'lchamga "yassilanadi" (ma'lumot yo'qoladi) → matritsa singulyar, teskarisi yo'q, sistema yagona yechimga ega emas. Amaliy ogohlantirish: katta matritsalarda determinant qiymati ishonchsiz ko'rsatkich — juda kichik yoki juda katta sonlar (masshtabga bog'liq); "deyarli singulyar"likni o'lchash uchun shart soni 2.7-bob va rank yaxshiroq.
2.5. Rank va chiziqli bog'liqlik
Chiziqli bog'liqlik — bir ustun boshqalarining chiziqli kombinatsiyasi (masalan, maydon_fut = 10.76 × maydon_m2; yoki jami = a + b + c). Rank — mustaqil ustunlar (yoki qatorlar) soni; np.linalg.matrix_rank(A). To'liq rank — rank = ustunlar soni: hamma ustun yangi ma'lumot beradi. Rank kichik bo'lsa — ortiqcha ustunlar bor, X.T @ X singulyar, regressiya koeffitsiyentlari yagona emas. Data Science'dagi manbalar: bir o'lchovning ikki birligi, yig'indi ustun va uning qismlari, dummy tuzog'i (one-hot'ning barcha ustunlari + kesishish: ular yig'indisi har doim 1 — drop_first=True, 6.9).
2.6. Yechimlar soni
BITTA YECHIM: A kvadrat, to'liq rank (det ≠ 0) — chiziqlar bir nuqtada kesishadi
CHEKSIZ: rank < noma'lumlar soni, sistema mos — chiziqlar ustma-ust
YO'Q: tenglamalar zid — parallel chiziqlar
Data Science'dagi odatiy holat: tenglamalar KO'P (n kuzatuv), noma'lumlar KAM (p)
→ aniq yechim deyarli hech qachon yo'q (shovqin)
→ "eng yaxshi taxminiy" yechim — ENG KICHIK KVADRATLAR (10.6)Uch holat: yagona (kvadrat, to'liq rank), cheksiz (bog'liq tenglamalar — yetarli ma'lumot yo'q), yo'q (zid tenglamalar). Data Science'da odatda n > p (1000 ta uy, 5 ta belgi): 1000 ta tenglama, 5 ta noma'lum — shovqin tufayli barcha tenglamalarni bir vaqtda qanoatlantiruvchi x yo'q. Shuning uchun "eng yaxshi mos" yechim izlanadi — eng kichik kvadratlar 10.6-bob, chiziqli regressiyaning o'zi. p > n (belgilar ko'p) — cheksiz yechim → regularizatsiya (Ridge) bilan bittasi tanlanadi.
2.7. Sonli barqarorlik (shart soni)
Shart soni (condition number, np.linalg.cond(A)) — kirishdagi kichik o'zgarish chiqishni necha marta kuchaytirishi: 1 — ideal (ortogonal matritsa); 10^3 — qoniqarli; 10^10 va undan katta — deyarli singulyar: b dagi kichik shovqin x ni butunlay o'zgartiradi. Regressiyada: kuchli korrelyatsiyali belgilar (r = 0.999) — shart soni katta, koeffitsiyentlar beqaror (ma'lumot biroz o'zgarsa, belgi va ishorasi o'zgaradi), lekin bashorat yaxshi bo'lishi mumkin. Yechimlar: ortiqcha belgini olib tashlash, standartlashtirish (masshtab farqi ham shart sonini oshiradi), Ridge regularizatsiya, PCA.
2.8. Tenglamalar sistemasi — o'zgartirishni qaytarish
Chiziqli sistema — A @ x = b (qatorlar — kesishish, ustunlar — kombinatsiya); solve (inv emas) bilan yechish; teskari matritsa — o'zgartirishni qaytarish (faqat kvadrat, det ≠ 0; ortogonalda R.T); determinant — hajm o'zgarishi, 0 — singulyar (ma'lumot yo'qoladi); rank — mustaqil ustunlar soni (ortiqcha ustun, dummy tuzog'i); yechimlar — bitta/cheksiz/yo'q; n > p da aniq yechim yo'q → eng kichik kvadratlar; shart soni — barqarorlik (multikollinearlik; standartlashtirish, Ridge). Keyingi dars — eng kichik kvadratlar: chiziqli regressiya chiziqli algebra tilida.
3. Tez ma'lumotnoma
import numpy as np
A = np.array([[2, 1], [1, -1]], dtype=float); b = np.array([5, 1], dtype=float)
x = np.linalg.solve(A, b) # yechim (inv emas!)
np.allclose(A @ x, b) # tekshiruv
np.linalg.inv(A) # teskari (kamdan-kam kerak)
np.linalg.det(A) # determinant
np.linalg.matrix_rank(X) # rank — mustaqil ustunlar
np.linalg.cond(X) # shart soni (barqarorlik)
# dummy tuzog'i
pd.get_dummies(df["shahar"], drop_first=True)
try:
np.linalg.solve(S, b)
except np.linalg.LinAlgError:
print("singulyar")
QOIDA: solve > inv · rank < ustunlar → ortiqcha belgi · cond katta → beqarorTenglamalar sistemasi xulosasi
A @ x = b; x = solve(A, b)
Teskari — o'zgartirishni qaytarish; kvadrat va det ≠ 0
det = 0 — singulyar, ma'lumot yo'qoladi
Rank — mustaqil ustunlar; kichik — ortiqcha belgi
n > p — aniq yechim yo'q → eng kichik kvadratlar (10.6)
Shart soni katta — beqaror koeffitsiyentlar (multikollinearlik)4. Batafsil misollar
Misollar real numpy/pandas bilan (Python 3.14).
Misol 1 — Sistemani yechish: solve va inv
"""A @ x = b: solve, inv, tekshiruv va narxlar misoli (real numpy)."""
import numpy as np
def main() -> None:
print("=== 1. Oddiy sistema ===")
A = np.array([[2.0, 1.0], [1.0, -1.0]])
b = np.array([5.0, 1.0])
x = np.linalg.solve(A, b)
print(f" x = {x}, tekshiruv A @ x = {A @ x}")
print("\n=== 2. Narxlarni topish (3 savat, 3 mahsulot) ===")
# savatlar: [non, sut, tuxum] miqdori va jami summa (ming so'm)
savat = np.array([[2, 1, 10], [1, 2, 0], [3, 0, 15]], dtype=float)
summa = np.array([37.0, 29.0, 37.5])
narx = np.linalg.solve(savat, summa)
print(f" narxlar: non {narx[0]:.1f}, sut {narx[1]:.1f}, tuxum {narx[2]:.2f} ming")
print("\n=== 3. Teskari matritsa ===")
Ainv = np.linalg.inv(A)
print(f" A^-1 = {np.round(Ainv, 4).tolist()}")
print(f" A^-1 @ A = I: {np.allclose(Ainv @ A, np.eye(2))}")
print(f" inv @ b == solve: {np.allclose(Ainv @ b, x)}")
print("\n=== 4. Burish matritsasi: teskari = transpose ===")
t = np.radians(30)
R = np.array([[np.cos(t), -np.sin(t)], [np.sin(t), np.cos(t)]])
print(f" inv(R) == R.T: {np.allclose(np.linalg.inv(R), R.T)}")
print(" ⭐ Yechish — solve; teskari — o'zgartirishni qaytarish")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Oddiy sistema ===
x = [2. 1.], tekshiruv A @ x = [5. 1.]
=== 2. Narxlarni topish (3 savat, 3 mahsulot) ===
narxlar: non 5.0, sut 12.0, tuxum 1.50 ming
=== 3. Teskari matritsa ===
A^-1 = [[0.3333, 0.3333], [0.3333, -0.6667]]
A^-1 @ A = I: True
inv @ b == solve: True
=== 4. Burish matritsasi: teskari = transpose ===
inv(R) == R.T: True
⭐ Yechish — solve; teskari — o'zgartirishni qaytarishNima ko'rsatdi: 2.1, 2.2, 2.3-bo'limlar.
Misol 2 — Determinant va singulyarlik
"""Determinant: yuza o'zgarishi va singulyar matritsa (real numpy)."""
import numpy as np
def main() -> None:
print("=== 1. Determinant — yuza koeffitsiyenti ===")
matritsalar = {
"cho'zish (2, 3)": np.diag([2.0, 3.0]),
"burish 45°": np.array([[0.7071, -0.7071], [0.7071, 0.7071]]),
"aks": np.array([[1.0, 0.0], [0.0, -1.0]]),
"yassilash": np.array([[1.0, 2.0], [2.0, 4.0]]),
}
for nom, M in matritsalar.items():
print(f" {nom:<16}: det = {np.linalg.det(M):6.3f}")
print("\n=== 2. Singulyar matritsa — teskari yo'q ===")
S = np.array([[1.0, 2.0], [2.0, 4.0]])
try:
np.linalg.solve(S, np.array([1.0, 3.0]))
except np.linalg.LinAlgError as e:
print(f" LinAlgError: {e}")
print("\n=== 3. Yassilash: hamma nuqta bitta chiziqqa ===")
nuqtalar = np.array([[1, 0], [0, 1], [1, 1], [-2, 3]], dtype=float).T
natija = S @ nuqtalar
print(f" natijalar: {natija.T.tolist()}")
print(f" y / x nisbati: {np.round(natija[1] / natija[0], 2)} (hammasi 2 — bitta chiziq)")
print(" ⭐ det = 0 — o'lcham yo'qoladi, qaytarib bo'lmaydi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Determinant — yuza koeffitsiyenti ===
cho'zish (2, 3) : det = 6.000
burish 45° : det = 1.000
aks : det = -1.000
yassilash : det = 0.000
=== 2. Singulyar matritsa — teskari yo'q ===
LinAlgError: Singular matrix
=== 3. Yassilash: hamma nuqta bitta chiziqqa ===
natijalar: [[1.0, 2.0], [2.0, 4.0], [3.0, 6.0], [4.0, 8.0]]
y / x nisbati: [2. 2. 2. 2.] (hammasi 2 — bitta chiziq)
⭐ det = 0 — o'lcham yo'qoladi, qaytarib bo'lmaydiNima ko'rsatdi: 2.3, 2.4-bo'limlar.
Misol 3 — Rank: ortiqcha ustunlar va dummy tuzog'i
"""matrix_rank: bir o'lchovning ikki birligi va dummy tuzog'i (real numpy/pandas)."""
import numpy as np
import pandas as pd
def main() -> None:
rng = np.random.default_rng(0)
n = 100
m2 = rng.normal(70, 20, n)
xona = rng.integers(1, 5, n)
print("=== 1. Bir o'lchovning ikki birligi ===")
X = np.column_stack([m2, m2 * 10.764, xona])
print(f" ustunlar: {X.shape[1]}, rank: {np.linalg.matrix_rank(X)}")
print(f" X.T @ X shart soni: {np.linalg.cond(X.T @ X):.1e}")
print("\n=== 2. Yig'indi ustun ===")
a, b = rng.random(n), rng.random(n)
X2 = np.column_stack([a, b, a + b])
print(f" [a, b, a+b]: rank {np.linalg.matrix_rank(X2)} / 3")
print("\n=== 3. Dummy tuzog'i ===")
shahar = pd.Series(rng.choice(["T", "S", "B"], n))
for drop in [False, True]:
D = pd.get_dummies(shahar, drop_first=drop).to_numpy(dtype=float)
Xd = np.column_stack([np.ones(n), D]) # kesishish (intercept) ustuni bilan
print(f" drop_first={drop}: ustunlar {Xd.shape[1]}, rank {np.linalg.matrix_rank(Xd)}")
print(" ⭐ rank < ustunlar — ortiqcha ma'lumot")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Bir o'lchovning ikki birligi ===
ustunlar: 3, rank: 2
X.T @ X shart soni: 4.3e+21
=== 2. Yig'indi ustun ===
[a, b, a+b]: rank 2 / 3
=== 3. Dummy tuzog'i ===
drop_first=False: ustunlar 4, rank 3
drop_first=True: ustunlar 3, rank 3
⭐ rank < ustunlar — ortiqcha ma'lumotNima ko'rsatdi: 2.5-bo'lim.
Misol 4 — Shart soni va beqaror koeffitsiyentlar
"""Deyarli bog'liq belgilar: shart soni va koeffitsiyentlar beqarorligi (real numpy)."""
import numpy as np
def koef(X: np.ndarray, y: np.ndarray) -> np.ndarray:
return np.linalg.solve(X.T @ X, X.T @ y)
def main() -> None:
rng = np.random.default_rng(1)
n = 200
x1 = rng.normal(0, 1, n)
for nom, shovqin in [("mustaqil belgilar", 1.0), ("deyarli bir xil (r≈0.9999)", 0.01)]:
x2 = x1 + rng.normal(0, shovqin, n)
X = np.column_stack([x1, x2])
y = 3 * x1 + 3 * x2 + rng.normal(0, 1, n)
print(f"=== {nom} ===")
print(f" corr = {np.corrcoef(x1, x2)[0, 1]:.4f}, cond(X.T X) = {np.linalg.cond(X.T @ X):.1e}")
for urinish in range(3):
y2 = y + rng.normal(0, 0.5, n) # ma'lumot biroz o'zgardi
w = koef(X, y2)
print(f" urinish {urinish}: w = {np.round(w, 2)}, w1 + w2 = {w.sum():.2f}")
print()
print(" ⭐ Koeffitsiyentlar beqaror, yig'indisi (bashorat) barqaror")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== mustaqil belgilar ===
corr = 0.7320, cond(X.T X) = 7.7e+00
urinish 0: w = [3.26 2.8 ], w1 + w2 = 6.06
urinish 1: w = [3.46 2.69], w1 + w2 = 6.15
urinish 2: w = [3.37 2.73], w1 + w2 = 6.10
=== deyarli bir xil (r≈0.9999) ===
corr = 0.9999, cond(X.T X) = 3.1e+04
urinish 0: w = [1.11 4.99], w1 + w2 = 6.10
urinish 1: w = [-8.78 14.85], w1 + w2 = 6.07
urinish 2: w = [-8.14 14.22], w1 + w2 = 6.08
⭐ Koeffitsiyentlar beqaror, yig'indisi (bashorat) barqarorNima ko'rsatdi: 2.6, 2.7-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "x = inv(A) @ b — eng yaxshi usul" | solve — tezroq va aniqroq |
| "Har matritsaning teskarisi bor" | Faqat kvadrat va det ≠ 0 |
| "det kichik — deyarli singulyar" | Shart soni ko'ring |
| "Ko'p belgi — yaxshi model" | Ortiqcha belgi — rank tushadi |
| "One-hot barcha ustunlari + intercept" | Dummy tuzog'i — drop_first |
| "Beqaror koeffitsiyent — yomon bashorat" | Bashorat barqaror bo'lishi mumkin |
| "n > p — aniq yechim bor" | Shovqin — eng kichik kvadratlar |
| "Proyeksiyani qaytarish mumkin" | det = 0, teskari yo'q |
6. Keng tarqalgan xatolar va yechimlari
1. inv bilan yechish
x = np.linalg.inv(A) @ b # ⚠️
x = np.linalg.solve(A, b) # ✅2. Singulyarlikni tekshirmaslik
x = np.linalg.solve(A, b) # LinAlgError # ⚠️
if np.linalg.matrix_rank(A) < A.shape[1]: ... # avval tekshir # ✅3. Dummy tuzog'i
X = pd.get_dummies(df["shahar"]) # + intercept # ⚠️
X = pd.get_dummies(df["shahar"], drop_first=True) # ✅4. Ortiqcha birlik ustuni
X = df[["maydon_m2", "maydon_fut", "xona"]] # ⚠️
X = df[["maydon_m2", "xona"]] # ✅5. det bilan singulyarlik
if np.linalg.det(X.T @ X) < 1e-10: ... # masshtabga bog'liq # ⚠️
if np.linalg.cond(X.T @ X) > 1e10: ... # ✅6. Masshtabsiz belgilar
X = np.column_stack([maydon, narx_som]) # 70 va 5e8 # ⚠️
X = StandardScaler().fit_transform(...) # shart soni kamayadi # ✅7. Beqaror koeffitsiyentni talqin qilish
print("x2 narxni kamaytiradi:", w[1] < 0) # multikollinear # ⚠️
# avval corr va cond tekshir; Ridge yoki bitta belgi # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 6.9-dars (o'tilgan): One-hot, drop_first
- 8.5-dars (o'tilgan): Korrelyatsiya, multikollinearlik
- 10.4-dars (o'tilgan): Matritsa — o'zgartirish
- 10.6-dars: Eng kichik kvadratlar (n > p)
- Regressiya qismi: Ridge, VIF, koeffitsiyent talqini
8. Eng yaxshi amaliyotlar
Yechish — solve; inv — faqat kerak bo'lsa.
Natijani A @ x ≈ b bilan tekshiring.
Modeldan oldin rank ni tekshiring.
One-hot — drop_first (intercept bilan).
Bir o'lchovni bir birlikda saqlang.
Barqarorlik — cond, det emas.
Belgilarni standartlashtiring.
Beqaror koeffitsiyentlarni talqin qilmang.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # x + y = 3, x - y = 1 → (x, y)?
2. # det([[2, 0], [0, 5]])?
3. # det([[1, 2], [2, 4]])?
4. # det = 0 — teskari bormi?
5. # inv(R) burish uchun?
6. # rank([[1, 2], [2, 4]])?
7. # [a, b, a+b] rank?
8. # one-hot 3 shahar + intercept rank?
9. # cond(I)?
10. # n = 1000, p = 5 — aniq yechim?
11. # solve vs inv — qaysi biri yaxshi?
12. # det(A @ B)?Javoblar
- (2, 1)
- 10
- 0
- Yo'q
- R.T
- 1
- 2
- 3 (4 ustundan)
- 1
- Yo'q (eng kichik kvadratlar)
- solve
- det(A) × det(B)
Vazifa 2: Xatolarni tuzating
1. x = np.linalg.inv(A) @ b
2. X = pd.get_dummies(df["viloyat"]); X["const"] = 1
3. X = df[["narx_som", "narx_dollar", "maydon"]]
4. if np.linalg.det(X.T @ X) == 0: print("singulyar")
5. print("belgi2 manfiy ta'sir qiladi", w[1]) # corr(x1, x2) = 0.999Javoblar
1. x = np.linalg.solve(A, b)
2. X = pd.get_dummies(df["viloyat"], drop_first=True); X["const"] = 1
3. X = df[["narx_som", "maydon"]]
4. if np.linalg.cond(X.T @ X) > 1e10: print("deyarli singulyar")
5. # multikollinearlik: bitta belgini qoldiring yoki RidgeVazifa 3: Narxlar
Modellang:
- 4 mahsulot, 4 savat
- solve bilan narxlar
- Bitta savat boshqalarining yig'indisi bo'lsa
- rank va xato xabari
Vazifa 4: Determinant
Modellang:
- 5 xil 2×2 o'zgartirish
- Birlik kvadratga ta'siri (yuza)
- det bilan solishtirish
- det = 0 holati grafigi
Vazifa 5: Multikollinearlik
Modellang:
- Uy ma'lumoti: maydon, xonalar, maydon/xona
- rank va cond
- Koeffitsiyentlar bootstrap bilan
- Ortiqcha belgini olib tashlash
Vazifa 6: Integratsiya
Modellang:
- One-hot (6.9)
- Korrelyatsiya (8.5)
- Matritsa o'zgartirish (10.4)
- Standartlashtirish (6.6)
Vazifa 7: O'ylash
Kuchli korrelyatsiyali belgilar bilan qurilgan regressiya modeli yaxshi bashorat beradi, lekin koeffitsiyentlari har safar boshqacha chiqadi va ba'zan "noto'g'ri" ishorali bo'ladi. Menejer "reklama xarajati sotuvni kamaytiradi" degan koeffitsiyentni ko'rib, reklamani to'xtatmoqchi. Nima uchun bashorat va talqin — boshqa-boshqa maqsadlar? Chiziqli algebra nuqtai nazaridan bu vaziyatni qanday tushuntirasiz?
Javob
Qisqa javob: bog'liq belgilar bir-birining o'rnini bosa oladi — ular ta'siri yig'indisi aniq baholanadi (bashorat yaxshi), lekin qanday taqsimlangani aniqlanmaydi (koeffitsiyentlar beqaror). Geometrik jihatdan ustunlar deyarli bir yo'nalishda — ularning kombinatsiyasi bir xil natija beradigan juda ko'p (w1, w2) juftliklari bor. Bunday modelda alohida koeffitsiyent ishorasini talqin qilib, qaror qabul qilish mumkin emas.
1. Chiziqli algebra tushuntirishi
- X ustunlari deyarli bog'liq → X.T X deyarli singulyar (cond katta)
- Kichik shovqin → w da katta o'zgarish (Misol 4)
- w1 + w2 barqaror, w1 - w2 — deyarli aniqlanmagan yo'nalish
2. Bashorat vs talqin
| Maqsad | Nima kerak | Multikollinearlik ta'siri |
|---|---|---|
| Bashorat | Yaxshi y_hat | Deyarli yo'q |
| Talqin | Barqaror, ma'noli w | Juda katta |
| Qaror (reklama) | Sababiy ta'sir | Kuzatuv ma'lumoti yetarli emas |
3. Reklama misoli
- Reklama xarajati va mavsum/chegirma bir vaqtda o'zgaradi (bog'liq)
- Manfiy koeffitsiyent — multikollinearlik yoki chalkashtiruvchi omil (8.7, 4.10)
- Reklamani to'xtatish qarori uchun — eksperiment (A/B, geo-test) kerak
4. Data Scientist qanday
- corr, rank, cond (va VIF) ni tekshiradi
- Koeffitsiyent barqarorligini bootstrap bilan ko'rsatadi
- Talqin uchun: ortiqcha belgilarni birlashtiradi yoki Ridge ishlatadi
- Sababiy savol uchun eksperiment taklif qiladi
5. Xulosa
- Bog'liq ustunlar — deyarli singulyar sistema
- Bashorat barqaror, alohida koeffitsiyentlar — yo'q
- Beqaror koeffitsiyentdan qaror chiqarib bo'lmaydi
- Talqin va sababiylik — boshqa usullar talab qiladi
Nimani mustahkamlaydi: 2.5, 2.7-bo'limlar.
Xulosa
Bu darsda chiziqli tenglamalar sistemasini o'rgandik.
Eng muhim uch fikr:
A @ x = b va solve. Sistema — matritsa tenglamasi (qator: kesishish; ustun: b ni ustunlar kombinatsiyasi). Yechish —
np.linalg.solve(inv emas); tekshiruv — A @ x ≈ b. Teskari matritsa — o'zgartirishni qaytarish; faqat kvadrat va det ≠ 0; burish uchun R.T.Determinant va rank. det — yuza/hajm o'zgarishi; 0 — singulyar (o'lcham yo'qoladi, teskari yo'q). Rank — mustaqil ustunlar soni: rank < ustunlar — ortiqcha belgi (ikki birlik, yig'indi ustun, dummy tuzog'i — drop_first).
Yechimlar va barqarorlik. Bitta/cheksiz/yo'q; n > p da aniq yechim yo'q → eng kichik kvadratlar 10.6-bob. Shart soni katta (deyarli bog'liq belgilar) — koeffitsiyentlar beqaror, bashorat esa barqaror bo'lishi mumkin; yechim — ortiqcha belgini olib tashlash, standartlashtirish, Ridge.
Keyingi darsda eng kichik kvadratlarni o'rganamiz: n > p sistemaning "eng yaxshi" yechimi, normal tenglama, lstsq, proyeksiya sifatida regressiya va Ridge regularizatsiya matritsa tilida.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!