Здравствуйте, ребята, как будущий студент магистратуры по науке о данных, я хочу поделиться статьей об основных концепциях линейной алгебры в машинном обучении. Я советую читателям скопировать и вставить код на свой локальный компьютер и поиграть с ним!

  1. Скаляры: одно число. Обычно мы пишем его курсивом и даем имена переменных в нижнем регистре.
  2. Вектор: это массив чисел. Массив — это просто тип структуры данных в программировании. Мы даем векторам строчные имена жирным шрифтом, например, x. Доступ к элементам внутри вектора можно получить с помощью индекса (0 ~ n).
  3. Матрицы: это двумерный массив. Мы обычно пишем матрицы как A. Поскольку матрицы имеют высоту и ширину (поскольку они двумерные).
import numpy as np

scalar = 4

vector = np.array([1,2,3,4])

#Access 3 in the vector:
print(vector[2])

matrix = np.array([[1,2,3,4],
                    [5,6,7,8]])

#Access 5 in the matrix:

print(matrix[1][0])

4. Транспонировать: мы можем транспонировать матрицу и рассматривать ее как зеркальное отображение по главной диагонали.

print(matrix.transpose(),'\n')

print(matrix)

5. Умножение матриц и векторов

Скалярное произведение, также известное как скалярное произведение или внутреннее произведение, представляет собой операцию, выполняемую между двумя векторами, в результате которой получается скалярное значение. Это способ объединения векторов, который дает одно число. Мы используем функцию .dot из numpy.

Матрицы:

import numpy as np

# Define the matrices
matrix_A = np.array([[1, 2, 3], [4, 5, 6]])  # 2x3 matrix
matrix_B = np.array([[7, 8], [9, 10], [11, 12]])  # 3x2 matrix

# Perform matrix multiplication
result = np.dot(matrix_A, matrix_B)

# Print the result
print(result)

Векторы:

import numpy as np

# Define the vectors
vector_A = np.array([1, 2, 3])  # 1D vector
vector_B = np.array([4, 5, 6])  # 1D vector

# Perform vector multiplication (dot product)
result = np.dot(vector_A, vector_B)

# Print the result
print(result)

6. Матрица идентичности

1  0  0
0  1  0
0  0  1

В этой матрице элемент в позиции (1, 1) равен 1, элемент в позиции (2, 2) равен 1 и элемент в позиции (3, 3) равен 1. Все остальные элементы вне главной диагонали равны 0 .

Единичная матрица обозначается как I или Iₙ, где n представляет количество строк (или столбцов) в матрице. Единичная матрица играет важную роль в линейной алгебре, потому что при ее умножении на любую другую матрицу получается сама исходная матрица.

7. Линейная комбинация

Прежде всего, важно понять 2 условия, в которых определяется, считается ли функция или операция линейной.

Условие 1: Аддитивность

Свойство аддитивности означает, что операция ведет себя согласованно со сложением. Это означает, что объединение двух векторов по отдельности, а затем добавление результатов эквивалентно сначала добавлению векторов, а затем их объединению. Математически это можно выразить так:

c * (vector_A + vector_B) = c * vector_A + c * vector_B

Условие 2: Однородность

Свойство однородности относится к поведению масштабирования или умножения вектора на скалярное значение. Это означает, что умножение вектора на скаляр перед объединением его с другим вектором эквивалентно сначала объединению исходных векторов, а затем умножению результата на скаляр. Математически это можно выразить так:

(c + d) * vector_A = c * vector_A + d * vector_A

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

import numpy as np

# Define the vectors and coefficients
vector_A = np.array([1, 2, 3])
vector_B = np.array([4, 5, 6])
coefficients = np.array([2, -1])

# Perform linear combination
result = coefficients[0] * vector_A + coefficients[1] * vector_B

# Print the result
print(result)

Мы умножаем скалярный коэффициент и добавляем результаты, которые хранятся в переменной с именем result.

8. Нормы

Это будет последняя концепция для этой статьи.

Норма — это функция, которая помогает измерять размер векторов (величину).

Он количественно определяет расстояние вектора от начала координат (0, 0) до его конечной точки в многомерном пространстве.

Существует несколько типов норм, обычно используемых в машинном обучении, но две из наиболее часто встречающихся норм — это норма L1 (также известная как манхэттенская норма или норма такси) и норма L2 (также известная как евклидова норма).

Вот пример в коде Python для вычисления норм L1 и L2 вектора:

import numpy as np

# Define the vector
vector = np.array([3, 4, 5])

# Calculate L1 norm
l1_norm = np.linalg.norm(vector, ord=1)
print("L1 Norm:", l1_norm)

# Calculate L2 norm
l2_norm = np.linalg.norm(vector, ord=2)
print("L2 Norm:", l2_norm)

l1_norm представляет собой сумму абсолютных значений, а l2_norm дает евклидово расстояние от источника (0,0,0) до вектора в трехмерном пространстве.

В следующей статье я расскажу больше о евклидовом расстоянии и норме l1, l2, а также о том, как их можно использовать в машинном обучении.

Спасибо за прочтение. Увидимся в следующей статье.