Матриці в Machine Learning Основні Операції та Практичне Застосування

У попередній статті ми побачили, як окремий об’єкт можна представити вектором числових ознак. Але в реальних задачах Data Science та Machine Learning зазвичай потрібно працювати не з одним об’єктом, а із сотнями, тисячами або навіть мільйонами спостережень.

Саме тут з’являються матриці. Вони дозволяють об’єднати багато векторів в одну структуру, зручно організувати набір даних і виконувати операції одразу над великою кількістю значень.

Матриці в Machine Learning: Від Окремого Об’єкта до Набору Даних

Матриця — це прямокутна таблиця чисел, яку можна записати у вигляді

\[
A=
\begin{pmatrix}
a_{11} & a_{12} & \ldots & a_{1n}\\
a_{21} & a_{22} & \ldots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{m1} & a_{m2} & \ldots & a_{mn}
\end{pmatrix}.
\]

Тут \( m \) — кількість рядків, а \( n \) — кількість стовпців.

У задачах Machine Learning рядки та стовпці матриці часто мають цілком конкретний зміст:

  • Рядок відповідає одному об’єкту.
  • Стовпець відповідає одній ознаці.
  • Окремий елемент містить значення певної ознаки для певного об’єкта.

Припустимо, ми аналізуємо чотири автомобілі. Для кожного з них відомі:

  • Потужність двигуна.
  • Витрата пального.
  • Вік автомобіля.

Тоді весь набір даних можна представити матрицею

\[
X=
\begin{pmatrix}
120 & 6.5 & 4\\
150 & 7.2 & 3\\
105 & 5.9 & 6\\
180 & 8.1 & 2
\end{pmatrix}.
\]

Перший рядок

\[
(120,6.5,4)
\]

описує перший автомобіль.

Другий стовпець

\[
\begin{pmatrix}
6.5\\
7.2\\
5.9\\
8.1
\end{pmatrix}
\]

містить значення витрати пального для всіх чотирьох автомобілів.

У Machine Learning таку матрицю часто позначають літерою \( X \) і називають матрицею ознак.

Матриці в Machine Learning — представлення характеристик автомобілів у вигляді матриці ознак

Це один із найважливіших способів організації даних. Окремі вектори ознак стають рядками однієї великої матриці, з якою далі може працювати алгоритм.

Матриця Ознак і Цільові Значення: Як Виглядає Навчальна Вибірка

У багатьох задачах машинного навчання потрібно не лише описати об’єкти, а й указати значення, які модель повинна навчитися передбачати.

Розглянемо приклад.

Припустимо, потрібно прогнозувати час доставки замовлення. Для кожного замовлення відомі:

  • Відстань.
  • Кількість товарів.
  • Завантаженість служби доставки.

Матриця ознак може мати вигляд

\[
X=
\begin{pmatrix}
4 & 2 & 6\\
7 & 3 & 8\\
5 & 1 & 5\\
9 & 4 & 9\\
6 & 2 & 7
\end{pmatrix}.
\]

Кожен рядок відповідає одному замовленню.

Наприклад,

\[
(7,3,8)
\]

описує друге замовлення.

Окремо запишемо фактичний час доставки:

\[
\mathbf{y}=
\begin{pmatrix}
24\\
38\\
26\\
46\\
32
\end{pmatrix}.
\]

Тут матриця \( X \) містить вхідні ознаки, а вектор \( \mathbf{y} \) — цільові значення, які потрібно навчитися прогнозувати.

У спрощеному вигляді процес можна представити так:

\[
X\longrightarrow \text{модель}\longrightarrow \mathbf{y}.
\]

Звичайно, між вхідними даними та результатом відбувається багато математичних обчислень. Але вже на цьому етапі видно основну структуру навчальної вибірки: об’єкти → ознаки → матриця \( X \) → цільові значення \( \mathbf{y} \).

Саме з такою формою представлення даних ми будемо неодноразово зустрічатися в наступних матеріалах.

Основні Операції з Матрицями: Що Справді Корисно для Даних

На сайті mathros.net.ua основні операції з матрицями вже розглядаються окремо, тому тут не будемо повторювати всю теорію. Зосередимося на тому, який практичний зміст ці операції отримують під час роботи з даними.

Додавання матриць

Матриці однакового розміру можна додавати поелементно:

\[
A+B=
\begin{pmatrix}
a_{11}+b_{11} & \ldots & a_{1n}+b_{1n}\\
\vdots & \ddots & \vdots\\
a_{m1}+b_{m1} & \ldots & a_{mn}+b_{mn}
\end{pmatrix}.
\]

У задачах аналізу даних це може бути корисно, коли потрібно об’єднати значення, отримані для однакових об’єктів і ознак.

Наприклад, нехай дві матриці містять кількість відвідувань трьох сторінок сайту протягом двох різних періодів:

\[
\begin{gathered}
A=
\begin{pmatrix}
40 & 32 & 28\\
35 & 30 & 24
\end{pmatrix},\\[4pt]
B=
\begin{pmatrix}
12 & 10 & 8\\
15 & 11 & 9
\end{pmatrix}.
\end{gathered}
\]

Тоді

\[
A+B=
\begin{pmatrix}
52 & 42 & 36\\
50 & 41 & 33
\end{pmatrix}.
\]

Отримана матриця містить сумарні значення для відповідних позицій.

Множення матриці на число

Якщо всі елементи матриці потрібно змінити в однаковій пропорції, матрицю можна помножити на число:

\[
\lambda\cdot A=
\begin{pmatrix}
\lambda\cdot a_{11} & \ldots & \lambda\cdot a_{1n}\\
\vdots & \ddots & \vdots\\
\lambda\cdot a_{m1} & \ldots & \lambda\cdot a_{mn}
\end{pmatrix}.
\]

Нехай

\[
A=
\begin{pmatrix}
20 & 30\\
40 & 50
\end{pmatrix}.
\]

Якщо зменшити всі значення вдвічі, отримаємо

\[
0.5\cdot A=
\begin{pmatrix}
10 & 15\\
20 & 25
\end{pmatrix}.
\]

Таке перетворення можна використовувати, наприклад, для зміни масштабу всіх значень або переходу до інших одиниць вимірювання.

Перетворення окремих ознак у реальних задачах Machine Learning можутьвиконуватися по-різному. До масштабування та стандартизації даних ми повернемося окремо.

Транспонування матриці

Під час транспонування рядки матриці стають стовпцями:

\[
\begin{gathered}
A=
\begin{pmatrix}
2 & 4 & 6\\
3 & 5 & 7
\end{pmatrix},\\[4pt]
A^T=
\begin{pmatrix}
2 & 3\\
4 & 5\\
6 & 7
\end{pmatrix}.
\end{gathered}
\]

Після транспонування матриця розміру \( 2\times3 \) перетворюється на матрицю розміру \( 3\times2 \).

У роботі з даними така операція корисна, коли потрібно змінити спосіб організації інформації. Наприклад, об’єкти, які були представлені рядками, після транспонування стають стовпцями.

Транспонування також часто зустрічається у формулах лінійної алгебри, статистики та машинного навчання.

Зображення як Матриці: Коли Числа Стають Пікселями

Матриці потрібні не лише для звичайних табличних наборів даних.

Розглянемо чорно-біле зображення. Кожен його піксель можна описати числом, яке визначає яскравість.

Невелике зображення може бути представлене, наприклад, такою матрицею:

\[
I=
\begin{pmatrix}
20 & 30 & 40 & 50\\
35 & 60 & 90 & 70\\
45 & 100 & 180 & 110\\
25 & 55 & 80 & 45
\end{pmatrix}.
\]

Кожен елемент матриці відповідає одному пікселю.

Малі значення можуть відповідати темнішим ділянкам, а великі — світлішим.

Матриці в Machine Learning — представлення чорно-білого зображення як матриці значень пікселів

Для людини це зображення. Для алгоритму — насамперед структурований набір чисел, над яким можна виконувати математичні операції.

Якщо зображення має висоту \( h \) і ширину \( w \), то чорно-біле зображення можна представити матрицею з \( h \) рядками та \( w \) стовпцями.

Для кольорових зображень структура складніша. Потрібно зберігати значення для кількох колірних каналів, тому замість однієї двовимірної матриці природно переходять до багатовимірних масивів.

Але основна ідея залишається тією самою: зображення → числа → математична структура → обчислення.

Цей приклад добре показує, що матриця в Data Science може представляти значно більше, ніж просто звичайну таблицю.

Матриці Параметрів: Що Саме Навчає Модель

Матриця може представляти не лише вхідні дані, а й параметри самої моделі.

Уявімо модель, яка отримує кілька ознак і на їх основі обчислює нові значення. Кожна вхідна ознака може впливати на результат із певною вагою.

Такі коефіцієнти зручно організувати у матрицю:

\[
W=
\begin{pmatrix}
w_{11} & w_{12}\\
w_{21} & w_{22}\\
w_{31} & w_{32}
\end{pmatrix}.
\]

Кожен елемент матриці \( W \) може описувати силу впливу певної вхідної характеристики на певний результат.

Під час навчання Machine Learning модель поступово змінює ці параметри, намагаючись зменшити помилку своїх прогнозів.

У складніших моделях кількість таких параметрів може бути дуже великою. Особливо добре це видно в нейронних мережах, де ваги між окремими шарами часто зручно представляти саме матрицями.

Таким чином, матриці в Machine Learning можуть описувати різні речі:

  • Навчальні дані.
  • Параметри моделі.
  • Проміжні результати.
  • Зображення.
  • Прогнози.
  • Статистичні характеристики.

Саме ця універсальність робить матриці одним із центральних математичних інструментів машинного навчання.

Матриці в Python: Робота з Даними за Допомогою NumPy

Тепер подивимося, як основні операції з матрицями виконуються у Python.

Для роботи з числовими масивами зручно використовувати бібліотеку NumPy.

Візьмемо матрицю характеристик автомобілів:

import numpy as np
 
X = np.array([
    [120, 6.5, 4],
    [150, 7.2, 3],
    [105, 5.9, 6],
    [180, 8.1, 2]
])
 
print("Data matrix:")
print(X)
 
print("Shape:", X.shape)
print("First object:", X[0])
print("Second feature:", X[:, 1])
 
print("Transposed matrix:")
print(X.T)

Програма виведе:

Data matrix:
[[120.    6.5   4. ]
 [150.    7.2   3. ]
 [105.    5.9   6. ]
 [180.    8.1   2. ]]

Shape: (4, 3)
First object: [120.    6.5   4. ]
Second feature: [6.5 7.2 5.9 8.1]

Transposed matrix:
[[120.  150.  105.  180. ]
 [  6.5   7.2   5.9   8.1]
 [  4.    3.    6.    2. ]]

Запис

X.shape

повертає розмір масиву. У нашому випадку результат \( (4,3) \) означає чотири рядки та три стовпці.

Запис

X[0]

вибирає перший рядок, тобто ознаки першого автомобіля.

За допомогою

X[:, 1]

можна отримати другий стовпець — значення другої ознаки для всіх об’єктів.

А запис

X.T

повертає транспоновану матрицю.

Таким чином, NumPy дозволяє працювати з цілими наборами числових даних майже так само природно, як із матрицями в математичних формулах.

Практичний Приклад: Центрування Даних за Допомогою Матриці

Розглянемо задачу, яка вже нагадує реальну підготовку даних перед подальшим аналізом.
Припустимо, датчики зробили п’ять вимірювань. Для кожного спостереження зберігали:

  • Температуру.
  • Вологість.
  • Атмосферний тиск.

Маємо матрицю

\[
X=
\begin{pmatrix}
22 & 60 & 1012\\
24 & 55 & 1010\\
21 & 65 & 1014\\
23 & 58 & 1011\\
25 & 52 & 1009
\end{pmatrix}.
\]

Кожен рядок відповідає одному моменту спостереження, а кожен стовпець — окремій характеристиці.

Для подальшого аналізу часто корисно визначити, наскільки кожне значення відхиляється від середнього значення своєї ознаки.

Спочатку знайдемо середнє арифметичне для кожного стовпця:

\[
\boldsymbol{\mu}
=
(23,58,1011.2).
\]

Для температури:

\[
\frac{22+24+21+23+25}{5}=23.
\]

Для вологості:

\[
\frac{60+55+65+58+52}{5}=58.
\]

Для атмосферного тиску:

\[
\frac{1012+1010+1014+1011+1009}{5}=1011.2.
\]

Тепер віднімемо відповідне середнє значення від кожного елемента стовпця.

Отримаємо центровану матрицю:

\[
X_c=
\begin{pmatrix}
-1 & 2 & 0.8\\
1 & -3 & -1.2\\
-2 & 7 & 2.8\\
0 & 0 & -0.2\\
2 & -6 & -2.2
\end{pmatrix}.
\]

Тепер елементи показують не абсолютні значення температури, вологості та тиску, а їхні відхилення від середнього рівня.

Наприклад, перший рядок

\[
(-1,2,0.8)
\]

означає, що під час першого спостереження температура була нижчою за середню на \( 1 \), вологість — вищою на \( 2 \), а атмосферний тиск — вищим на \( 0.8 \).

Для кожної ознаки середнє значення після центрування дорівнює нулю.

Виконаємо ті самі обчислення у Python:

import numpy as np
 
X = np.array([
    [22, 60, 1012],
    [24, 55, 1010],
    [21, 65, 1014],
    [23, 58, 1011],
    [25, 52, 1009]
], dtype=float)
 
means = np.mean(X, axis=0)
centered_X = X - means
 
print("Feature means:")
print(np.round(means, 1))
 
print("Centered matrix:")
print(np.round(centered_X, 1))

Результат:

Feature means:
[  23.    58.  1011.2]

Centered matrix:
[[-1.   2.   0.8]
 [ 1.  -3.  -1.2]
 [-2.   7.   2.8]
 [ 0.   0.  -0.2]
 [ 2.  -6.  -2.2]]

Параметр axis=0 означає, що середнє обчислюється окремо для кожного стовпця.

Цей приклад добре показує одну з головних переваг матричного представлення даних.

Нам не потрібно окремо обробляти температуру кожного спостереження, потім вологість, а потім тиск. Ми працюємо одразу з усією матрицею.

Центрування часто використовується як один з етапів підготовки даних. Надалі ця операція знадобиться нам під час розгляду коваріації та методу головних компонент.

Аналогічним способом можна виконувати й інші перетворення: масштабувати ознаки, вибирати потрібні стовпці, створювати нові характеристики або готувати дані для подальших обчислень.

Матриці в Machine Learning: Від Даних до Обчислень

На перший погляд, матриця — це просто прямокутна таблиця чисел. Але в Machine Learning за такою таблицею може приховуватися майже будь-що.

Рядки матриці можуть представляти автомобілі, замовлення, результати вимірювань або інші об’єкти. Стовпці можуть відповідати їхнім ознакам. Окремі матриці можуть містити пікселі зображення, параметри моделі або проміжні результати обчислень.

Завдяки цьому одну й ту саму математичну мову можна використовувати для дуже різних задач.

Особливо важливо те, що матриці дозволяють виконувати операції не над одним об’єктом, а одразу над цілим набором даних. Саме тому бібліотеки для Data Science та Machine Learning активно використовують матричні та багатовимірні структури.

У цій статті ми зосередилися на тому, що представляють матриці в Machine Learning та як базові операції над ними пов’язані з реальними даними.

Але є одна операція, яка заслуговує на окремий детальний розгляд — множення матриць. Далі варто детальніше розібрати правило його виконання та побачити, чому матричний добуток так часто зустрічається в алгоритмах машинного навчання.