Векторы и матрицы | Вводный курс ML

Векторы и матрицы

Все курсы > Вводный курс > Занятие 12

Ещё на первом занятии мы упомянули, что в уравнении может быть несколько независимых переменных.

$$y = w_1 \times x_1 + w_2 \times x_2 + w_0 $$

Такое уравнение нельзя изобразить на координатной плоскости (имеющей два измерения, x и y), потому что в нем три переменных, а значит три измерения. Нужен график, имеющий три плоскости.

С помощью этого графика мы можем представить зависимость обхвата шеи не только от роста, но и, например, от веса.

векторы и матрицы: представим данные на трехмерном графике

На самом деле измерений может быть и больше, просто так как мы живём в трёхмерном пространстве, представить четыре и более измерений мы не можем. Математически же это вполне возможно.

Данные как векторы и матрицы

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

вектор данных в трехмерном пространстве

Если взять несколько точек и соответственно несколько векторов,

три вектора данных в трехмерном пространстве

то получится набор чисел, называемых матрицей.

матрица данных 3 x 3

Из сказанного выше очевидно, что любой вектор — не что иное как матрица, в которой один столбец или одна строка.

Область математики, изучающая векторы и матрицы, называется линейной алгеброй.

На этом занятии мы рассмотрим два аспекта векторных и матричных вычислений. Во-первых, посмотрим на удобный способ умножения одного вектора на другой. Во-вторых, посмотрим как мы можем рассчитать угол между двумя векторами.

Умножение векторов

Вспомним, как мы делали прогноз с помощью нашей модели. Мы умножали вес (наклон) на значение независимой переменной и прибавляли ошибку (сдвиг). Когда у нас несколько независимых переменных и несколько весов, нам нужно их попарно перемножить и сложить произведения.

Если представить и веса, и значения независимых переменных с помощью векторов, то можно воспользоваться инструментом, который называется скалярным произведением векторов (dot product), чтобы получить прогнозное значение (ŷ).


Работа над ошибками. На видео представлена иная схема расположения векторов (см. скриншот ниже), а именно вектор-столбец весов мы умножаем на вектор-строку данных.

Исправление неточности. Схема скалярного произведения векторов.

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

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

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

Добавлю, что если вы не вполне поняли, что это значит, ничего страшного, на следующем курсе мы во всем разберемся.


Скалярное произведение векторов на Питоне

На Питоне это реализовано с помощью библиотеки Numpy. До сих пор мы создавали массивы Numpy в, скажем так, служебных целях, чтобы использовать их, например, в моделях Scikit-learn.

Сегодня рассмотрим эти массивы сами по себе. По сути, массив Numpy (Numpy array), это и есть вектор или матрица. Давайте посмотрим, как создать такой массив, и как перемножить два вектора.

Вначале откроем ноутбук к этому занятию

Вначале разберемся с основами работы с массивами.

Теперь мы готовы умножить один вектор на другой.

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

Теперь посмотрим на угол между векторами.

Угол между векторами

Представление данных в форме вектора имеет ещё одно полезное свойство. Мы можем измерить близость двух векторов или угол между ними. Чем угол меньше, тем они ближе.

угол между векторами, косинусное сходство

Посмотрим на формулу.

$$ \cos(\theta )={\mathbf {b} \cdot \mathbf {c} \over \|\mathbf {b} \|\|\mathbf {c} \|} $$

В этой формуле мы умножаем один вектор на другой и делим на произведение их длин. Результатом будет косинус угла θ между ними. Зная косинус, мы можем найти сам угол в градусах.

Косинусное сходство с помощью Питона

В первую очередь найдем косинус угла по формуле, приведенной выше.

Теперь рассчитаем угол в градусах

Как мы видим угол чрезвычайно мал, а значит векторы очень близки друг к другу.

Мы будем на практике применять косинусное сходство или близость векторов, например, при построении рекомендательных систем для сопутствующих товаров в интернет-магазине. Когда вы покупаете, например, холодильник, то микроволновую печь вам рекомендуют именно потому, что вектор ваших покупок очень близок к вектору покупок тех, кто купил микроволновку.

Подведем итог

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

В частности, мы посмотрели на то, как умножить один вектор на другой через скалярное произведение векторов, а также научились вычислять косинусное сходство между двумя векторами.

Вопросы для закрепления

Какие два вектора мы перемножаем для того, чтобы сделать прогноз?

Посмотреть правильный ответ

Какое расстояние (сходство) помогает определить близость векторов?

Посмотреть правильный ответ

Дополнительные упражнения⧉ вы найдете в конце ноутбука.

Последний штрих

Прежде чем перейти к построению моделей остается последний штрих: научиться разделять данные, на которых мы будем обучать модель.