Raw

2. Методичні вказівки

Цей розділ самодостатній: у ньому зібрано теорію методу головних компонент, потрібну для аудиторних задач (3classroom.md) і домашньої програми (4task.md). Ширше ту саму теорію викладено в Лекції 13.

2.1 Ідея зменшення розмірності

Дані з багатьма ознаками (вимірами) важко аналізувати й візуалізувати, а методи на основі відстаней (kNN, kk-середніх) у високій розмірності псуються — це прокляття розмірності. Метод головних компонент (англ. Principal Component Analysis, PCA) будує нові ознаки — головні компоненти — як лінійні комбінації вихідних, обираючи їх уздовж напрямків найбільшої дисперсії. Перші кілька компонент несуть майже всю інформацію, тож рештою можна знехтувати.

2.2 Дисперсія, коваріація, коваріаційна матриця

Вибіркова дисперсія ознаки XX (nn спостережень):

sX2=1n1i=1n(xixˉ)2.s_X^2 = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2.

Коваріація двох ознак описує їх спільну зміну:

cov(X,Y)=1n1i=1n(xixˉ)(yiyˉ),cov(X,X)=sX2.\operatorname{cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y}), \qquad \operatorname{cov}(X, X) = s_X^2.

Коваріаційна матриця Σ\Sigma набору з pp ознак — це матриця p×pp \times p з елементами Σjk=cov(Xj,Xk)\Sigma_{jk} = \operatorname{cov}(X_j, X_k): на діагоналі — дисперсії, поза діагоналлю — коваріації. Вона симетрична (Σjk=Σkj\Sigma_{jk} = \Sigma_{kj}), а її слід tr(Σ)=jsXj2\operatorname{tr}(\Sigma) = \sum_j s_{X_j}^2 дорівнює загальній дисперсії даних. Для двох ознак

Σ=(sX2cov(X,Y)cov(X,Y)sY2).\Sigma = \begin{pmatrix} s_X^2 & \operatorname{cov}(X,Y) \\ \operatorname{cov}(X,Y) & s_Y^2 \end{pmatrix}.

Дільник n1n-1 чи nn. Заміна дільника домножує всю Σ\Sigma на сталу, тож власні вектори й частки дисперсії не змінюються. Ми беремо n1n - 1.

2.3 Власні значення й вектори; головні компоненти

Ненульовий вектор vvвласний вектор матриці Σ\Sigma з власним значенням λ\lambda, якщо Σv=λv\Sigma v = \lambda v. Дисперсія проєкцій центрованих даних на одиничний напрямок vv дорівнює vΣvv^{\top}\Sigma v, і максимізує її власний вектор із найбільшим λ\lambda.

Головні компоненти — власні вектори Σ\Sigma, впорядковані за спаданням власних значень. Дисперсія даних уздовж ii-ї компоненти дорівнює λi\lambda_i. Компоненти ортогональні (бо Σ\Sigma симетрична).

Для матриці 2×22 \times 2 власні значення знаходять із характеристичного рівняння

det(ΣλI)=0  λ2(trΣ)λ+detΣ=0.\det(\Sigma - \lambda I) = 0 \ \Longleftrightarrow\ \lambda^2 - (\operatorname{tr}\Sigma)\,\lambda + \det\Sigma = 0.

Для кожного кореня λ\lambda власний вектор дістають, розв’язуючи однорідну систему (ΣλI)v=0(\Sigma - \lambda I) v = 0, і нормують його до одиничної довжини.

2.4 Проєкція та частка поясненої дисперсії

Проєкція центрованого об’єкта xix_i на компоненту vv: ti=v(xixˉ)t_i = v^{\top}(x_i - \bar{x}). Частка поясненої дисперсії ii-ї компоненти:

λiλ1++λp=λitr(Σ).\frac{\lambda_i}{\lambda_1 + \dots + \lambda_p} = \frac{\lambda_i}{\operatorname{tr}(\Sigma)}.

Сума часток перших kk компонент — накопичена пояснена дисперсія. Число компонент kk обирають за порогом накопиченої дисперсії (напр., 0.900.90), за «ліктем» scree-графіка власних значень або правилом Кайзера (λ>1\lambda > 1 для кореляційної матриці).

2.5 Алгоритм PCA

PCA(матриця даних X розміру n×p, число компонент k):
  1. ЦЕНТРУВАННЯ:  X_c = X - mean         (за потреби ще / СКВ — стандартизація)
  2. КОВАРІАЦІЯ:   Sigma = (1/(n-1)) * X_c^T X_c
  3. ВЛАСНІ ЗНАЧЕННЯ/ВЕКТОРИ:  Sigma v = lambda v
  4. ВПОРЯДКУВАННЯ за спаданням lambda
  5. ВІДБІР перших k векторів -> W
  6. ПРОЄКЦІЯ:  Z = X_c · W
  повернути Z, W, lambda, частки дисперсії

2.6 Демонстраційний приклад (на інших даних, ніж у задачах)

Нехай маємо п’ять об’єктів із двома ознаками:

(1,1), (3,5), (5,3), (5,5), (6,6).(1, 1),\ (3, 5),\ (5, 3),\ (5, 5),\ (6, 6).

Крок 1. Центрування. Середні: xˉ=1+3+5+5+65=4\bar{x} = \frac{1+3+5+5+6}{5} = 4,  yˉ=1+5+3+5+65=4\ \bar{y} = \frac{1+5+3+5+6}{5} = 4. Відхилення (xi4, yi4)(x_i - 4,\ y_i - 4):

(3,3), (1,1), (1,1), (1,1), (2,2).(-3, -3),\ (-1, 1),\ (1, -1),\ (1, 1),\ (2, 2).

Крок 2. Коваріаційна матриця (дільник n1=4n - 1 = 4):

Δx2=9+1+1+1+4=16  sX2=4,\sum \Delta x^2 = 9 + 1 + 1 + 1 + 4 = 16 \ \Rightarrow\ s_X^2 = 4,

Δy2=9+1+1+1+4=16  sY2=4,\sum \Delta y^2 = 9 + 1 + 1 + 1 + 4 = 16 \ \Rightarrow\ s_Y^2 = 4,

ΔxΔy=911+1+4=12  cov(X,Y)=3,\sum \Delta x\,\Delta y = 9 - 1 - 1 + 1 + 4 = 12 \ \Rightarrow\ \operatorname{cov}(X,Y) = 3,

Σ=(4334),trΣ=8.\Sigma = \begin{pmatrix} 4 & 3 \\ 3 & 4 \end{pmatrix}, \qquad \operatorname{tr}\Sigma = 8.

Крок 3. Власні значення. Характеристичне рівняння: (4λ)29=04λ=±3(4 - \lambda)^2 - 9 = 0 \Rightarrow 4 - \lambda = \pm 3 \Rightarrow

λ1=7,λ2=1(7+1=8=trΣ).\lambda_1 = 7, \qquad \lambda_2 = 1 \qquad (7 + 1 = 8 = \operatorname{tr}\Sigma).

Власні вектори. Для λ1=7\lambda_1 = 7: (Σ7I)v=03v1+3v2=0v1=v2(\Sigma - 7I)v = 0 \Rightarrow -3v_1 + 3v_2 = 0 \Rightarrow v_1 = v_2, тобто v1=12(1,1)v_1 = \frac{1}{\sqrt{2}}(1, 1). Для λ2=1\lambda_2 = 1: 3v1+3v2=0v2=v13v_1 + 3v_2 = 0 \Rightarrow v_2 = -v_1, тобто v2=12(1,1)v_2 = \frac{1}{\sqrt{2}}(1, -1). Перевірка: (1,1)(1,1)=0(1,1)\cdot(1,-1) = 0 — ортогональні.

Крок 6. Проєкція на 1-шу компоненту. ti=12((xi4)+(yi4))t_i = \frac{1}{\sqrt2}\big((x_i - 4) + (y_i - 4)\big):

об’єкт відхилення ti=Δx+Δy2t_i = \dfrac{\Delta x + \Delta y}{\sqrt2}
(1,1)(1,1) (3,3)(-3,-3) 6/24.243-6/\sqrt2 \approx -4.243
(3,5)(3,5) (1,1)(-1,1) 00
(5,3)(5,3) (1,1)(1,-1) 00
(5,5)(5,5) (1,1)(1,1) 2/21.4142/\sqrt2 \approx 1.414
(6,6)(6,6) (2,2)(2,2) 4/22.8284/\sqrt2 \approx 2.828

Дисперсія проєкцій: 1436+0+0+4+162=568=7=λ1\frac{1}{4}\cdot\frac{36 + 0 + 0 + 4 + 16}{2} = \frac{56}{8} = 7 = \lambda_1 — контроль.

Частка поясненої дисперсії першої компоненти:

λ1λ1+λ2=78=0.875.\frac{\lambda_1}{\lambda_1 + \lambda_2} = \frac{7}{8} = 0.875.

Отже, одна головна компонента зберігає 87.5%87.5\% розкиду даних. (Усі числа збігаються з numpy.linalg.eigh.)

2.7 Робочий контрольний список

  • Спершу центруйте дані; якщо ознаки в різних масштабах — стандартизуйте.
  • Коваріаційну матрицю рахуйте з одним і тим самим дільником (n1n - 1); вона має бути симетричною — це швидка перевірка.
  • Власні значення для 2×22 \times 2 шукайте через λ2(trΣ)λ+detΣ=0\lambda^2 - (\operatorname{tr}\Sigma)\lambda + \det\Sigma = 0; контроль: λ1+λ2=trΣ\lambda_1 + \lambda_2 = \operatorname{tr}\Sigma,  λ1λ2=detΣ\ \lambda_1\lambda_2 = \det\Sigma.
  • Дисперсія проєкцій на ii-ту компоненту має дорівнювати λi\lambda_i — зручна перевірка правильності.
  • Частки дисперсії — невід’ємні числа, що дають у сумі 11.

Laboratory/Laboratory13/2method.md · 8.7 KB · updated 2026-08-05 08:41