Освоение линейной регрессии с нуля в Python: руководство для начинающих

Линейная регрессия – это фундаментальный алгоритм в машинном обучении и статистике, который позволяет нам понимать и прогнозировать взаимосвязь между переменными. В этом сообщении блога мы окунемся в мир линейной регрессии и узнаем, как реализовать ее с нуля с помощью Python. Не волнуйтесь, если вы новичок в программировании или машинном обучении: мы будем сопровождать вас шаг за шагом.

Давайте начнем!

Понимание линейной регрессии.
Прежде чем мы перейдем к программированию, давайте поймем основную концепцию линейной регрессии. Проще говоря, линейная регрессия направлена ​​на поиск наиболее подходящей линии, которая представляет связь между независимой переменной (x) и зависимой переменной (y). Линия определяется двумя параметрами: наклоном (м) и пересечением (b).

Метод 1: использование метода наименьших квадратов (OLS):
Метод обычных наименьших квадратов (OLS) — один из наиболее распространенных подходов к решению задач линейной регрессии. Он минимизирует сумму квадратов остатков, чтобы найти оптимальные значения наклона и точки пересечения.

Вот пример реализации линейной регрессии с использованием метода МНК:

import numpy as np
def linear_regression_ols(x, y):
    n = len(x)
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    slope = np.sum((x - x_mean) * (y - y_mean)) / np.sum((x - x_mean)  2)
    intercept = y_mean - slope * x_mean
    return slope, intercept
# Example usage
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
slope, intercept = linear_regression_ols(x, y)
print("Slope:", slope)
print("Intercept:", intercept)

Метод 2: использование градиентного спуска.
Градиентный спуск — еще один популярный алгоритм оптимизации, используемый в линейной регрессии. Он итеративно корректирует параметры, чтобы минимизировать функцию стоимости. Вот как можно реализовать линейную регрессию с помощью градиентного спуска:

def linear_regression_gradient_descent(x, y, learning_rate=0.01, epochs=100):
    n = len(x)
    slope = 0
    intercept = 0
    for _ in range(epochs):
        y_pred = slope * x + intercept
        slope_gradient = (-2 / n) * np.sum(x * (y - y_pred))
        intercept_gradient = (-2 / n) * np.sum(y - y_pred)
        slope -= learning_rate * slope_gradient
        intercept -= learning_rate * intercept_gradient
    return slope, intercept
# Example usage
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
slope, intercept = linear_regression_gradient_descent(x, y)
print("Slope:", slope)
print("Intercept:", intercept)

Метод 3: использование функции Polyfit NumPy:
Если вы предпочитаете более краткий подход, вы можете использовать функцию Polyfit NumPy, которая подгоняет полином степени 1 (линию) к данным с использованием метода наименьших квадратов. Вот пример:

import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
slope, intercept = np.polyfit(x, y, deg=1)
print("Slope:", slope)
print("Intercept:", intercept)

В этой записи блога мы рассмотрели несколько методов реализации линейной регрессии с нуля в Python. Мы рассмотрели метод обычных наименьших квадратов (OLS), градиентный спуск и даже удобный вариант с использованием функции Polyfit NumPy. Линейная регрессия – мощный инструмент для понимания и прогнозирования взаимосвязей между переменными. Овладение им – решающий шаг на пути специалиста по данным или энтузиаста машинного обучения.

Итак, экспериментируйте с этими методами. Приятного кодирования!