Введение:

В современном мире существует множество различных алгоритмов. Прежде чем углубляться в более сложные методы, важно усвоить основы. Одним из таких основополагающих алгоритмов является линейная регрессия. В этом руководстве мы предоставим всестороннее понимание линейной регрессии, включая ее основные концепции, реализацию в коде и распространенные вопросы на собеседованиях.

Что такое линейная регрессия?

Линейная регрессия — это контролируемый алгоритм машинного обучения. Обучение с учителем подразумевает, что данные помечены и содержат как входные, так и выходные столбцы. Хотя входные значения могут быть непрерывными или дискретными, выходной столбец должен быть непрерывным.

Набор данных состоит из входных столбцов и выходных меток, а линейная регрессия специально подходит для прогнозирования непрерывных числовых значений. Основная цель линейной регрессии — делать прогнозы, изучая взаимосвязь между входными и выходными данными. Этот метод полезен для таких задач, как прогнозирование цен или температур.

Что такое допущения в статистическом моделировании?

И в статистике, и в математике предположения играют решающую роль в формировании основы и применимости теорий, моделей и методов. Явления реального мира часто сложны и включают в себя множество факторов. Предположения помогают упростить задачу, сосредоточив внимание на конкретных аспектах проблемы.

Итак, всякий раз, когда вы сталкиваетесь с вероятностной задачей и слышите слова «подбрасывание честной монеты», это как небольшой сигнал о том, что мы начинаем с чего-то простого и знакомого. Итак, что такое «честная монета»? Что ж, думайте об этом как о дружественной монете, которая очень беспристрастна — когда мы ее подбрасываем, у нее с такой же вероятностью выпадет орел, как и решка. Мы называем это «справедливостью».

Но вот что становится интересным, эта честная монета? На самом деле это предположение, которое мы делаем, чтобы упростить задачу. Это все равно, что сказать: «Эй, давайте представим, что у этой монеты нет никаких хитрых трюков в рукаве». Итак, когда вы слышите о подбрасывании честной монеты в вероятностной задаче, это все равно, что сказать: «Хорошо, давайте представим себе этот простой сценарий, который поможет нам понять более широкую картину». Точно так же, как когда вы объясняете что-то своим друзьям на своем любимом примере — главное, чтобы все было понятно и весело!

Предположения о линейной регрессии?

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

  1. Линейность. Линейная регрессия предполагает, что связь между независимыми переменными и средним значением зависимой переменной является линейной.
  2. Гомоскедастичность. Дисперсия ошибок должна быть постоянной на всех уровнях независимых переменных. Это означает, что разброс ошибок должен быть одинаковым для всех значений независимых переменных.
  3. Независимость. Наблюдения в наборе данных должны быть независимы друг от друга. Другими словами, наблюдения не должны коррелировать друг с другом.
  4. Нормальность: ошибки должны быть распределены нормально. Это предположение важно для того, чтобы сделать выводы о параметрах модели и сделать прогнозы.

Теоретическое объяснение:

  • Собирайте данные с двумя типами информации: о том, что вы хотите спрогнозировать (например, цены), и о факторах, которые могут на это повлиять (например, размер).
  • Нанесите свои данные на график (графики X и Y). Каждая точка показывает факторы (X) и то, что вы прогнозируете (Y).
  • Нарисуйте линию, представьте, что вы проводите линию через эти точки. Эта линия должна быть как можно ближе к большинству точек.
  • Найдите уравнение этой прямой. Это похоже на выяснение того, как вычислить Y из X, используя наклон линии и место ее пересечения с осью Y (пересечение).
  • Изучая наклон и точку пересечения, алгоритм корректирует наклон линии и точку пересечения по оси Y, чтобы минимизировать разницу между прогнозируемыми и фактическими значениями Y.
  • Теперь, когда у вас есть линия, вы можете ввести новые значения X и получить прогнозируемые значения Y.
  • Сравните прогнозируемые значения Y с фактическими значениями Y в ваших данных. Посмотрите, насколько ваша линия приближается к реальности.
  • При необходимости откорректируйте линию, чтобы она лучше подходила. Алгоритм продолжает попытки до тех пор, пока линия не подойдет достаточно хорошо.
  • В разделе «Понимание результатов» теперь вы можете использовать линию для прогнозирования значений Y для новых значений X. Уравнение и линия дают представление о том, как факторы влияют на прогноз.
  • Помните, линейная регрессия — это не волшебство. Лучше всего он работает, когда ваши данные соответствуют предположениям и когда вы задумываетесь об их ограничениях.

Математическое объяснение:

Вот математика самого важного алгоритма линейной регрессии

  1. Уравнение:

y = mx + c

Где m — наклон, c — точка пересечения, x — независимая переменная, y — зависимая переменная.

Наша цель — подобрать линию наилучшего соответствия, что означает, что нам нужно найти наилучшее значение m и c для нашего набора данных. Мы не собираемся использовать прямую математическую формулу для поиска наилучшего значения m и c, вместо этого мы собираемся использовать функцию стоимости. Функция стоимости вычисляет ошибку или потерю между прогнозируемыми значениями и фактическими значениями.

Ошибка = фактическое значение — прогнозируемое значение

2. Функция стоимости: определяет разницу между фактическим значением и прогнозируемым значением. Функция стоимости также известна как функция остатка/потери. В линейной регрессии мы обычно используем среднеквадратическую ошибку (MSE) для расчета функции стоимости.

Где n — количество точек данных, yᵢ — фактическое значение, xᵢ — входное значение, y^ — прогнозируемое значение.

Итак, теперь, каково наилучшее значение m и c, значение m и c, с помощью которого мы вычисляем функцию стоимости, которая дает наименьшее значение функции стоимости, считается лучшими значениями m и c.

3. Градиентный спуск:Это метод оптимизации, который используется в линейной регрессии. Он вычисляет частные производные функции стоимости с соответствующими m и c. Это помогает найти оптимальные значения параметров путем итеративной корректировки их в направлении уменьшения функции стоимости.

4. Обновить параметры (значения m и c):

Обновите m и c, используя значения градиента и скорость обучения (α), чтобы контролировать размер шага.

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

Вы начинаете со случайных значений m и c и смотрите, насколько далеко линия находится от точек (это «стоимость»). Вы хотите минимизировать эти затраты, чтобы получить наиболее подходящую леску. Для этого вы неоднократно рассчитываете, насколько вам следует скорректировать m и c, глядя на наклон кривой затрат, называемый градиентами. Вы делаете небольшие шаги в направлении снижения затрат. С каждым шагом ваша линия приближается к той, которая лучше всего соответствует точкам. По мере того, как вы продолжаете идти, линия в конечном итоге успокаивается, и m и c перестают сильно меняться. Именно тогда вы нашли оптимальную линию, соответствующую вашим данным.

Кодирование:

# Step 1: Import necessary libraries
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_diabetes

# Step 2: Load the dataset
data = load_diabetes()
X = data.data  # Input features
y = data.target  # Target variable

# Step 3: Split the dataset into training and testing sets
X_train, X_test, y_train, y_test= train_test_split(X, y, 
    test_size=0.2, random_state=42)

# Step 4: Create a linear regression model
model = LinearRegression()

# Step 5: Train the model on the training data
model.fit(X_train, y_train)

# Step 6: Make predictions on the test data
y_pred = model.predict(X_test)

# Step 7: Print slope (coefficients) and intercept
print("Slope (Coefficients):", model.coef_)
print("Intercept:", model.intercept_)

# Step 8: Evaluate the model
mse = np.mean((y_pred - y_test) ** 2)  # Mean Squared Error
print("Mean Squared Error:", mse)

# Step 9: Visualize the results (optional)
plt.scatter(y_test, y_pred)
plt.xlabel("Actual values")
plt.ylabel("Predicted values")
plt.title("Actual vs. Predicted values")
plt.show()

Преимущества:

  1. Простота. Линейную регрессию легко понять и реализовать, что делает ее отличной отправной точкой для моделирования взаимосвязей между переменными.
  2. Интерпретируемость. Коэффициенты линейной регрессии имеют четкую интерпретацию. Они показывают, как изменение единицы измерения независимой переменной влияет на зависимую переменную. Универсальность: линейная регрессия может применяться в различных областях, от экономики до естественных наук, и может обрабатывать как простые, так и сложные отношения.
  3. Быстрые вычисления. Вычисление коэффициентов в линейной регрессии эффективно с точки зрения вычислений даже для больших наборов данных, что позволяет ускорить обучение модели. Базовый уровень
  4. Сравнение. Линейная регрессия предоставляет базовую модель для оценки производительности более сложных алгоритмов. Если он работает хорошо, возможно, нет необходимости в более продвинутых методах.

Недостатки:

  1. Предположение о линейности. Линейная регрессия предполагает линейную связь между переменными, которая может не соблюдаться для всех наборов данных. Он может пропустить сложные закономерности.
  2. Чрезмерное упрощение. Когда отношения действительно нелинейны, использование линейной регрессии может привести к значительным ошибкам и плохим прогнозам.
  3. Чувствительность к выбросам. Линейная регрессия чувствительна к выбросам, которые могут непропорционально влиять на коэффициенты и прогнозы модели.
  4. Ограничено числовыми входными данными: сложно включить категориальные или качественные данные непосредственно в линейную регрессию без преобразований.
  5. Недостаточное соответствие. Если истинная связь между переменными не является линейной, линейная регрессия будет неэффективной, поскольку она не сможет выявить более сложные закономерности.

Вопрос на собеседовании:

  1. Какова цель функции стоимости в линейной регрессии?
  2. Как определяется наиболее подходящая линия в линейной регрессии?
  3. В чем разница между простой линейной регрессией и множественной линейной регрессией?
  4. Какие предположения лежат в основе линейной регрессии?
  5. Почему среднеквадратическая ошибка (MSE) обычно используется в качестве функции стоимости в линейной регрессии?
  6. Почему градиентный спуск обычно используется в качестве оптимизатора в линейной регрессии?

Что дальше!

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

Вы также можете подписаться на меня в LinkedIn

Большое спасибо, что дочитали до конца. Хорошего дня!