Введение в машинное обучение: многомерная линейная регрессия

машинное обучение

Аннотация: Краткое введение в многомерную линейную регрессию и два общих совета по борьбе с градиентом спуска.

Эта статья опубликована в сообществе HUAWEI CLOUD.«【Давайте обучаться машинному обучению вместе с Сяо Ми! ] Многомерная линейная регрессия (1)", оригинальный автор: Skytier.

1. Многомерные функции

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

Теперь у нас есть четыре переменные функции, как показано ниже:

Нижняя буква n может использоваться для представления количества признаков. В этом примере n = 4, есть 4 признака. n здесь отличается от предыдущего символа m. Раньше мы использовали m для представления количества выборок, поэтому, если у вас есть 47 строк, то m — это количество строк в этой таблице или количество обучающих выборок. Затем мы используемдля представления значения входного признака i-й обучающей выборки. В качестве конкретного примера,представляет собой вектор признаков второй обучающей выборки, поэтому здесь, то есть четыре характерные величины для предсказания второй цены дома. Небольшие подсказки, верхний индекс 2 здесь является индексом обучающего набора, но не рассматривайте его как квадратный квадрат x, а соответствует второй строке в таблице, которая является первой. Две обучающие выборки представляют собой четырехмерный вектор. На самом деле, в более общем смысле, это n-мерный вектор. и​представляет собой значение j-го признака в i-й обучающей выборке, соответствующей таблице,Представляет значение третьего признака во второй обучающей выборке, равное 2.

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

Например:

Подробно это предположение заключается в прогнозировании цены дома в единицах из десяти тысяч. Базовая цена дома может составлять 80 юаней плюс 1000 юаней за квадратный метр, а затем цена будет продолжать расти по мере увеличения количества этажей. , Он увеличивается по мере увеличения количества спален, но обесценивается по мере увеличения количества лет использования, поэтому имеет смысл посмотреть на этот пример!

Однако обсессивно-компульсивная маленькая Ми тоже хочет, чтобы команда была более сплоченной.Для удобства можно предположить, чтоимеет значение 1, а именно, это означает, что для i-й выборки существует вектори. Также можно сказать, что 0-й признак определяется дополнительно. Следовательно, вектор признаков x теперь представляет собой n+1-мерный вектор, основанный на 0. в то время как параметрЭто также вектор, отмеченный от 0, и это также n + 1-мерный вектор признаков.

Это предположение можно преобразовать в упрощенную форму:​, где верхний индекс T представляет собой транспонирование матрицы, не правда ли, это очень умно!Здесь Сяо Ми действительно должен похвалить это, это оно, это оно, помогает нам писать гипотезы в этой очень сжатой форме. Это гипотетическая форма в случае нескольких количеств признаков, также известная как множественная линейная регрессия. Термин «многомерный» означает, что мы используем несколько количественных характеристик или переменных для прогнозирования значения Y.

2. Многомерный градиентный спуск

Что ж, форма гипотезы многомерной линейной регрессии уже доступна, то есть ингредиенты уже доступны, и следующий шаг — начать готовить!

В гипотетической форме множественной регрессии мы условно приняли. К параметрам этой модели относятся​, но здесь мы не рассматриваем его как n независимых параметров, а рассматриваем эти параметры как n+1 мернуювектор, поэтому функция стоимостиВыражение выражается как:

Из их,

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

То есть:

После взятия производной получаем:

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

Пример кода:

Рассчитайте функцию стоимости:. в,

PythonКод:

def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))

3. Практика градиентного спуска — масштабирование признаков

Далее мы изучим некоторые практические приемы операций градиентного спуска.Во-первых, мы представим метод, называемый масштабированием признаков, который заключается в следующем:

Если у вас есть проблема с машинным обучением, проблема имеет несколько функций, и вы можете убедиться, что все эти функции находятся в одном диапазоне, то есть убедиться, что значения разных функций находятся в одном диапазоне, чтобы метод градиентного спуска может сходится быстрее. В частности, предположим, что у вас есть проблема с двумя характеристиками, гдеразмер дома, его значение равно 0между 2000,количество спален, возможно 15, если вы хотите нарисовать функцию стоимостиконтур, то он должен выглядеть так, что является параметром оифункция, которую здесь следует игнорировать, и представьте, что переменными этой функции являются толькоино еслиДиапазон значений намного больше, чемЕсли диапазон значений ​, то окончательная функция стоимости нарисованаконтуры будут иметь такую ​​очень перекошенную и эллиптическую форму.На самом деле, отношение 2000 к 5 сделает эллипс более тонким. Таким образом, эта контурная карта с тонким и высоким овалом — это очень высокие и тонкие овалы, составляющие функцию стоимости.Контур . Если вы запустите градиентный спуск для такой функции стоимости, ваш градиент может занять много времени, и он может колебаться взад и вперед, а затем потребуется много времени, прежде чем он, наконец, сойдется к глобальному минимуму.

На самом деле, вы можете себе представить, что если бы эти контуры были более преувеличены, то есть если бы они были нарисованы тоньше и длиннее, это могло бы быть более преувеличено, чем это, и в результате процесс градиентного спуска мог бы быть медленнее, и это Чтобы найти путь к глобальному минимуму, потребуется больше времени, чтобы колебаться туда-сюда. В таких случаях эффективным методом является масштабирование функций. В частности, если функцияОпределяется как размер дома, деленный на 2000, и ставитсяОпределяется как количество спален, деленное на 5, затем функция стоимостиКонтуры будут смещаться менее сильно и выглядеть более округлыми. Если вы выполняете градиентный спуск для такой функции стоимости, то можно математически доказать, что алгоритм градиентного спуска находит более прямой путь к глобальному минимуму, а не просто следует гораздо более сложному пути, чтобы найти глобальный минимум. Таким образом, масштабируя эти функции, их диапазон значений становится похожим, в этом примере мы получаем две функции.иОба находятся в диапазоне от 0 до 1, поэтому вы получаете градиентный спуск, который сходится быстрее.

В более общем смысле, когда мы выполняем масштабирование признаков, мы обычно стремимся ограничить значение признака в диапазоне от -1 до +1. В частности, ваши характеристикивсегда равен 1. Так что это уже в этом диапазоне, но для других функций вам может потребоваться разделить на разные числа, чтобы получить их в том же диапазоне. Цифры -1 и +1 не слишком важны, так что если у вас есть фича​, его значение находится в диапазоне от 0 до 3, что нормально; если у вас есть другая функцияпринимает значения от -2 до +0,5, что также очень близко к диапазону от -1 до +1, что нормально; но если у вас есть другая функция, например

​, если его единица находится в диапазоне от -100 до +100, то этот диапазон сильно отличается от -1 до +1. Таким образом, это может быть функция с не очень подходящим диапазоном. Точно так же, если ваши функции находятся в очень, очень небольшом диапазоне, скажем, функцияДиапазон находится между -0,0001~+0,0001, тогда это также намного меньший диапазон, чем -1~+1. Поэтому я бы также подумал, что объем этой функции не подходит. Таким образом, диапазон, который вы можете одобрить, может быть больше +1 или меньше +1, но он не должен быть слишком большим, например, +100, или не слишком маленьким, например, здесь 0,001. У разных людей разный опыт. Тем не менее, это можно считать нормальным.Если признак находится в диапазоне -3~+3, этот диапазон приемлем, но если диапазон больше диапазона -3~+3, я могу начать обращать внимание. Если его значение равно -1/3~+1/3, я тоже считаю, что это неплохо и приемлемо, или 01/3 или -1/30, эти типичные диапазоны для меня приемлемы, но если диапазон признаков очень мал, как, например, только что упомянутый, начните думать об этом. В общем, не беспокойтесь слишком сильно о том, находятся ли ваши объекты в одном и том же диапазоне или интервале, но пока они достаточно близки, градиентный спуск будет работать нормально. В дополнение к делению признака на максимальное значение, при масштабировании признаков иногда мы также делаем работу, называемую нормализацией среднего, что означает, что у вас есть признак, ты можешь использоватьзаменить так, чтобы ваши собственные значения имели среднее значение 0. Очевидно, нам не нужно применять этот шаг кв, потому чтовсегда равно 1, поэтому его среднее значение не может быть равно 0, но для других характеристик, таких как размер дома, значение находится между 02000, а если средняя площадь дома равна 1000, то можно использовать следующую формулу дляЗначение становится размером, вычитается среднее значение и делится на 2000. Аналогично, если в этих домах 15 спален, а в среднем доме 2 спальни, то вы можете использовать эту формулу, чтобы нормализовать вторую функцию.в обоих случаях вы можете вычислить новые функциии​, так что они могут варьироваться от -0,5 до +0,5. Конечно, это не обязательно правда,Значение ​может быть немного больше 0,5, но близко. Более общее правило состоит в том, что вы можете положитьзаменено накоторый определяетэто тренировочная функцияпри этомэто диапазон собственного значения, а диапазон относится к максимальному значению минус минимальное значение. Или для студентов, изучавших стандартное отклонение, поставитьТакже можно установить стандартное отклонение переменной, но фактически можно использовать максимальное значение минус минимальное значение. Аналогично, для второго признака, вы также можете вычесть среднее и разделить на диапазон таким же образом, то есть максимальное значение минус минимальное значение. Такая формула может не относиться к вашим функциям, но, вероятно, она находится в этом диапазоне.Кстати, можно преобразовать функции только в аналогичный диапазон.Масштабирование функций не должно быть слишком точным, просто чтобы заставить градиентный спуск работать немного быстрее, с меньшим количеством итераций, необходимых для сходимости.

4. Практика градиентного спуска — скорость обучения

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

Ось x здесь представляет количество итераций алгоритма градиентного спуска. По мере работы алгоритма градиентного спуска вы можете получить такую ​​кривую, обратите внимание, что по оси X указано количество итераций, которое мы указали ранее., ось x представляет вектор параметров​, который отличается от текущего изображения. В частности, значение первой красной точки в том, что после запуска 100 итераций градиентного спуска определеннаязначение, для данной точки это означает, что после 100 итераций алгоритма градиентного спуска полученноерассчитанное значение. Вторая красная точка соответствует алгоритму градиентного спуска после 200 итераций.рассчитанное значение. Таким образом, эта кривая представляет собой значение функции стоимости после каждой итерации градиентного спуска. Если алгоритм градиентного спуска работает правильно, после каждой итерациидолжно все спуститься. Одна полезная особенность этой кривой заключается в том, что она может сказать вам, что когда вы достигаете 300 итераций, между 300-400 итерациями,Он не сильно упал, поэтому к тому времени, когда вы дойдете до 400 итераций, кривая выглядит довольно плоской. Здесь за 400 итераций алгоритм градиентного спуска почти сошёлся. Использование этой кривой может помочь вам определить, сошелся ли алгоритм градиентного спуска. Между прочим, для каждой конкретной задачи количество итераций, требуемых алгоритмом градиентного спуска, может сильно различаться, поэтому для определенной задачи алгоритму градиентного спуска требуется всего 30 итераций для достижения сходимости, но для другой задачи, возможно, алгоритму градиентного спуска требуется 3 000 итераций или 3 000 000 шагов или более.На самом деле трудно заранее судить, сколько шагов нужно алгоритму градиентного спуска для сходимости. В качестве альтернативы вы можете выполнить некоторые автоматические тесты сходимости, то есть позволить алгоритму сказать вам, достаточно ли сошелся алгоритм градиентного спуска.

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

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

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

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

В частности, обычно мы можем попробовать сериюценность:

Например: 0,001, 0,003, 0,01, 0,03, 0,1, 0,3, 1, ..., взять значение каждые 3 раза, а затем сравнить эти разныерисунок стоимостиКривая меняется в зависимости от количества шагов итерации, поэтому выбраноБыстро падающийзначение.

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~