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

Данные
Данные состоят из двух столбцов. Первый столбец — это население города (в 10 000), а второй столбец — прибыль фудтрака в этом городе (в 10 000 долларов). Отрицательное значение прибыли указывает на убыток. Мы хотели бы построить модель линейной регрессии для прогнозирования прибыли на основе населения.

Линейная модель выглядит следующим образом: θ0 — член пересечения, а θ1 — наклон. Вход x — это население, а выход hθ(x) — прогноз прибыли.

визуализировать данные с помощью matplotlib

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

Вычисление стоимости J(θ)

Цель линейной регрессии — минимизировать функцию стоимости J(θ). Функция стоимости составляет всего половину среднего квадрата ошибки для всех обучающих примеров.

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

Давайте реализуем градиентный спуск, чтобы минимизировать функцию стоимости, обновив θ для всех обучающих примеров или их мини-партии. Мы обновляем значения θj через множество итераций, чтобы минимизировать стоимость J(θ). Низкая стоимость означает, что модель точно предсказывает прибыль с учетом количества населения в городе. Здесь мы применяем пакетный градиентный спуск. Для каждой итерации мы обновляем θ один раз. С каждым шагом градиентного спуска ваши параметры θj приближаются к оптимальным значениям, которые позволят достичь наименьшей стоимости J(θ). Обратите внимание, что градиент представляет собой частные производные функции стоимости по θ. Если мы нанесем на график стоимость, мы должны увидеть, как она уменьшается по итерациям.

Стоимость должна постоянно снижаться

Во время обучения θ обновляется для каждой итерации. Стоимость должна продолжать снижаться до конвергенции.

Как θ изменяется на итерациях обучения

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

Как линейная модель соответствует обучающим данным?

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

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

Теперь мы узнали θ и продемонстрировали, что он хорошо подходит для обучающих данных. Следовательно, мы могли бы использовать изученные параметры, чтобы делать новые прогнозы. Прогноз — это просто результаты линейного уравнения после замены θ0 и θ1 изученными значениями.

Визуализация J(θ) и градиентного спуска

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

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