Матрица (Matrix) - Лена Капаца
Матрица (Matrix) by Лена Капаца Dec. 19, 2020

Матрица – это таблица из n × m (например, 3 × 3) чисел, заключенная в квадратные скобки. Мы можем складывать и вычитать матрицы одного размера, умножать одну матрицу на другую, если их измерения совместимы, и умножать всю матрицу на константу. Вектор - это матрица с одной строкой или столбцом. Основная идея заключается в том, что это двумерная сетка чисел.

В чем же отличие между матрицей и тензором? Последний часто рассматривается как обобщенная матрица, то есть это может быть одномерная матрица (вектор), трехмерная матрица (что-то вроде куба чисел), даже ноль-мерная матрица (одно число) или более высокая размерная структура, которую трудно визуализировать. Размерность тензора называется его рангом.

Инициализация

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

from numpy import array
A = array([[1, 2, 3], [4, 5, 6]])
print(A)

Отобразится матрица следующим образом:

[[1 2 3]
 [4 5 6]]

Как и в случае с тензорами, мы можем выполнять поэлементные арифметические операции с матрицами.

Сложение

from numpy import array
A = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
B = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
C = A + B
print(C)

Сложение сгенерирует такую матрицу C:

[[[ 2  4  6]
  [ 8 10 12]
  [14 16 18]]

 [[22 24 26]
  [28 30 32]
  [34 36 38]]

 [[42 44 46]
  [48 50 52]
  [54 56 58]]]

Вычитание

from numpy import array

A = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
B = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
D = A - B
print(D)

Вычитание – такую матрицу D:

[[[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]]]

Произведение

Поэлементное умножение одной матрицы на другую такой же размерности приводит к созданию новой матрицы такой же размерности. Такой частный случай перемножения с одноразмерными матрицами / тензорами называют произведением Адамара.

from numpy import array
A = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
B = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
E = A * B
print(E)

Такой код сгенерирует матрицу E, котора выглядит следующим образом:

[[[  1   4   9]
  [ 16  25  36]
  [ 49  64  81]]

 [[121 144 169]
  [196 225 256]
  [289 324 361]]

 [[441 484 529]
  [576 625 676]
  [729 784 841]]]

Если же дана матриц A с q измерений и матрица B с r измерений, их произведение будет новой матрицей с q + r размерностями. Например:

from numpy import array
from numpy import tensordot
A = array([1, 2, 3])
B = array([3, 4])
F = tensordot(A, B, axes = 0)
print(F)

Результатом будет такая матрица F:

[[ 3  4]
 [ 6  8]
 [ 9 12]]

Деление

from numpy import array

A = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
B = array([
  [[1,2,3],    [4,5,6],    [7,8,9]],
  [[11,12,13], [14,15,16], [17,18,19]],
  [[21,22,23], [24,25,26], [27,28,29]],
  ])
G = A / B
print(G)

Такое поэлементное деление одноразмерных матриц сгенерирует матрицу F:

[[[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]

 [[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]

 [[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]]

Confusion Matrix

Матрицы используются в Машинном обучении (ML) повсеместно, но не только в обобщенном виде. Матрица ошибок (Confusion Matrix) дает нам целостное представление о том, насколько хорошо работает наша классификационная модель и какие ошибки она допускает:

О том, что означает каждая ячейка матрицы ошибок и как она работает, читайте в отдельной статье.

Фото: @ngbates

© Лена Капаца. Все права защищены.