Линейная регрессия с использованием алгоритма градиентного спуска: ваш первый шаг к машинному обучению.
Так что шумиха вокруг машинного обучения по-прежнему повсюду. Неважно, являетесь ли вы научным сотрудником, разработчиком программного обеспечения, адвокатом или любым другим лицом. Вы должны иметь хотя бы некоторые базовые знания о машинном обучении, чтобы справиться с самой важной технологией человечества. Начало работы с машинным обучением может быть пугающим, но я сделал небольшой шаг, чтобы вы поняли машинное обучение довольно легко и проще.
Чтобы заблаговременно начать машинное обучение, попробуйте сначала узнать о «Линейной регрессии» и запрограммировать свою собственную программу с нуля, используя Python. Линейная регрессия - это очень простой, но самый эффективный алгоритм машинного обучения с учителем, заимствованный из статистики. Этот алгоритм работает по основному принципу поиска ошибки. Существуют различные «алгебраические методы», которые можно использовать для решения задачи линейной регрессии, но здесь мы используем градиентный спуск.
Почему именно градиентный спуск?
Потому что это один из лучших методов оптимизации, который мы можем использовать для решения различных задач машинного обучения. например. Логистическая регрессия, нейронная сеть. но здесь мы собираемся обсудить линейную регрессию.
Вот упрощенное определение вашего понимания.
Что такое линейная регрессия?
# 1 Это контролируемый алгоритм машинного обучения, который учится на заданной x зависимой переменной и Y как на количественно измеряемой переменной и прогнозирует новый Y на основе данного нового X.
# 2 Он работает определенным образом таким образом, чтобы найти наиболее подходящую линию из заданных данных.
Ясно сказано, что цель линейной регрессии - подогнать линию к набору точек. Рассмотрим следующий график.
Для этого мы будем использовать стандартное уравнение наклона y = mx + b, где m - наклон линии, а b - точка пересечения линии с y. Чтобы найти лучшую линию для наших данных, нам нужно найти лучший набор значений наклона m и y-точки пересечения b.
Что такое градиентный спуск?
Градиентный спуск - это алгоритм оптимизации, используемый для нахождения значений параметров (коэффициентов) функции (f), которая минимизирует функцию стоимости (стоимость).
Чтобы понять это проще, возьмем пример. Предположим, вы находитесь на вершине горы и вам нужно добраться до озера, которое находится в самой низкой точке горы. Изюминка в том, что вам завязаны глаза, и вам не видно, куда вы направляетесь. Итак, какой подход вы выберете, чтобы добраться до озера?
Лучше всего проверить землю рядом с вами и понаблюдать, где она имеет тенденцию опускаться. Это подскажет, в каком направлении вам следует сделать первый шаг. Если вы пойдете по спускающейся тропе, очень вероятно, что вы дойдете до озера.
На данный момент я надеюсь, что вы поняли фундаментальную концепцию линейной регрессии и градиентного спуска. Теперь перейдем к кодированию.
Стандартный подход к решению этого типа проблемы - определить функцию ошибок (также называемую функцией стоимости) путем включения функции градиентного спуска, которую мы можем достичь, которая измеряет, насколько хорошо подходит данная линия. Эта функция будет принимать (m, b ) и вернуть значение ошибки в зависимости от того, насколько хорошо линия соответствует нашим данным. Чтобы вычислить эту ошибку для данной строки, мы будем перебирать каждую точку (x, y) в нашем наборе данных и суммировать квадратные расстояния между значением y каждой точки и значением y линии-кандидата (вычисленным при mx + b). Принято возводить это расстояние в квадрат, чтобы убедиться, что оно положительное, и сделать нашу функцию ошибок дифференцируемой.
#! Запомните это уравнение суммы квадратов ошибок.
Чтобы запустить градиентный спуск для этой функции ошибок, нам сначала нужно вычислить ее градиент. Градиент будет действовать как компас и всегда укажет нам под гору. Чтобы вычислить это, нам нужно будет дифференцировать нашу функцию ошибок. Поскольку наша функция определяется двумя параметрами (m
и b
), нам нужно будет вычислить частную производную для каждого. Эти производные:
#! Помните эту сумму частных производных уравнения с квадратной ошибкой.
Переменная learningRate
контролирует, насколько большой шаг под гору мы делаем во время каждой итерации. Если мы сделаем слишком большой шаг, мы можем перешагнуть минимум. Однако, если мы будем делать небольшие шаги, для достижения минимума потребуется много итераций.
Возможно, именно поэтому вам нужно знать концепцию, чтобы понять градиентный спуск. Перейдите по ссылке на github, где я сохранил для вас пример набора данных, который показывает влияние количества часов обучения на оценку по предмету или наоборот. Так выглядит весь код. Щелкните здесь, чтобы получить код, чтобы узнать больше.
Конечное примечание:
Пример кода для описанной выше проблемы можно найти здесь.
Для простоты я решил использовать приведенный выше пример линейной регрессии. Мы использовали градиентный спуск для итеративной оценки m
и b
, однако мы также могли решить их напрямую. Мое намерение состояло в том, чтобы проиллюстрировать, как градиентный спуск можно использовать для итеративной оценки / настройки параметров, поскольку это требуется для решения множества различных задач в машинном обучении.
Кредиты:
- Введение в Градиентный спуск и линейную регрессию
- 2. Сирадж Раваль Канал на YouTube