В моей предыдущей статье я обсуждал Линейную регрессию с одной переменной. Здесь я кратко рассмотрел алгоритм линейной регрессии, функцию стоимости и градиентный спуск. Эти концепции составляют основу данной статьи. Так что, если вам они не очень нравятся, подумайте о том, чтобы обратиться к моей предыдущей статье.

До сих пор мы рассматривали простую задачу, в которой выходная переменная зависела только от одной функции (например, x).

Например: прогнозирование цен на дом, где цена дома зависит только от его размера.

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

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

Многомерная линейная регрессия

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

Обозначения

  • x₁, x₂,…, xₙ обозначает n характеристик (например, размер дома, количество спален, возраст дома и т. д.)
  • y = прогнозируемая выходная переменная
  • n = нет. функций
  • м = нет. обучающих примеров
  • x⁽ⁱ⁾ = пример обучения iᵗʰ
  • xⱼ⁽ⁱ⁾ = значение признака j в примере обучения iᵗʰ

Многомерная форма функции гипотезы

Многомерная форма функции гипотезы выглядит следующим образом:

h(x)= θ₀ + θ₁x₁ + θ₂x₂ + … + θₙxₙ
where θ₀, θ₁, θ₂, …, θₙ are the parameters and x₁, x₂, …, xₙ denotes n features

Чтобы понять приведенное выше уравнение, мы можем думать, что x₁ - это размер дома в квадратных метрах, а x₂ - как нет. этажей, x₃ как нет. комнат и т. д. Аналогично θ₀ как базовая цена дома, θ₁ как цена дома за квадратный метр, θ₂ как цена за этаж, θ₃ как цена за комнату и т.д. одно уравнение.

Приведенное выше уравнение можно более кратко записать с помощью матричного представления. Вместо того чтобы думать о θ₀, θ₁… θₙ как о разных характеристиках, мы будем думать о матрице (n + 1) на 1, имеющей элементы - θ₀, θ₁… θₙ, и аналогично матрице x (n + 1) на 1, имеющей элементы - x₀, x₁, x₂,…, xₙ (x₀ = 1, добавляется для обеспечения совместимости матриц Θ и x для умножения.) Или, точнее, матрица x⁽ⁱ⁾, имеющая элементы - x₀⁽ⁱ⁾, x₁⁽ⁱ⁾, x₂⁽ⁱ⁾,…, xₙ⁽ⁱ⁾

Приведенное выше изображение является функцией гипотезы для одного обучающего примера, где x₁, x₂,…, xₙ - значения признаков для этого конкретного обучающего примера.

Теперь давайте посмотрим, как функция стоимости изменяется для многомерной линейной регрессии.

Многомерная форма функции стоимости

Как мы уже знаем, функция стоимости помогает нам определить точность функции гипотезы.

Для многомерного, вместо двух параметров, у нас есть больше параметров, с которыми нужно иметь дело.

y⁽ⁱ⁾ - это результат для iᵗʰ обучающего примера, а h (x⁽ⁱ⁾) - это прогнозируемый результат.
Как и раньше, параметры могут быть представлены в матричной форме -

Θ равно (n + 1) по 1 матрице θ₀, θ₁… θₙ

Многомерная форма градиентного спуска

Градиентный спуск для одномерного линейного уравнения -

Для многовариантного -

Как мы знаем, градиентный спуск - это алгоритм поиска минимума функции. Таким образом, приведенное выше уравнение используется для нахождения минимума функции с несколькими переменными.

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

Контурные графики

Это помогает нам удобно строить трехмерные кривые в двухмерном пространстве. Представьте себе функцию с двумерными входами (скажем, x и y) и одномерным выходом (скажем, z).

Рассмотрим приведенный выше график - z = x² + y². Идея состоит в том, чтобы разрезать трехмерный график на группу плоскостей, проходящих параллельно плоскости x-y.

Все эти плоскости имеют одну общую черту - для каждой плоскости z постоянна, то есть они представляют постоянное значение самой функции.

Черные линии очерчивают пересечение трехмерной кривой и проходящей через нее плоскости. Они называются контурными линиями. Каждая контурная линия отличается тем, что очерченные ими точки имеют одинаковое значение z. Сдавление этих контурных линий в плоскостях x-y дает нам следующий контурный график -

И вуаля!

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

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

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

Контурные графики для градиентного спуска

Рисунок выше дает общее представление о том, как работает функция градиентного спуска. Крестиком обозначены некоторые случайные значения θ₁, θ₂. Как указывалось ранее, более теплые цвета обозначают более высокие значения функции, а более холодные цвета обозначают более низкие значения функции. Поскольку градиентный спуск - это поиск минимумов функции, фактические минимумы нашей функции расположены примерно вокруг центра концентрических кругов, куда направляются наши стрелки.

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

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

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

Масштабирование функций

Два метода, которые помогут нам в масштабировании функций и нормализации среднего значения.

Масштабирование функции: это включает деление входных значений на диапазон (т. е. максимальное значение-минимальное значение). Это обеспечивает новый диапазон всего 1.

Нормализация среднего: это включает вычитание среднего значения входных переменных из значения этой входной переменной, что приводит к новому среднему значению для входной переменной, равному 0.

Формула: xᵢ = xᵢ-μᵢ / sᵢ

где sᵢ - диапазон значений.

Отладка функции градиентного спуска

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

Постройте график без номера. итераций (градиентный спуск - это итерационный алгоритм, т.е. значения θ₀, θ₁… изменяются пошагово.) по оси x и функция стоимости по оси y.

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

И это то, чего мы даже ожидаем - поскольку функция градиентного спуска работает, она должна приближать нас к минимумам функции стоимости.

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

Нормальное уравнение - альтернатива градиентному спуску

В отличие от градиентного спуска, который является итеративным алгоритмом, нормальное уравнение позволяет нам решать Θ аналитически. Он использует тот факт, что производная функции равна 0 в своих минимумах. Это позволяет нам найти оптимальный θ без итераций.

Нормальное уравнение: θ = (XᵗX) ⁻¹Xᵗy

где X - матрица плана размером m на (n + 1), в которой каждая строка представляет конкретный обучающий пример, а y - m-мерный вектор выходных данных.

Сравнение градиентного спуска и нормального уравнения

Как видно выше, временная сложность метода нормального уравнения составляет O (n³). Таким образом, методы нормального уравнения замедляются при больших n, и в этих случаях лучше использовать алгоритм градиентного спуска.

Это все с моей стороны. Надеюсь, все имеет смысл.

Ссылка -

Курс машинного обучения Эндрю Нг

Спасибо за прочтение!