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

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

Какова цель регрессии?

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

Регрессия также полезна для прогнозирования реакции цели на изменения функций. Например, если все остальные характеристики остаются неизменными (тот же почтовый индекс, то же местоположение, тот же год постройки), регрессионный анализ будет предсказывать цену другого дома другой площади.

Введение в линейную регрессию?

Линейная регрессия является самой простой, но наиболее широко используемой моделью регрессии. Его математически легко построить и вычислить, а статистически легко проанализировать и интерпретировать. Математически мы часто обозначаем цель (или зависимую переменную) как 𝑦, а набор независимых переменных (то есть признаков) обозначаем как вектор 𝐱 = (𝑥₁, …, 𝑥ᵣ), где 𝑟 — количество признаков. Как следует из названия, мы предполагаем линейную зависимость между 𝑦 и 𝐱, то есть 𝑦 = 𝛽₀ + 𝛽₁𝑥₁ + ⋯ + 𝛽ᵣ𝑥ᵣ, где 𝛽₀, 𝛽₁, …, 𝛽ᵣ — коэффициенты регрессии (или называемые веса). Это уравнение является уравнением регрессии. Линейная регрессия вычисляет наилучшие оценки для коэффициентов регрессии. В действительности линейное отношение часто является чрезмерным упрощением фактической сложности, но в большинстве случаев его достаточно, чтобы дать надежную и осмысленную интерпретацию. Когда есть только одна независимая функция, например. мы предполагаем, что цена дома зависит только от почтового индекса, это называется линейной регрессией. У линейной регрессии есть еще одно привлекательное достоинство, заключающееся в том, что она позволяет избежать переобучения, что было бы серьезной проблемой для всех других моделей нелинейной (полиномиальной) регрессии.

Реализуйте линейную регрессию в Python

Существует множество различных инструментов и языков программирования для реализации моделей линейной регрессии. Самым популярным, а также мощным и простым инструментом является Python, который предоставляет все пакеты, функции и классы, которые вы можете вызывать напрямую для построения и запуска собственных моделей линейной регрессии. В частности, мы будем использовать NumPy и scikit-learn из Python. NumPy — это фундаментальный научный пакет Python, а scikit-learn — очень популярная библиотека Python для машинного обучения, созданная поверх NumPy. Помимо реализации регрессии, scikit-learn также используется для уменьшения размерности, классификации и кластеризации. Мы проведем вас шаг за шагом в этом блоге.

Шаг 1. Импорт пакетов Python

Как уже говорилось, мы будем использовать NumPy и sklearn для реализации линейной регрессии. Команда Python import импортирует весь пакет, и вы можете дать ему новый псевдоним с более коротким именем. Если пакет большой и вам нужно использовать только его часть, вы можете использовать from … import … для импорта только части пакетов. Приведенные ниже коды Python подготовят вас к реализации линейной регрессии.

импортировать numpy как np
из sklearn.linear_model import LinearRegression

Шаг 2: Ввод данных

Python имеет собственную структуру данных для массивов, но мы часто рекомендуем пользователям использовать структуру массива numpy для всех проектов, связанных с машинным обучением. numpy.array может определять переменные структуры массива, которые удобно изменять. Например, в приведенном ниже коде мы используем reshape.(-1,1), чтобы преобразовать независимые переменные (или функции) x в 1 столбец и столько строк, сколько необходимо. В общем, reshape((m,n)) означает приведение исходного массива x к новому массиву в форме m строк и n столбцов. Если m или n равно -1, это означает неограниченный или неопределенный. Мы добавляем следующий код Python после приведенных выше команд импорта.

x = np.array([5,15,25,35,45,55]).reshape((-1,1))
y = np.array([5,20,14,32,22 ,38])

Результирующие x и y принимают следующую форму и значения:

››› print(x)
[[ 5]
[15]
[25]
[35]
[45]
[55] ]

››› print(y)
[ 5 20 14 32 22 38]

Шаг 3: Постройте модель и подгоните

Python sklearn предоставляет модель линейной регрессии LinearRegression. Но чтобы его использовать, нам всегда нужно создавать экземпляр класса LinearRegression. Концепция экземпляра является ключом ко всему объектно-ориентированному программированию. С точки зрения кодирования это делается с помощью однострочного кода Python.

модель = линейная регрессия ()

Чтобы начать использовать эту модель, вызовите метод подгонки из класса LinearRegression (и помните, что подгонка метода или функции является частью модели переменных, которая определена как экземпляр класса LinearRegression).

модель.fit(х, у)

Метод подгонки фактически вычисляет оптимальные значения коэффициентов регрессии 𝛽₀, 𝛽₁, …, 𝛽ᵣ, используя входные данные x и выходные данные y в качестве аргументов. Можно явно просмотреть результат, напечатав коэффициенты с помощью команды Python:

печать (модель.intercept_, модель.coef_)

Выходными данными являются точка пересечения = 5,63, коэффициент = 0,54, что является общеизвестным наклоном в линейном уравнении y = kx + b.

Шаг 4: Предскажите новый ответ

После подгонки модели для получения коэффициентов мы можем использовать эти коэффициенты для прогнозирования новых ответов на новые входные данные с помощью функции model.predict, где модель определяется как экземпляр класса sklearn LinearRegression(). Чтобы проверить и перепроверить, мы используем исходный ввод x в качестве нового ввода для прогноза, и если модель работает нормально, предсказанные значения y должны быть такими же или очень близкими к исходному y. Запустите следующий код Python:

y_pred = модель.прогноз(х)

Теперь мы наносим зависимости y и y_pred от x и видим, что исходные значения y точно соответствуют линейной модели, которая предсказывает прямую линию y_pred.

Краткое содержание

В этой статье мы покажем, как легко построить модель линейной регрессии с помощью пакета Python scikit-learn. Модель линейной регрессии хороша как для интерпретации существующих данных, так и для прогнозирования новых ответов на основе существующих данных.

Если вам нравятся мои статьи, нажмите, чтобы подписаться на меня. Спасибо!
Мои предыдущие блоги:
Визуализация с использованием Python Matplotlib
Уменьшение размеров с использованием PCA в R