Линейная регрессия — один из самых основных алгоритмов машинного обучения, но часто это первые алгоритмы, изучаемые в классе или учебнике по машинному обучению, поскольку он по-прежнему содержит все основные элементы алгоритма машинного обучения с учителем. Одна из основных причин, по которой линейная регрессия до сих пор изучается как алгоритм машинного обучения, заключается в том, что она имеет аналитические выражения для своих параметров. Это также делает линейную регрессию одним из самых простых алгоритмов машинного обучения для реализации вручную. В этом руководстве вы узнаете, как создать код Python, который реализует решение в закрытой форме для алгоритма линейной регрессии.
Линейная регрессия
Результат алгоритма линейной регрессии можно записать как
где X — вход алгоритма, а 𝜃 — вектор постоянных параметров. Часть алгоритма «машинного обучения» настраивает 𝜃 так, чтобы
В машинном обучении функция потерь измеряет ошибку в прогнозе алгоритма на основе истинных данных. Функция потерь для алгоритма линейной регрессии представляет собой функцию среднеквадратичной ошибки:
где
Функция потерь может быть записана в матрично-векторной форме как:
Оптимальные значения 𝜃 — это те, которые делают вывод алгоритма линейной регрессии таким же, как истинные данные. Другой способ сформулировать это так: оптимальные значения 𝜃 — это значения, минимизирующие функцию потерь. Таким образом, линейная регрессия становится простой задачей минимизации!
Минимизация функции потерь по параметрам 𝜃 дает:
Решение для 𝜃 дает оптимальные параметры, значения 𝜃, которые максимально приближают выходные данные алгоритма линейной регрессии к истинным данным. Преобразовав приведенное выше уравнение, мы получим:
Это все «машинное обучение», которое делает линейная регрессия, простая минимизация!
Код Python
Чтобы написать код Python с нуля, который выполняет линейную регрессию, нам просто нужно написать код, который находит оптимизированные значения 𝜃 с учетом матрицы X и вектора y, которые соответствуют входным данным и истинному набору данных. Написание такой функции будет выглядеть следующим образом: