Линейная регрессия широко используется в статистике и машинном обучении, главным образом, для предиктивного анализа, такого как оценка тенденций и т. д.
Проще говоря, это в основном соответствует прямой линии
к набору точек
Среди миллионов множества возможных прямых,
мы стремимся выбрать тот, у которого наименьшая ошибка
Эквивалентно;
Чтобы минимизировать ошибку, берем производные по b0 и b1 ищем точки, в которых они равны 0.
Решая их, получаем,
И получается следующая система уравнений,
Пришло время написать кусок кода для вышеприведенной математики.
Мы сравним решение с методом линейной регрессии популярного модуля машинного обучения scikit-learn.
Позвольте мне оставить эту мусорную работу как функцию здесь, чтобы каждый мог использовать и вносить свой вклад.
Давайте рассмотрим более общий сценарий, используя этот метод, мы можем подогнать любую кривую к заданному набору данных. Предположим, что у нас есть следующее уравнение кривой
Находим ошибку,
Чтобы минимизировать ошибку, продифференцируем по обеим переменным:
Он превращается в систему уравнений,
И может быть переписан в матрично-векторной форме следующим образом.
Вот реализация этого алгоритма на Python:
Спасибо за прочтение. Пожалуйста, оставьте комментарий для любого вклада или предложения.
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА:
[1] Уорд Чейни, Дэвид Кинкейд, Численная математика и вычисления, 6-е издание, 6-е издание.