Развитие интуиции о том, как матрицы помогают решить систему линейных уравнений и, следовательно, проблемы регрессии.

Сразу после того, как вы хорошо освоите векторы, матрицы и тензоры, пора познакомить вас с очень важной фундаментальной концепцией линейной алгебры - Точечное произведение (умножение матриц) и то, как это связано с системой решения линейных уравнений. И я говорю, что это важно, потому что он широко используется почти во всех основных алгоритмах машинного обучения и глубокого обучения.

Это хороший аргумент в пользу изучения математики для науки о данных.

Итак, в этом посте мы рассмотрим следующие концепции вместе с их кодом с использованием NumPy:

  • Точечное произведение матрицы и вектора
  • Точечное произведение двух матриц
  • Свойства умножения матриц
  • Системы линейных уравнений
  • Уравнение модели прогнозирования линейной регрессии

Давайте начнем…

Точечное произведение матрицы и вектора

В отличие от сложения или вычитания, произведение двух матриц не вычисляется путем умножения каждой ячейки одной матрицы на соответствующую ячейку другой, но мы вычисляем сумму произведений строк одной матрицы со столбцом другой матрицы, как показано в изображение ниже:

Это матричное умножение также называется скалярным произведением.

Вот формализация метода:

Важное правило: вы можете перемножать две матрицы только в том случае, если количество столбцов первой матрицы равно количеству строк второй матрицы.

Если форма одной матрицы (m × n), а форма другой должна быть (n × t) (t ≥ 1), то результирующая матрица произведения будет иметь форму (m × t), как показано ниже:

Вот более полная и обозначенная форма скалярного произведения между матрицей и вектором, если я умножаю матрицу A (3 × 2) на вектор B (2 × 1):

Результирующая матрица будет вектором 3 × 1, вычисленным, как показано ниже:

Давайте посмотрим на пример:

Код:

Давайте закодируем их с помощью Numpy:

Во-первых, импортируйте пакет NumPy в свою рабочую область, а затем создайте 2D-матрицу, как описано в приведенном выше примере, или любую другую матричную структуру, с которой вы хотите попробовать, а затем создайте вектор, гарантирующий, что количество строк равно количеству строк. количество столбцов в матрице.

Затем вы можете использовать метод dot() в пакете numpy, которому вы передадите матрицу и вектор. Он вернет вам результирующий вектор, как показано.

Вы можете просмотреть всю записную книжку и поиграть с кодом, используя:



Точечное произведение двух матриц.

Затем мы можем перемножить 2 матрицы, вот пример матрицы 4 × 3 A, умноженной на матрицу 3 × 2 B :

следуя методу, как показано ниже:

Код:

Так же, как мы кодировали предыдущий пример, здесь вы создадите два 2D-массива, а затем, используя точечный метод массива, вы можете вычислить точечный продукт:

Свойства умножения матриц

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

Перед вами задача: вы можете создать матрицы (A, B или C) в соответствии с вашим воображением, а затем проверить каждое правило, сначала вычислив L.H.S. а затем оцените R.H.S. с этим. Смотрите, верны ли они.

Я проверю правило транспонирования для скалярного произведения здесь:

Как видите, я сначала создал две матрицы A и B, а затем решил сначала для L.H.S. сначала вычислив скалярное произведение двух матриц, а затем транспонировав их с помощью T метода и оценив его относительно R.H.S. где позиции матриц поменялись местами, и они были сначала транспонированы, а затем умножены с использованием метода dot().

Система линейных уравнений

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

Итак, система уравнений состоит из двух основных компонентов:

  1. Количество уравнений
  2. Количество неизвестных

Количество неизвестных - это размерность рассматриваемой задачи, а количество уравнений - это количество линий в (2D) или n-мерных плоскостях.

Вот система из 4-х уравнений и 4-х неизвестных:

Матричное представление системы линейных уравнений

Теперь мы можем использовать матрицы для описания системы линейных уравнений, которые имеют вид Ax = b. Рассмотрим эту систему линейных уравнений:

Здесь у нас есть n неизвестных от x₁ до xₙ и у нас есть m количество строк (здесь уравнения). Мы можем сделать вывод, что переменные (от x₁ до xₙ) можно суммировать в векторе x.

И мы можем иметь As (коэффициент (вес) для каждой переменной) в другой матрице A:

L.H.S. системы можно тогда описать, используя следующие обозначения:

Скалярное произведение A и вектора x даст нам требуемый выходной вектор b

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

Линейная регрессия

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

здесь,

  • ŷ - прогнозируемое значение.
  • n - количество функций.
  • xi - это i-е значение функции.
  • θj - j -й параметр модели (включая член смещения θ 0 и веса признаков θ 1, θ 2, ⋯, θn).

который в дальнейшем можно записать в векторизованной форме, например:

yˆ=hθ(x)=θ·x

  • θ - это вектор параметров модели с весовыми коэффициентами.
  • x - это вектор признаков экземпляра, содержащий x от 0 до xn, с x 0 всегда равно 1.
  • θ · x - это скалярное произведение векторов θ и x, которое равно R.H.S. в уравнении выше.
  • h θ - функция гипотезы, использующая параметры модели θ.

Заключение:

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

Наука о данных с Harshit

С помощью этого канала я планирую выпустить пару серий, охватывающих все пространство науки о данных. Вот почему вам стоит подписаться на канал:

  • Эта серия будет охватывать все необходимые / требуемые качественные руководства по каждой из тем и подтем, таких как Основы Python для науки о данных.
  • Объяснение математики и объяснений того, почему мы делаем то, что мы делаем в области машинного обучения и глубокого обучения.
  • Подкасты с специалистами по данным и инженерами Google, Microsoft, Amazon и т. Д., А также с руководителями компаний, работающих с большими данными.
  • Проекты и инструкции по реализации изученных тем.

Вы можете связаться со мной в Twitter, LinkedIn или Instagram (где я говорю о здоровье и благополучии).