1. Введение
Регрессионный анализ - это подраздел машинного обучения с учителем. Он нацелен на моделирование взаимосвязи между определенным количеством функций и непрерывной целевой переменной.
В задачах регрессии мы пытаемся дать количественный ответ, например, прогнозировать цены на дом или количество секунд, которые кто-то потратит на просмотр видео.
2. Простая линейная регрессия: подгонка линии по данным
Имея набор точек, алгоритм регрессии будет моделировать взаимосвязь между одним признаком (объясняющая переменная x) и непрерывным ответом (целевая переменная y).
Модель будет моделировать эту взаимосвязь, устанавливая произвольную линию и вычисляя расстояние от этой линии до точек данных. Это расстояние, вертикальные линии, являются остатками или ошибками прогноза.
Алгоритм регрессии будет перемещать линию на каждой итерации, пытаясь найти наиболее подходящую линию, другими словами, линию с минимальной ошибкой.
Есть несколько методов для выполнения этой задачи, и конечная цель - приблизить линию к максимальному количеству точек.
2.1 Перемещение линии
2.1.1 Абсолютный трюк
При наличии точки и линии цель состоит в том, чтобы приблизить линию к этой точке. Для решения этой задачи алгоритм будет использовать параметр, называемый «скорость обучения». Эта скорость обучения - это число, которое будет умножено на параметры функции, чтобы делать небольшие шаги при приближении линии к точке.
Другими словами, скорость обучения будет определять длину расстояния, пройденного в каждой итерации, чтобы линия приблизилась к точке. Обычно он обозначается символом α.
2.1.2 Квадратный трюк
Он основан на следующей предпосылке: если есть точка ближе к линии, а расстояние небольшое, линия перемещается на небольшое расстояние. Если это далеко, линия будет перемещена намного дальше.
3. Градиентный спуск
Допустим, у нас есть набор точек, и мы хотим разработать алгоритм, который найдет линию, которая наилучшим образом соответствует этому набору точек. Ошибка, как указывалось ранее, будет расстоянием от линии до точек.
Линия перемещается, и вычисляется ошибка. Этот процесс повторяется снова и снова, каждый раз немного уменьшая ошибку, пока не будет получена идеальная линия. Эта идеальная линия будет иметь наименьшую ошибку. Чтобы минимизировать эту ошибку, мы воспользуемся методом градиентного спуска.
Градиентный спуск - это метод, который для каждого шага будет смотреть на разные направления, в которых линия может быть перемещена, чтобы уменьшить ошибку, и предпринимает действия, которые максимально уменьшают эту ошибку.
Определение градиента из Википедии:
Градиент эскаларного поля (f) является векторным полем. Когда он оценивается в общей точке домена f, он указывает направление более быстрого изменения поля f.
Таким образом, градиентный спуск сделает шаг в направлении отрицательного градиента.
Когда этот алгоритм предпримет достаточные шаги, он в конечном итоге достигнет локального или глобального минимума, если скорость обучения установлена на адекватное значение. Это очень важная деталь, потому что, если скорость обучения слишком высока, алгоритм будет упускать минимум, так как он будет делать слишком большие шаги. И если эта скорость обучения слишком низкая, потребуется бесконечное время, чтобы добраться до сути.
4. Методы градиентного спуска
4.1 Стохастический градиентный спуск
Когда градиентный спуск выполняется по точкам.
4.2 Пакетный градиентный спуск
Применяя квадрат или абсолютный трюк ко всем точкам данных, мы получаем некоторые значения, которые нужно добавить к весам модели, складываем их, а затем обновляем веса суммой этих значений.
4.3 Мини-пакетный градиентный спуск
На практике ни один из предыдущих методов не используется, поскольку оба являются медленными с вычислительной точки зрения. Лучший способ выполнить линейную регрессию - разделить данные на множество небольших пакетов. Каждая партия примерно с одинаковым количеством баллов. Затем используйте каждую партию для обновления весов. Этот метод называется мини-пакетным градиентным спуском.
5. Более высокие размеры
Когда у нас есть один входной столбец и один выходной столбец, мы сталкиваемся с двумерной проблемой, и регрессия представляет собой линию. Прогноз будет постоянным от независимой переменной плюс другие константы.
Если у нас больше входных столбцов, это означает, что есть больше измерений, и выходом будет уже не линия, а плоскости или гиперплоскости (в зависимости от количества измерений).
6. Множественная линейная регрессия
Независимые переменные также известны как предикторы, то есть переменные, на которые мы обращаем внимание, чтобы делать прогнозы относительно других переменных. Переменные, которые мы пытаемся предсказать, известны как зависимые переменные.
Когда результат, который мы пытаемся предсказать, зависит от нескольких переменных, мы можем создать более сложную модель, которая учитывает эту более высокую размерность. Если они имеют отношение к возникшей проблеме, использование большего количества переменных-предикторов может помочь нам получить лучший прогноз.
Как было показано ранее, на следующем изображении показана простая линейная регрессия:
На следующем рисунке показана подобранная гиперплоскость множественной линейной регрессии с двумя функциями.
По мере того, как мы добавляем больше предикторов, мы добавляем больше измерений к проблеме, и ее становится труднее визуализировать, но суть процесса остается прежней.
7. Предупреждения о линейной регрессии
Линейная регрессия имеет набор допущений, и мы должны учитывать, что это не лучшая модель для каждой ситуации.
а) Линейная регрессия лучше всего работает, когда данные линейны:
Он создает прямую линию из данных обучения. Если взаимосвязь в обучающих данных не является действительно линейной, нам нужно будет либо внести коррективы (преобразовать обучающие данные), либо добавить функции, либо использовать другую модель.
б) Линейная регрессия чувствительна к выбросам:
Линейная регрессия пытается найти лучшую линию среди обучающих данных. Если в наборе данных есть некоторые резко отклоняющиеся экстремальные значения, которые не соответствуют общему шаблону, на модели линейной регрессии может сильно повлиять присутствие выбросов. Нам придется следить за этими выбросами и, как правило, удалять их.
Одним из распространенных методов работы с выбросами является использование альтернативного метода регрессии, который особенно устойчив к этим экстремальным значениям. Этот метод называется алгоритмом RANdom Sample Consensus (RNASAC), который подбирает модель для подмножества данных inliers. Алгоритм выполняет следующие шаги:
- Он выбирает случайное количество выборок для вставки и соответствия модели.
- Он проверяет все остальные точки данных на соответствие подобранной модели и добавляет те, которые соответствуют выбранному пользователем значению.
- Повторяет примерку модели с новыми точками.
- Вычислите ошибку подобранной модели относительно вставок.
- Завершите алгоритм, если производительность соответствует определенному пороговому значению, заданному пользователем, или если достигнуто количество итераций. В противном случае он возвращается к первому шагу.
7. Полиномиальная регрессия
Полиномиальная регрессия - это частный случай анализа множественной линейной r эгрессии, в котором связь между независимой переменной x и зависимой переменной y моделируется как n многочлен от x. Другими словами, когда наше распределение данных более сложное, чем линейное, и мы генерируем кривую, используя линейные модели, чтобы соответствовать нелинейным данным.
Независимые (или объясняющие) переменные, полученные в результате полиномиального разложения переменных-предикторов, известны как термины более высокой степени. Он использовался для описания нелинейных явлений, таких как скорость роста тканей и развитие эпидемий болезней.
8. Регуляризация
Регуляризация - широко используемый метод решения проблемы переобучения. В основном это делается по следующим методикам:
- Уменьшение размера модели: уменьшение количества обучаемых параметров в модели, а вместе с ними и ее способности к обучению. Цель состоит в том, чтобы найти золотую середину между слишком большой и недостаточной способностью к обучению. К сожалению, нет никаких волшебных формул для определения этого баланса, его нужно проверять и оценивать, задав различное количество параметров и наблюдая за его работой.
- Добавление регуляризации веса: в целом, чем проще модель, тем лучше. Пока она может хорошо учиться, более простая модель вряд ли переобучится. Обычный способ добиться этого - ограничить сложность сети, заставив ее веса принимать только небольшие значения, упорядочивая распределение значений весов. Это делается путем добавления к функции потерь сети стоимости, связанной с большими весами. Стоимость бывает двумя способами:
- Регуляризация L1: Стоимость пропорциональна абсолютному значению весовых коэффициентов (норма весов L1).
- Регуляризация L2: стоимость пропорциональна квадрату значения весовых коэффициентов (норма весов l2)
Чтобы решить, какой из них применить к нашей модели, рекомендуется иметь в виду следующую информацию и учитывать характер нашей проблемы:
- Параметр λ: это ошибка, вычисленная путем регуляризации. Если у нас большое λ, то мы наказываем сложность и в итоге получим более простую модель. Если у нас будет небольшое λ, мы получим сложную модель.
9. Показатели оценки
Чтобы отслеживать, насколько хорошо работает наша модель, нам нужно настроить некоторые показатели оценки. Эта метрика оценки представляет собой ошибку, вычисленную от сгенерированной линии (или гиперплоскости) до реальных точек, и будет функцией, которую необходимо минимизировать с помощью градиентного спуска.
Вот некоторые из наиболее распространенных метрик оценки регрессии:
9.1 Средняя абсолютная ошибка:
Средняя абсолютная ошибка или MAE - это среднее значение абсолютной разницы между реальными точками данных и прогнозируемым результатом. Если мы примем это как стратегию, которой нужно следовать, каждый шаг градиентного спуска будет уменьшать MAE.
9.2 Среднеквадратичная ошибка:
Среднеквадратичная ошибка или MSE - это среднее значение квадрата разности между точками реальных данных и прогнозируемым результатом. Этот метод наказывает больше, чем больше расстояние, и он является стандартом в задачах регрессии.
Если мы примем это как стратегию, которой нужно следовать, каждый шаг градиентного спуска будет уменьшать MSE. Это будет предпочтительный метод для вычисления наиболее подходящей линии, и его также называют обычным методом наименьших квадратов или OLS.
Среднеквадратичная ошибка 9.3
Среднеквадратичная ошибка, или RMSE, является корнем из среднего квадрата ошибок и является наиболее популярной метрикой оценки для определения производительности регрессионных моделей, поскольку корень дает те же единицы, что и y.
9.4 Коэффициент детерминации или R²
Коэффициент детерминации можно понимать как стандартизированную версию MSE, которая обеспечивает лучшую интерпретируемость характеристик модели.
Технически R² - это доля дисперсии отклика, фиксируемая моделью, другими словами, это дисперсия отклика. Это определяется как:
10. Другие алгоритмы
Хотя в этой статье мы сосредоточились на моделях линейной и множественной регрессии, в популярной библиотеке машинного обучения Sci-kit learn (которую мы будем использовать в этой серии) есть варианты регрессии практически для всех типов алгоритмов. И некоторые из них дают очень хорошие результаты.
Вот несколько примеров:
- Регрессор дерева решений
- Случайный лесной регрессор
- Регрессор опорных векторов
- Лассо
- Эластичная сетка
- Регрессор с усилением градиента
- Регрессор Ada Boost
11. Заключение
В этой статье мы рассмотрели основы регрессионных моделей, узнали, как они работают, основные опасности и способы борьбы с ними. Мы также узнали, какие показатели оценки наиболее распространены.
Мы установили знания, чтобы начать работу с нашей первой моделью машинного обучения, и именно об этом мы поговорим в следующей статье. Так что, если вы хотите узнать, как работать с библиотекой Sci-kit learn с проблемой регрессии, следите за обновлениями!
Если вам понравился этот пост, вы можете взглянуть на другие мои сообщения о данных и машинном обучении здесь.
Если вы хотите узнать больше о машинном обучении, науке о данных и искусственном интеллекте, подпишитесь на меня на Medium и следите за моими следующими сообщениями!