Урок 1

Кратко:

  • Математика является основой машинного обучения, а линейная алгебра позволяет моделям работать с большими данными и выполнять сложные расчёты.
  • Специалисты по Data Science со знанием математики востребованы на рынке.
  • В этой статье представлен специальный курс по линейной алгебре для Data Science.
  • Курс научит основам линейной алгебры, использованию линала в программировании с помощью библиотеки numpy, нахождению коэффициентов линейной регрессии для больших датасетов и предсказанию целевого признака с помощью модели линейной регрессии.

Урок 2

Кратко:

  • Векторы и линейная алгебра важны для Data Science.
  • Библиотека numpy на Python, С и Fortran используется для выполнения расчетов линейной алгебры.
  • Метод наименьших квадратов используется для нахождения оптимальной формулы целевого признака.
  • Линейная алгебра изучает векторы и матрицы, которые являются основными понятиями этой области.
  • Векторы в линейной алгебре могут быть представлены как массивы в библиотеке numpy.
  • Векторы и матрицы облегчают и ускоряют математические расчеты при работе с большими таблицами

Задача 1

Выводы

  • Базовое понятие линейной алгебры — вектор.
  • В Python для работы с векторами используют библиотеку numpy. В терминах этой библиотеки вектор называют массивом.
  • Любой признак или объект в датафрейме можно представить как массив. Это облегчает и ускоряет математические расчёты при работе с большими таблицами.

Урок 3

Кратко:

  • Векторы складываются, вычитаются, умножаются и делятся.
  • Векторы принадлежат к одному n-мерному пространству.
  • Сложение векторов: vector_d = vector_a + vector_b + vector_c.
  • Вычитание векторов: vector_c = vector_a - vector_b.
  • Умножение векторов на число: vector_b = vector_a * k или vector_b = np.multiply(vector_a, k).
  • Деление векторов на число: vector_b = vector_a / k или vector_b = np.divide(vector_a, k).
  • Поэлементное умножение векторов: vector_c = np.multiply(vector_a, vector_b).
  • Поэлементное деление векторов: vector_c = np.divide(vector_a, vector_b)

Задача 1

Задача 2

Задача 3

Задача 4

Задача 5

Задача 6

Выводы

  • Векторы складывают, вычитают, умножают и делят. При этом умножить и разделить вектор можно как на число — скаляр, так и на другой вектор. Умножение и деление векторов друг на друга называют поэлементным.
  • Поскольку любой признак или строку можно представить как вектор, все векторные операции проводят с данными.
  • В numpy для векторных операций используют операторы +, -, * и /. Кроме того, поэлементное умножение массивов также можно выполнить с помощью функции multiply, а поэлементное деление — функцией divide.

Урок 4

Кратко:

  • Скалярное произведение - результат умножения длин двух векторов на косинус угла между ними.
  • Скалярное произведение можно рассчитать для векторов одного n-мерного пространства.
  • Поэлементно умножение векторов можно использовать для расчета скалярного произведения.
  • В numpy скалярное произведение можно получить с помощью оператора * или функции multiply, а также с помощью функции dot.
  • Скалярное произведение используется в машинном обучении и анализе данных

Задача 1

Задача 2

Выводы

  • Скалярное произведение — это умножение длин двух векторов одного − n−мерного пространства друг на друга и косинус угла между векторами. Такую операцию часто используют в машинном обучении.
  • Теперь вы умеете рассчитывать скалярное произведение и «вручную», и двумя способами в numpy.

Урок 5

Кратко:

  • Сходство векторов важно для задач классификации и рекомендации в машинном обучении.
  • Косинусное сходство и косинусное расстояние - популярные метрики для сравнения векторов.
  • Косинусное сходство основано на косинусе угла между векторами, показывает схожесть направления векторов.
  • Евклидово расстояние - еще один популярный метод сравнения векторов, учитывает длину векторов.
  • Выбор метрики зависит от задачи: косинусное расстояние полезно для сравнения векторов по направлению, евклидово - для сравнения векторов по элементам.

Задача 1

Задача 2

Задача 3

Задача 4

Выводы

  • В машинном обучении часто используют метрики расстояния между векторами. Это помогает в поиске похожих объектов в рекомендательных системах, в обработке естественного языка, компьютерном зрении и других областях.
  • Есть несколько методов сравнить векторы. Например, посчитать их косинусное сходство, косинусное расстояние между ними — либо евклидово расстояние. В этом уроке вы научились вычислять эти метрики с помощью numpy и scipy.

Урок 6

Кратко:

  • Матрицы - это таблицы с числами, которые позволяют проводить линейные алгебраические операции.
  • Матрицы обозначаются заглавной буквой A, а элементы матрицы - строчной a_ij.
  • Размер матрицы описывается как m× n, где m - количество строк, а n - столбцов.
  • Матрицы делятся на несколько видов: квадратная, прямоугольная, диагональная, треугольная, единичная, нулевая, матрица-вектор и матрица-столбец.
  • Матрицы в numpy - это многомерные массивы, которые можно создавать из вложенных списков с помощью функции np.array.
  • Функция reshape позволяет изменить форму массива и сделать матрицу из вектора. Транспонирование матриц может быть полезно для умножения матриц и других операций

Задача 1

Задача 2

Задача 3

Выводы

  • В линейной алгебре есть аналог таблицы с данными — матрица. Её главное свойство — размер, или порядок, формата m×n, где m — количество строк, а n — столбцов.
  • Выделяют несколько видов матриц: квадратная, прямоугольная, диагональная, треугольная, единичная, нулевая, а ещё матрица-вектор и матрица-столбец.
  • Чтобы обработать датасет как матрицу средствами numpy, нужно преобразовать его в многомерный массив одной из функций этой библиотеки. Сделать многомерный массив numpy из вложенного списка можно функцией array.
  • Для некоторых операций машинного обучения, например работы некоторых алгоритмов, нужны массивы определённой формы. Один из способов изменить форму матрицы — применить функцию reshape.
  • Бывает, что нужно поменять местами столбцы и строки матрицы — транспонировать её. Сделать это в numpy можно с помощью функции transpose или атрибута T.

Урок 7

Кратко:

  • Матрицы используются для быстрой обработки данных и могут подвергаться поэлементным операциям.
  • Сложение, вычитание, умножение и деление матриц выполняются по элементам и должны быть одного размера.
  • В numpy матричные операции также проводятся по схеме векторов.
  • Задачи включают сложение и вычитание матриц, поэлементное деление и умножение на скаляр, а также умножение и деление матриц на скаляр.
  • Для проведения матричных операций в numpy используются те же операторы и функции, что и для векторов

Задача 1

Задача 2

Задача 3

Выводы

  • С матрицами можно проводить все те же поэлементные операции, что и с векторами. К ним относятся сложение и вычитание матриц, поэлементные умножение и деление, а ещё умножение и деление на скаляр.
  • Чтобы провести такие матричные операции в numpy, нужны те же операторы и функции, что и для аналогичных действий с векторами.

Урок 8

Кратко:

  • Матричное умножение - важная операция с матрицами, позволяющая решать системы уравнений и решать реальные задачи МО.
  • Матричное умножение основано на умножении матриц по очереди, учитывая порядок и размерность матриц.
  • Результат матричного умножения - новая матрица с тем же количеством строк и столбцов, что и исходные матрицы.
  • Матричное умножение возможно только при условии равенства количества столбцов и строк матриц.
  • Формула для матричного умножения: каждый элемент новой матрицы равен скалярному произведению строк и столбцов исходных матриц.
  • В numpy матричное умножение можно выполнить с помощью функции matmul или оператора @.
  • Матричное умножение является важной операцией в машинном обучении и основано на многих моделях МО.
  • Поэлементное умножение матриц не подходит для решения реальных задач и не является матричным умножением.
  • В матричном умножении важен порядок и нельзя менять местами множимое и множитель.
  • Количество столбцов первой матрицы должно совпадать с количеством строк второй, чтобы матричное умножение было возможно

Задача 1

Задача 2

Выводы

  • Матричное умножение — одна из самых важных операций с матрицами в машинном обучении. На нём основаны многие модели МО.
  • Матричное умножение не то же самое, что поэлементное умножение матриц. Во-первых, эти действия проводят для разных задач. Во-вторых, в отличие от поэлементных операций, в результате матричного умножения может получиться матрица новой формы. То есть не такой, как у матрицы-множимого или матрицы-множителя.
  • Можно перемножить сколько угодно матриц, но эта операция всегда сводится к последовательному умножению двух.
  • В матричном умножении важен порядок. Менять местами множимое и множитель нельзя, иначе получится другое действие.
  • Перемножить матрицы — значит вычислить все координаты матрицы-произведения. Каждая координата новой матрицы — это скалярное произведение одной из строк матрицы-множимого на один из столбцов матрицы-множителя. Если C=AB, то любой элемент матрицы C — c(ij) — равен скалярному произведению i-го вектора-строки A с j-м вектором-столбцом B. Поэтому, чтобы умножение матриц было возможно, число столбцов первой матрицы должно совпадать с количеством строк второй. Тогда у перемножаемых векторов будет одинаковая размерность.

Урок 9

Кратко:

  • Формула для расчёта определителя: |A| = ∑_j=1^na_1jA_1j.
  • В numpy есть функция np.linalg.det для мгновенного расчёта определителя матрицы

Задача 1

Выводы

  • Определитель, или детерминант, — это расчётное число-характеристика квадратной матрицы. Его используют в математике и Data Science. Обозначение детерминанта матрицы A — ∣A∣ или det(A).
  • Чтобы найти определитель матрицы более чем второго порядка, нужно знать алгебраические дополнения элементов одной из строк этой матрицы.
  • Алгебраическое дополнение элемента можно рассчитать по его минору.
  • Минор M(ij) элемента a(ij) — это определитель подматрицы, которая получается из всех элементов исходной матрицы A, кроме элементов в строке i и столбце j.

Урок 10

Кратко:

  • Обратные матрицы используются в линейной регрессии для установления зависимости между целевым и входными признаками.
  • Обратная матрица может быть найдена по формуле A^-1 = 1/|A|Ã^T, где A - исходная матрица, Ã - союзная матрица, 1/|A| - детерминант матрицы A, а Ã^T - транспонированная союзная матрица.
  • Обратная матрица существует только у невырожденной квадратной матрицы, у которой детерминант отличен от нуля.
  • Вырожденные матрицы имеют нулевой детерминант и не имеют обратной матрицы.
  • Линейная регрессия использует обратные матрицы для установления зависимости между целевым и входными признаками

Задача 1

Выводы

  • Чтобы установить зависимость целевого признака от входных, алгоритм линейной регрессии использует обратные матрицы.
  • Для расчёта обратной матрицы нужен детерминант, отличный от нуля. Если детерминант равен нулю, значит, строки или столбцы линейно связаны между собой, и обратной матрицы не существует. Матрицы с нулевым детерминантом называют вырожденными. Обратные матрицы есть только у невырожденных квадратных матриц

Урок 11

Кратко:

  • Окончили экспресс-курс по линейной алгебре, готовы к линейной регрессии.
  • Цель: представить табличные данные в виде матриц для линейной регрессии.
  • Входные данные: характеристики квартир, общая и жилая площадь, высота потолка, количество комнат, расстояние от центра города, количество лет с момента ремонта, цена квартиры.
  • Массивы numpy: матрица X, матрица Y, матрица X для тестовой выборки, матрица Y для тестовой выборки.
  • Подготовка массивов: загрузка данных из CSV, создание датафреймов pandas, перевод в numpy.
  • Работа с элементами массива numpy: обращение к элементам, срезы.
  • Изменение строк, столбцов, срезы массива numpy.
  • Создание новых признаков, добавление констант в матрицу X

Задача 1

Задача 2

Задача 3

Задача 4

Задача 5

Задача 6

Задача 7

Задача 8

Задача 9

Выводы

  • Чтобы модель линейной регрессии могла обработать данные, их нужно представить в виде массивов numpy.
  • Если вы работаете с датасетом в CSV-файле, сначала его надо загрузить в систему как датафрейм pandas и затем перевести в массив numpy с помощью функции df.to_numpy().
  • Массивы numpy можно сохранять в файлы особого формата NPY. Им часто пользуются, чтобы зафиксировать промежуточный результат обработки матриц. Если вы имеете дело с NPY-файлом, его можно прочитать с помощью функции load. Сохранить матрицу в этом формате — функцией save.
  • Помимо представления данных в виде массива numpy для работы линрега в матрицы входных признаков нужно добавить столбец констант со значением единицы. Это позволит рассчитать скалярное произведение векторов с входными признаками на векторы с коэффициентами функции, а значит, найти целевой признак. Как известно, первый коэффициент линейной функции — свободный член w0 , который не нужно ни на что умножать. Благодаря константе-заглушке можно будет выполнить скалярное произведение и при этом оставить w0 прежним.
  • Иногда, чтобы подготовить массив к работе модели, в нём нужно создать новые столбцы или строки. Иногда — удалить лишние. Чтобы добавить строку, используйте команду insert. Добавить новый столбец можно ей же, только надо указать значение аргумента axis=1. Удалить строку можно командой delete, столбец — командой delete с аргументом axis=1.
  • Бывает, что нужно обратиться к отдельным элементам или срезам. Эти операции работают так же, как в списках.
  • С каждой выборкой данных нужно выполнить одни и те же действия, поэтому специалисты по Data Science пишут готовую функцию и по очереди применяют её ко всем матрицам

Урок 12

Кратко:

  • Линейная регрессия ищет целевой признак методом наименьших квадратов ошибок с помощью линейной алгебры.
  • Обучение линейной регрессии можно упростить с помощью линала, который позволяет находить коэффициенты w_n быстрее.
  • Формула для нахождения коэффициентов w_n с помощью линала: w = (X^TX)^-1X^Ty.
  • Обучение линейной регрессии с помощью линала включает пять шагов: транспонирование матрицы X, матричное умножение, обратная матрица, матричное умножение и матричное умножение на матрицу-строку y.
  • Код для обучения линейной регрессии с помощью линала может быть написан с использованием numpy.
  • Предсказания с матрицей коэффициентов линейной регрессии могут быть сделаны с помощью метода predict.
  • Работа линейной регрессии основана на линейной алгебре, что позволяет быстро обрабатывать большие данные

Задача 1

Задача 2

Задача 3

Задача 4

Задача 5

Задача 6

Задача 7

Выводы

  • Работа линейной регрессии основана на нескольких операциях линейной алгебры: транспонировании, поиске детерминанта с обратной матрицей и матричном умножении. Благодаря линалу модель может быстро обрабатывать большие данные.
  • Метод fit() линейной регрессии отвечает за поиск коэффициентов, а метод predict() — за предсказание целевого признака. Оба метода используют линейную алгебру.

Урок 13

Кратко:

  • Линейная алгебра используется в Data Science для предсказания и рекомендационных систем.
  • Рекомендательные системы используют матрицы соответствия для анализа данных.
  • Метод главных компонент позволяет сократить число признаков.
  • Линейная алгебра помогает обогащать данные, например, при распознавании изображений.
  • Математика часто является камнем преткновения на собеседованиях в Data Science.
  • Знание линейной алгебры помогает в Data Science и прохождении собеседований

Выводы

  • Большинство вычислений машинного обучения сводится к работе с векторами и матрицами.
  • Знание линейной алгебры увеличит шансы пройти собеседование на позицию DS и добиться успеха в этом деле.

Урок 14

Кратко:

  • Поздравляем с завершением экспресс-курса линейной алгебры для Data Science.
  • Линейная алгебра важна для машинного обучения и понимания алгоритмов моделей.
  • Вы научились математическим операциям с векторами и матрицами, включая сложение, вычитание, умножение, деление и скалярное произведение.
  • Освоили операции с векторами и матрицами в numpy, используя библиотеку линейной алгебры для Python.
  • Смогли создать модель линейной регрессии с помощью математических операций.
  • Научились вычислять коэффициенты линейной регрессии и предсказывать целевой признак.
  • В следующей теме вернётесь к алгоритму линейной регрессии, интерпретации результатов модели и метрикам её качества

Поздравляем с завершением экспресс-курса линейной алгебры для Data Science! Знаем, было ещё как непросто. Мы очень гордимся вами. Будьте уверены, новые знания вам пригодятся. Линейная алгебра всегда будет важна для машинного обучения. То, что вы изучили, поможет понимать алгоритмы моделей.

Чему вы научились

  • Математическим операциям с векторами и матрицами. Сложение, вычитание, умножение и деление на скаляр, поэлементное умножение и деление, скалярное произведение, матричное умножение, поиск определителя и обратной матрицы — всё это вам теперь по плечу.
  • Операциям с векторами и матрицами в numpy. Вы освоили новый инструмент — библиотеку линейной алгебры для Python.
  • Делать модель линейной регрессии с помощью математических операций. Теперь вы можете вычислять коэффициенты линейной регрессии, как метод fit(), и предсказывать целевой признак подобно методу predict().

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