Найти в Дзене
Программист о Data Science

День 10: Вектора в матрице

Если мы представили какой-то объект в виде вектора чисел (каждое число как-то характеризует объект), то множество таких объектов, описанных в виде векторов, как правило, объединяют в матрицу. Вычисления над матрицами более эффективны и наглядны, чем над каждым вектором отдельно. На данный момент реализованы очень эффективные алгоритмы для многих операций над матрицами, которые преобразовывают матрицу в целом или частично, а не итеративно проходя и меняя каждый из её элементов. Задачи машинного обучения в большой своей массе сводятся к нахождению принципов того как одни объекты зависят от других или как выразить одни объекты через другие, так как одни объекты у нас есть, а другие хотелось бы узнать. Например, имея описание квартиры, определить время необходимое на её продажу квартиры. Если квартиру мы представим в виде вектора, а все квартиры, которые надо проанализировать в виде матрицы X, то результат нашей функции предсказания - время реализации каждой квартиры - представляется в вид
Ну не мог я не сделать эту отсылку...
Ну не мог я не сделать эту отсылку...

Если мы представили какой-то объект в виде вектора чисел (каждое число как-то характеризует объект), то множество таких объектов, описанных в виде векторов, как правило, объединяют в матрицу. Вычисления над матрицами более эффективны и наглядны, чем над каждым вектором отдельно. На данный момент реализованы очень эффективные алгоритмы для многих операций над матрицами, которые преобразовывают матрицу в целом или частично, а не итеративно проходя и меняя каждый из её элементов.

Матрица m x n. Строки - объекты, ранее представленные в виде векторов.
Матрица m x n. Строки - объекты, ранее представленные в виде векторов.

Задачи машинного обучения в большой своей массе сводятся к нахождению принципов того как одни объекты зависят от других или как выразить одни объекты через другие, так как одни объекты у нас есть, а другие хотелось бы узнать. Например, имея описание квартиры, определить время необходимое на её продажу квартиры. Если квартиру мы представим в виде вектора, а все квартиры, которые надо проанализировать в виде матрицы X, то результат нашей функции предсказания - время реализации каждой квартиры - представляется в виде вектора y:

Каждая строка матрицы X - это описание конкретной квартиры с помощью n её признаков. Анализируем m квартир с помощью некой функции predict. Результат ожидаем в виде вектора, где на каждой строке указано время реализации квартиры, описанной на соответствующей строке в матрице.
Каждая строка матрицы X - это описание конкретной квартиры с помощью n её признаков. Анализируем m квартир с помощью некой функции predict. Результат ожидаем в виде вектора, где на каждой строке указано время реализации квартиры, описанной на соответствующей строке в матрице.

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

-0.3 - коэффициент влияния популярности квартиры, 2 - коэффициент влияния стоимость квартиры на время реализации квартиры
-0.3 - коэффициент влияния популярности квартиры, 2 - коэффициент влияния стоимость квартиры на время реализации квартиры

В общем виде подобный тип зависимости можно выразить в виде линейного уравнения:

w - коэффициент, x - признак, x - искомый объект
w - коэффициент, x - признак, x - искомый объект

Либо в нашем случае - это будет система линейных уравнений по количеству анализируемых квартир:

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

Я думаю, достаточно очевидно к чему я клоню. Представим коэффициенты виде отдельного вектора w:

Обратите внимание на количество элементов в этом векторе - оно соответствует количеству колонок нашей матрицы, то есть количеству признаков, а не строк.
Обратите внимание на количество элементов в этом векторе - оно соответствует количеству колонок нашей матрицы, то есть количеству признаков, а не строк.

Тогда всё выражение по предсказанию времени реализации квартир в виде вектора y из матрицы признаков квартир X, используя коэффициенты w можно записать следующим образом:

Как просто!
Как просто!

На уровне элементов это бы выглядело так:

Обратите внимание на размерности векторов и матриц - где m, а где n.
Обратите внимание на размерности векторов и матриц - где m, а где n.

То есть умножение матрицы на вектор раскладывается в систему линейных уравнений, описанных выше. Формально умножение X * w можно описать так:

Результатом умножения матрицы на вектор всегда будет вектор.
Результатом умножения матрицы на вектор всегда будет вектор.
Если внимательно посмотреть на формулу умножения Xw = y в виде элементов, то можно представить, что матрица X в данном случае - это функция преобразования вектора w из размерности n в размерность m. Мысль о том, что матрица - может представлять собой функцию преобразования, меня немного впечатлила. В дальнейшем, мы еще вернемся к этой идее и разовьём её.

На этот раз получилось вообще не практично, но мы немного коснулись конкретного прикладного аспекта функций-предсказаний и я неплохо так потренировался в составлении формул на LaTeX. Так последнее выражение Xw описывается следующим образом:

Не забудьте сменить тип ячейки в Jupyter на Markdown прежде чем вписывать туда это выражение. Попробуйте. пригодится.
Не забудьте сменить тип ячейки в Jupyter на Markdown прежде чем вписывать туда это выражение. Попробуйте. пригодится.