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

Функция гипотезы одной переменной:

В случае нескольких переменных n x становится вектором или столбцом, содержащим n переменных в качестве элементов вектора.

Для n объектов параметры также становятся вектором,

Функция гипотезы нескольких переменных,

Для нашего удобства мы добавляем нулевую особенность x, которая всегда равна 1. Следовательно, функция гипотезы принимает вид

В векторной форме функция гипотезы может быть записана как,

Градиентный спуск для нескольких переменных

С помощью этого алгоритма можно найти градиентный спуск для нескольких переменных,

Повторять до схождения:

и одновременно обновлять,

Как проверить, правильно ли работает градиентный спуск?

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

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

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

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

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

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

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

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

Предположим, что у нас есть характеристика x1 между диапазоном (0–5000) и характеристика x2 между диапазоном (1-10). Если мы возьмем градиентный спуск для этой функции, функция cos будет иметь высокие тонкие контуры (если они представлены на контурном графике). Чтобы достичь глобального минимума из любой точки функции, требуется много времени.

Разделение значений признаков на их диапазон значений (максимальное значение признака - минимальное значение признака) является одним из методов масштабирования.

Как правило, мы можем поместить каждую функцию в диапазон от 2 до 6 значений или что-то между ними. Например,

Средняя нормализация

Один из методов масштабирования, где xi заменяется разницей x_i и средним значением признака x. Это приводит к тому, что функции имеют приблизительно нулевое среднее значение.

Особенности и полиномиальная регрессия

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

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

Подходит прямая,

Мы можем создавать новые функции на основе существующих функций, таких как, например,

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

Квадратичная подгонка,

Кубическая подгонка,

Подгонка квадратного корня,

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

Нормальное уравнение

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

В общем, давайте рассмотрим математическую квадратичную функцию. Решаем функцию, приравнивая ее нулю.

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

Решая с использованием исчисления, мы можем получить минимальное значение:

куда,

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

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

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

как нам нужно рассчитать,

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

Нормальное уравнение и необратимость

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

Иногда обратное X (транспонирование) X невозможно, если результирующее значение является сингулярной или вырожденной матрицей. Чтобы разрешить эту ситуацию, мы должны взять псевдообратную формулу. Псевдообратная может быть взята путем разложения результирующей необратимой матрицы с помощью метода разложения по сингулярным значениям (SVD).

Мы также можем преобразовать необратимую результирующую матрицу в обратимую матрицу, выяснив причины ее сингулярности.

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

Примечание. Эта статья является частью # 30DaysOfData, и ее содержание является моими собственными заметками из Курса машинного обучения Andrew NG.