Линейная регрессия с нуля

Линейная регрессия - это тип модели, который предполагает линейную связь между входными и целевыми переменными. Он используется для расчета или прогнозирования значения на основе одной (или многих) входных переменных. Обычно он используется, когда:

  • У вас есть линейная связь, предположим, что x и y - две переменные, и у них есть прямая (одна увеличивается, другая также увеличивается) или косвенная (одна увеличивается, другая уменьшается) взаимосвязь.
  • Когда вам нужно предсказать числовое значение, если у вас есть категориальные значения, вы должны преобразовать их в числовые для выполнения модели линейной регрессии.
  • У вас есть одна зависимая и одна независимая переменные.

Модель линейной регрессии - это прямая линия, которая лучше всего соответствует данным. Его уравнение:

Где:

  1. м - наклон или уклон линии
  2. c - точка пересечения с y линии

Множественная линейная регрессия (MLR) используется, когда имеется более одной входной переменной. В этой статье я буду реализовывать модель линейной регрессии для одной входной переменной с нуля на Python с использованием numpy и matplotlib и объяснять идею каждого шага (с полным кодом в конце).

Начиная

  1. Numpy - это библиотека Python, которая используется для вычисления математических операций высокого уровня над большими многомерными массивами и матрицами.
  2. Matplotlib - это графическая библиотека, которая поможет в построении различных графиков, чтобы упростить интерпретацию данных.
  3. Модуль Math имеет некоторые встроенные функции, такие как извлечение квадратного корня, которые помогут в вычислении значений.

Теперь здесь я определяю два массива, один - входная или независимая переменная (x), а другой - выходная или зависимая переменная (y), и вставляю некоторые значения в оба из них, а затем рисую результирующие точки на графике.

Определение терминов и расчет значений

Среднее: это сумма наблюдений, разделенная на количество наблюдений.

Дисперсия: это мера того, насколько результаты наблюдений отличаются от среднего значения.

Стандартное отклонение: это мера дисперсии.

Стандартное отклонение обозначается σ (сигма) , которое представляет собой квадратный корень из дисперсии.

Где :

  1. xᵢ - наблюдение
  2. x̅ - среднее
  3. n - общее количество наблюдений.

Примечание. При вычислении дисперсии / стандартного отклонения мы разделили на n-1 вместо n, чтобы убедиться, что дисперсия / стандартное отклонение не смещены. См. Поправка Бесселя для получения дополнительной информации.

Сумма квадратов: используется для определения разброса данных, это сумма квадратов разницы между всеми точками и средним значением.

Где:

  1. yᵢ это наблюдение
  2. y это среднее
  3. n - количество наблюдений

Оценка отклонения: это сумма разницы между всеми наблюдениями и средним значением наблюдений.

Где:

  1. xᵢ, yᵢ - наблюдение
  2. x⁻, y⁻ - среднее значение x и y соответственно
  3. n - количество наблюдений

Оценка R: это соотношение между прогнозируемыми и фактическими значениями. Его значение колеблется от -1 до +1.

Где:

  1. Прод - это результат оценок отклонений.
  2. SSx - это сумма квадратов для X
  3. SSy - сумма квадратов для Y

Уклон: показатель крутизны прямой линии.

Что рассчитывается по:

Где:

  1. м - уклон.
  2. stdev - стандартное отклонение.
  3. r - это оценка r.

Результат

Теперь, когда мы получили наклон, мы можем записать уравнение наиболее подходящей прямой в виде:

Где y⁻ и x⁻ - это среднее значение y и x соответственно, а m - наклон.

Теперь нанесем наиболее подходящую линию поверх диаграммы рассеяния.

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

Проверка

Теперь используем sklearn, чтобы проверить, правильна ли наша лучшая линия.

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

Заключение

Полученное значение r составляет 0,9672, а значение r, полученное с помощью sklearn, равно 0,9672, поскольку они оба одинаковы, мы пришли к одной и той же строке наилучшего соответствия, но без использования какой-либо из библиотек машинного обучения. Этот подход является чисто статистическим и может использоваться для прогнозирования или регрессионного анализа.

Полный код