Введение:
В современном мире существует множество различных алгоритмов. Прежде чем углубляться в более сложные методы, важно усвоить основы. Одним из таких основополагающих алгоритмов является линейная регрессия. В этом руководстве мы предоставим всестороннее понимание линейной регрессии, включая ее основные концепции, реализацию в коде и распространенные вопросы на собеседованиях.
Что такое линейная регрессия?
Линейная регрессия — это контролируемый алгоритм машинного обучения. Обучение с учителем подразумевает, что данные помечены и содержат как входные, так и выходные столбцы. Хотя входные значения могут быть непрерывными или дискретными, выходной столбец должен быть непрерывным.
Набор данных состоит из входных столбцов и выходных меток, а линейная регрессия специально подходит для прогнозирования непрерывных числовых значений. Основная цель линейной регрессии — делать прогнозы, изучая взаимосвязь между входными и выходными данными. Этот метод полезен для таких задач, как прогнозирование цен или температур.
Что такое допущения в статистическом моделировании?
И в статистике, и в математике предположения играют решающую роль в формировании основы и применимости теорий, моделей и методов. Явления реального мира часто сложны и включают в себя множество факторов. Предположения помогают упростить задачу, сосредоточив внимание на конкретных аспектах проблемы.
Итак, всякий раз, когда вы сталкиваетесь с вероятностной задачей и слышите слова «подбрасывание честной монеты», это как небольшой сигнал о том, что мы начинаем с чего-то простого и знакомого. Итак, что такое «честная монета»? Что ж, думайте об этом как о дружественной монете, которая очень беспристрастна — когда мы ее подбрасываем, у нее с такой же вероятностью выпадет орел, как и решка. Мы называем это «справедливостью».
Но вот что становится интересным, эта честная монета? На самом деле это предположение, которое мы делаем, чтобы упростить задачу. Это все равно, что сказать: «Эй, давайте представим, что у этой монеты нет никаких хитрых трюков в рукаве». Итак, когда вы слышите о подбрасывании честной монеты в вероятностной задаче, это все равно, что сказать: «Хорошо, давайте представим себе этот простой сценарий, который поможет нам понять более широкую картину». Точно так же, как когда вы объясняете что-то своим друзьям на своем любимом примере — главное, чтобы все было понятно и весело!
Предположения о линейной регрессии?
В линейной регрессии у нас в основном есть четыре типа предположений:
- Линейность. Линейная регрессия предполагает, что связь между независимыми переменными и средним значением зависимой переменной является линейной.
- Гомоскедастичность. Дисперсия ошибок должна быть постоянной на всех уровнях независимых переменных. Это означает, что разброс ошибок должен быть одинаковым для всех значений независимых переменных.
- Независимость. Наблюдения в наборе данных должны быть независимы друг от друга. Другими словами, наблюдения не должны коррелировать друг с другом.
- Нормальность: ошибки должны быть распределены нормально. Это предположение важно для того, чтобы сделать выводы о параметрах модели и сделать прогнозы.
Теоретическое объяснение:
- Собирайте данные с двумя типами информации: о том, что вы хотите спрогнозировать (например, цены), и о факторах, которые могут на это повлиять (например, размер).
- Нанесите свои данные на график (графики X и Y). Каждая точка показывает факторы (X) и то, что вы прогнозируете (Y).
- Нарисуйте линию, представьте, что вы проводите линию через эти точки. Эта линия должна быть как можно ближе к большинству точек.
- Найдите уравнение этой прямой. Это похоже на выяснение того, как вычислить Y из X, используя наклон линии и место ее пересечения с осью Y (пересечение).
- Изучая наклон и точку пересечения, алгоритм корректирует наклон линии и точку пересечения по оси Y, чтобы минимизировать разницу между прогнозируемыми и фактическими значениями Y.
- Теперь, когда у вас есть линия, вы можете ввести новые значения X и получить прогнозируемые значения Y.
- Сравните прогнозируемые значения Y с фактическими значениями Y в ваших данных. Посмотрите, насколько ваша линия приближается к реальности.
- При необходимости откорректируйте линию, чтобы она лучше подходила. Алгоритм продолжает попытки до тех пор, пока линия не подойдет достаточно хорошо.
- В разделе «Понимание результатов» теперь вы можете использовать линию для прогнозирования значений Y для новых значений X. Уравнение и линия дают представление о том, как факторы влияют на прогноз.
- Помните, линейная регрессия — это не волшебство. Лучше всего он работает, когда ваши данные соответствуют предположениям и когда вы задумываетесь об их ограничениях.
Математическое объяснение:
Вот математика самого важного алгоритма линейной регрессии
- Уравнение:
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()
Преимущества:
- Простота. Линейную регрессию легко понять и реализовать, что делает ее отличной отправной точкой для моделирования взаимосвязей между переменными.
- Интерпретируемость. Коэффициенты линейной регрессии имеют четкую интерпретацию. Они показывают, как изменение единицы измерения независимой переменной влияет на зависимую переменную. Универсальность: линейная регрессия может применяться в различных областях, от экономики до естественных наук, и может обрабатывать как простые, так и сложные отношения.
- Быстрые вычисления. Вычисление коэффициентов в линейной регрессии эффективно с точки зрения вычислений даже для больших наборов данных, что позволяет ускорить обучение модели. Базовый уровень
- Сравнение. Линейная регрессия предоставляет базовую модель для оценки производительности более сложных алгоритмов. Если он работает хорошо, возможно, нет необходимости в более продвинутых методах.
Недостатки:
- Предположение о линейности. Линейная регрессия предполагает линейную связь между переменными, которая может не соблюдаться для всех наборов данных. Он может пропустить сложные закономерности.
- Чрезмерное упрощение. Когда отношения действительно нелинейны, использование линейной регрессии может привести к значительным ошибкам и плохим прогнозам.
- Чувствительность к выбросам. Линейная регрессия чувствительна к выбросам, которые могут непропорционально влиять на коэффициенты и прогнозы модели.
- Ограничено числовыми входными данными: сложно включить категориальные или качественные данные непосредственно в линейную регрессию без преобразований.
- Недостаточное соответствие. Если истинная связь между переменными не является линейной, линейная регрессия будет неэффективной, поскольку она не сможет выявить более сложные закономерности.
Вопрос на собеседовании:
- Какова цель функции стоимости в линейной регрессии?
- Как определяется наиболее подходящая линия в линейной регрессии?
- В чем разница между простой линейной регрессией и множественной линейной регрессией?
- Какие предположения лежат в основе линейной регрессии?
- Почему среднеквадратическая ошибка (MSE) обычно используется в качестве функции стоимости в линейной регрессии?
- Почему градиентный спуск обычно используется в качестве оптимизатора в линейной регрессии?
Что дальше!
В нашем следующем блоге мы собираемся изучить, как оценивать модели, основанные на прогнозировании.
Вы также можете подписаться на меня в LinkedIn
Большое спасибо, что дочитали до конца. Хорошего дня!