Основы машинного обучения — одномерная линейная регрессия

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

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

Linear Regression with One Variable

Представление модели

Начнем с примера: в этом примере прогнозируются цены на жилье, и мы собираемся использовать набор данных, содержащий цены на жилье в Портленде, штат Орегон. Здесь я строю свой набор данных на основе цен, проданных за дома разных размеров. Например, если площадь дома вашего друга составляет 1250 квадратных футов, сообщите ему, за сколько дом будет продан. Итак, **, одна вещь, которую вы можете сделать, это построить модель, может быть, прямую линию, и из этой модели данных, возможно, вы можете сказать своему другу, что он может продать этот Дом примерно за 220 000 (долларов США). Это пример алгоритма контролируемого обучения. **

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

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

Возьмем в качестве примера предыдущую задачу о сделках с жильем и предположим, что мы регрессируем обучающую выборку задачи (Training Set), как показано в следующей таблице:

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

  • m представляет количество экземпляров в обучающем наборе

  • x обозначает функцию/входную переменную

  • y представляет целевую переменную/выходную переменную

  • (x,y) представляет экземпляр в тренировочном наборе

  • (x(i),y(i))(x^{(i)},y^{(i)})представляет i-й наблюдаемый экземпляр

h представляет собой решение или функцию алгоритма обучения, также известного как гипотеза (hypothesis)

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

Итак, как мы можем выразить h для нашей задачи прогнозирования цен на жилье?

Одно из возможных выражений:hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1x, поскольку существует только одна функция/входная переменная, такая проблема называется одномерной задачей линейной регрессии.

функция стоимости

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

Все, что нам нужно сделать сейчас, это выбрать подходящийпараметр(parameters)θ0\theta_0иθ1\theta_1, в случае задачи о цене дома - это наклон линии и точка пересечения на оси Y.

Параметры, которые мы выбираем, определяют, насколько точна линия, которую мы получаем, по отношению к нашему обучающему набору.Разница между значением, предсказанным моделью, и фактическим значением в обучающем наборе (обозначенном синей линией на изображении ниже) составляетошибка моделирования(modeling error).

Наша цель — подобрать параметры модели, минимизирующие сумму квадратов ошибок моделирования.

Даже если функция стоимости получаетсяJ(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2J(\theta_0,\theta_1)=\frac{1}{2m}\sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2минимум.Обратите внимание на приведенный выше рисунок, т. е. предполагается, что разрыв между всеми точками на h и фактической точкой выборки как можно меньше

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

Конечно, что нам действительно нужно, так это эффективный алгоритм, который может автоматически находить такие параметры, которые минимизируют функцию стоимости J.θ0\theta_0иθ1\theta_1

градиентный спуск

Градиентный спуск — это алгоритм нахождения минимального значения функции, мы будем использовать алгоритм градиентного спуска для нахождения функции стоимостиJ(θ0,θ1)J(\theta_0,\theta_1)минимальное значение .

Идея градиентного спуска такова: вначале мы случайным образом выбираем комбинацию параметров(θ0,θ1,......,θn)(\theta_0,\theta_1,......,\theta_n), вычисляем функцию стоимости, а затем ищем следующую комбинацию параметров, которая больше всего снижает значение функции стоимости. Мы продолжаем делать это, пока не найдем локальный минимум (local minimum), так как мы не перепробовали все комбинации параметров, мы не можем быть уверены, что получаемый нами локальный минимум является глобальным минимумом (global minimum), выбирая разные комбинации начальных параметров, можно найти разные локальные минимумы.

Представьте, что вы стоите в этой точке горы, стоите на красном холме в своем воображаемом парке, в алгоритме градиентного спуска все, что нам нужно сделать, это повернуться на 360 градусов, оглядеться вокруг и спросить себя, куда В каждом направлении , как можно быстрее спуститесь с горы маленькими шажками. Куда нужно идти этими маленькими шагами? Если мы встанем в этой точке на склоне холма, вы оглянетесь, вы найдете лучший способ спуститься, вы оглянетесь и снова подумаете, в каком направлении мне делать маленькие шаги вниз по горе? Затем вы делаете еще один шаг на свое усмотрение, повторяете шаги, описанные выше, и с этой новой точки вы оглядываетесь и решаете, в каком направлении быстрее спуститься с горы, затем делаете еще один маленький шаг и так далее, пока не приблизитесь к расположение локального минимума.

пакетный градиентный спуск

пакетный градиентный спуск (batch gradient descent) Формула алгоритма:

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

Сначала я не зналθ\thetaСколько существует возможных значений (при условии, что пространство бесконечно), просто выберите одноθ0\theta_0иθ1\theta_1, используя алгоритм градиентного спуска, чтобы постоянно приближаться к ближайшему значению, т.е. постоянно обновлятьθ\theta,θ0:=θ\theta_0:=\theta,θ1:=θ1\theta_1:=\theta_1,Как показано ниже

Интуитивное понимание градиентного спуска

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

θj:=θjальфадельтадельтаθjJ(θ)\theta_j := \theta_j - \alpha \frac{\delta}{\delta \theta_j}J(\theta)

Описание: даθ\thetaназначить, чтобыJ(θ)J(\theta)Двигайтесь в самом быстром направлении градиентного спуска, продолжайте итерацию и, наконец, получите локальный минимум. вальфа\alphaскорость обучения (learning rate), который определяет, насколько далеко мы идем вниз в направлении, которое уменьшает функцию стоимости больше всего.

Наклон касательной и есть производная, поэтому он постоянно обновляется.θ1\theta_1значение продолжает уменьшаться

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

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

Давайте посмотрим на пример, это функция стоимостиJ(θ)J(\theta).

Я хочу найти его минимум, сначала инициализировать мой алгоритм градиентного спуска в этой пурпурной точке, если я обновлю градиентный спуск на один шаг, возможно, он приведет меня к этой точке, поскольку производная в этой точке довольно крутая. Теперь, в этой зеленой точке, если я обновлю еще один шаг, вы увидите, что моя производная, которая является наклоном, не такая крутая. По мере того, как я приближаюсь к основанию, моя производная становится все ближе и ближе к нулю, поэтому после одного шага градиентного спуска новая производная становится немного меньше. Затем я хочу сделать еще один шаг градиентного спуска. В этой зеленой точке я, естественно, буду использовать немного меньший шаг, чем когда я только что был в пурпурной точке. Когда я достигну новой красной точки, она будет ближе к глобальному минимуму. , поэтому эта производная в точке будет меньше, чем в зеленой точке. Итак, когда я делаю еще один шаг градиентного спуска, мой производный член становится меньше,θ1\theta_1Величина обновления будет меньше. Таким образом, по мере работы метода градиентного спуска величина вашего движения будет автоматически становиться все меньше и меньше, пока окончательное движение не станет очень маленьким, и вы обнаружите, что оно сходится к локальному минимуму.

Интуитивно наклон продолжает уменьшаться, а окончательная производная равна 0.

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

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

Линейная регрессия с градиентным спуском

Сравнение алгоритма градиентного спуска и алгоритма линейной регрессии показано на рисунке:

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

image.png

то естьθ0\theta_0иθ1\theta_1Используйте градиентный спуск для обновления до тех пор, пока функция стоимости не станет минимальной.

image.png

Алгоритм, который мы только что использовали, иногда называют пакетным градиентным спуском. На самом деле в машинном обучении алгоритмам часто дают не имена, а вот это»пакетный градиентный спуск", ** означает, что на каждом шаге градиентного спуска мы используем все обучающие выборки, в градиентном спуске при вычислении дифференциального члена вывода необходимо выполнить операцию суммирования, значит, в каждом отдельном В градиентном спуске из , мы в конечном итоге вычисляем что-то, что нужно просуммировать по всем m обучающим выборкам. ** Следовательно, название «Пакетный градиентный спуск» говорит о том, что нам нужно рассмотреть всю эту «партию» обучающих выборок. На самом деле иногда существуют и другие типы градиентного спуска, а не этого «пакетного» типа, который не рассматривает весь тренировочный набор, а фокусируется только на нескольких небольших подмножествах тренировочного набора за раз.

Суммировать

Одномерная линейная регрессия использует уравнение прямой линии y = ax + b для подбора. Два параметра a и b необходимо учитывать, чтобы минимизировать функцию стоимости для получения наилучшей прямой линии. Чтобы найти функцию минимальной стоимости, можно использовать градиентный спуск для непрерывно обновлять a и b и, наконец, сходиться к 0, найти оптимальные значения параметров a и b

Обзор линейной алгебры

Сложение и скалярное умножение

Добавление матриц: вы можете добавлять матрицы с одинаковым количеством строк и столбцов.

пример:

img

Умножение матриц: умножить каждый элемент

img

Комбинаторный алгоритм также аналогичен.

умножение матрицы на вектор

Умножение матрицы и вектора показано на рисунке: матрица m*n умножается на вектор n*1, и получается вектор m*1.

img

Пример алгоритма:

img

умножение матриц

Например, теперь есть две матрицы А и В, то их произведение можно выразить в виде, показанном на рисунке.

img img

источник контента

[1] Стэнфордский курс машинного обучения, 2014 г. Ng Enda.

[2].Стэнфордский университет 2014 Курс машинного обучения Каталог китайских заметок

[3].Coursera-ML-AndrewNg-Notes