Здравствуйте, ребята, как будущий студент магистратуры по науке о данных, я хочу поделиться статьей об основных концепциях линейной алгебры в машинном обучении. Я советую читателям скопировать и вставить код на свой локальный компьютер и поиграть с ним!
- Скаляры: одно число. Обычно мы пишем его курсивом и даем имена переменных в нижнем регистре.
- Вектор: это массив чисел. Массив — это просто тип структуры данных в программировании. Мы даем векторам строчные имена жирным шрифтом, например, x. Доступ к элементам внутри вектора можно получить с помощью индекса (0 ~ n).
- Матрицы: это двумерный массив. Мы обычно пишем матрицы как 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, а также о том, как их можно использовать в машинном обучении.
Спасибо за прочтение. Увидимся в следующей статье.