Эндрю Нг Машинное обучение: линейная регрессия

машинное обучение Python алгоритм
Эндрю Нг Машинное обучение: линейная регрессия

Эндрю Нг Машинное обучение: линейная регрессия

Начнем с небольшого отступления о курсе. Для этого курса от Ng я не стал проходить курсы на Coursera, во-первых, потому что у Coursera есть собственный цикл курсов, но этот цикл может подойти не всем. Во-вторых, курсовая работа Coursera написана на языке Octave, и я лично считаю, что Python будет более подходящим языком для обучения и использования в будущем. Итак, в конце концов я выбрал форму курса видео + задание по реализации Python.

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

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

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

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

Как работает контролируемое обучение

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

заЛинейная регрессия,нашHypothesisэто:

hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=θTx

один из них\theta_iэто параметр, который должен изучить алгоритм обучения, иx_i- это функции, которые мы выбираем для проблемы.

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

так как научитьсяфункция предсказаниясередина\theta_iШерстяная ткань? нам нужно импортироватьфункция стоимостиПонятие , его роль заключается в оценке разницы между фактическими и прогнозируемыми значениями. Когда у вас есть эта функция, цель алгоритма обучения состоит в том, чтобы найти\theta_iСделайте значение этой функции как можно меньше. заЛинейная регрессия, мы используемфункция стоимостиДа:

J(θ)=12 мм∑i=1(hθ(x(i))−y(i))2

вmколичество образцов,y- известный ответ обучающего набора данных, верхний индексiпредставляет количество наборов обучающих данных,функция стоимости J(\theta)это о\thetaФункция. Конечно, чтобы выразиться лаконичнее и написать программы понятнее, мы обычно используем его матричное выражение:

J(θ)=12m(Xθ−y)T(Xθ−y)

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

Картинка справаJ(\theta)Контурная карта , каждая линия представляетфункция стоимостиодинаковы, красный крестик указываетфункция стоимостисамая нижняя точка.

Алгоритм градиентного спуска

Тогда единственная функция, которую вы только что рассмотрели, соответствуетфункция стоимостиИзображение плюс то, что я сказал ранее: «Цель алгоритма обучения — найти\theta_iсделатьфункция стоимостиКак можно меньше». Очень интуитивная идея — взять любую точку на склоне, а затем спуститься вниз, чтобы достичь самой низкой точки. Именно в этом и заключается идея алгоритма градиентного спуска, обновляем по обратному градиенту\theta_iзначение (вниз по склону в самом крутом направлении) до тех пор, покафункция стоимостисходятся к минимальному значению. Обновление алгоритма градиентного спуска\theta_iСпособ таков:

θi:=:=θi−α∂∂θiJ(θ)

в\alphaскорость обучения,:=Указывает на использование подстановки правого значения\theta_iисходное значение. заЛинейная регрессия, мы обновляем\theta_iСпособ таков:

θ:=:=θ−α1mXT(Xθ−y)

Здесь мы можем завершить весьЛинейная регрессияалгоритмы машинного обучения. настраивать\theta_iНачальное значение , которое итеративно обновляется с использованием алгоритма градиентного спуска.\theta_iзначение доJ(\theta)конвергенция. Что касается того, почему используется инверсия градиента, см.эта статья, автор объясняет почему с математической точки зрения.

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

заЛинейная регрессия, мы можем использовать математические методы, чтобы получитьJ(\theta)При взятии минимального значения\theta_iзначение . Это требует некоторых знаний о производных и линейной алгебре.Заинтересованные студенты могут подробно посмотреть процесс вывода в видеокурсе. Решение дано прямо здесь\thetaФормула:

θ=(XTX)−1XTy

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

нормализация признаков

В практических приложениях функции, которые мы выбираем, такие как длина, вес, площадь и т. д., обычно имеют разные единицы измерения и диапазоны, что приводит к замедлению алгоритма градиентного спуска. Итак, мы хотим масштабировать функции до относительно однородного диапазона. Обычные методыStandardizationиNormalization.Standardizationсостоит в том, чтобы преобразовать данные в стандартное нормальное распределение, даже если оно окажется странным распределением, путемЦентральная предельная теоремаВидно, что объем данных достаточно велик, чтобы стать нормальным, а формула обновления такова:

xi:=:=xi−µδ

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

xi:=:=xi−min(xi)max(xi)−min(xi)

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

иногда линейныйHypothesisНе обязательно подходит для данных, которые нам нужно подобрать, мы выберем полиномиальную подгонку, например:

hθ(x)=θ0+θ1x1+θ2x2+θ3x1x2+θ4x21+θ5x22

На этом этапе мы также можем преобразовать его вЛинейная регрессияпроблема, пока новая функцияx_3=x_1x_2,x_4=x_1^2,x_5=x_2^2Вот и все.

Итак~, это все, что касается содержания недели, спасибо за терпеливое чтение.


hertzcat

2018-03-24