Линейная регрессия с использованием метода градиентного спуска [объяснено на примере кода]
Опубликовано: 2020-12-21Машинное обучение по-прежнему набирает обороты, независимо от того, стремитесь ли вы стать разработчиком программного обеспечения, специалистом по данным или аналитиком данных. Чтобы серьезно заняться линейной регрессией, вы должны хорошо разбираться в Python. Начало работы на начальном этапе может быть утомительным занятием, эта статья поможет вам лучше понять регрессию.
Метод градиентного спуска выбирается в различных итерациях из-за методов оптимизации, которые он может предложить. С помощью алгоритма можно уменьшить размер, например, логистической регрессии и нейронной сети. Прежде чем начать с градиента, давайте просто взглянем на линейную регрессию.
Читайте: Алгоритмы машинного обучения для науки о данных
Оглавление
Что такое линейная регрессия?
Это линейный подход, используемый для моделирования связи между зависимой переменной и одной или несколькими независимыми переменными. Линейная зависимость между такими переменными будет выражена в формате уравнения ay=mx+b.
Это контролируемый алгоритм машинного обучения, который улучшит свою кривую обучения от заданной переменной x, зависящей от x, и y в качестве другой, ответственной за возникновение эффекта. Этот характер помогает предсказать значения и факторы достоверности для x и y.
Что такое градиентный спуск?
Использование градиентной регрессии предполагает оптимизацию алгоритма, используемого для нахождения значений необходимых параметров функции, что позволяет напрямую минимизировать стоимость функции.

Давайте разберемся в концепции со сценарием. Представьте, что вы хотите спуститься в крепость в кромешной тьме. Во время этого давайте предположим, что вы полностью инвалид и вам нужно найти кратчайшее и самое легкое расстояние, чтобы спуститься. Градиентный спуск будет ресурсом, используемым для поиска оптимального пути достижения пункта назначения. С базовым вводом направления алгоритм мог бы составить карту и предложить лучший маршрут.
Градиент является одним из наиболее часто используемых и широко распространенных алгоритмов машинного обучения. Также считается, что он закладывает основу для освоения машинного обучения на более ранних этапах.
Для лучшего приближения градиента попробуем реализовать его на примере кода, работающего на питоне с помощью NumPy.
из импорта NumPy *
# у = тх + б
# m — наклон, b — точка пересечения с осью y
def calculate_error_for_line_given_points (b, m, точки):
общая ошибка = 0
для i в диапазоне (0, len (точки)):
х = точки [я, 0]
у = точки [я, 1]
totalError += (y – (m * x + b)) ** 2
вернуть totalError / float (len (points))
def step_gradient (b_current, m_current, points, learningRate):
б_градиент = 0
м_градиент = 0
N = число с плавающей запятой (длина (точки))
для i в диапазоне (0, len (точки)):
х = точки [я, 0]
у = точки [я, 1]
b_gradient += -(2/N) * (y – ((m_current * x) + b_current))
m_gradient += -(2/N) * x * (y – ((m_current * x) + b_current))
new_b = b_current – (learningRate * b_gradient)
new_m = m_current – (learningRate * m_gradient)
вернуть [new_b, new_m]

def градиент_descent_runner (очки, start_b, start_m, learning_rate, num_iterations):
б = начальный_б
м = начальное_м
для i в диапазоне (num_iterations):
б, м = шаг_градиент (б, м, массив (точки), скорость_обучения)
возврат [б, м]
защита запуска():
точки = genfromtxt («data.csv», разделитель =»,»)
скорость_обучения = 0,0001
initial_b = 0 # начальное предположение о пересечении оси y
initial_m = 0 # предположение о начальном наклоне
число_итераций = 1000
print «Начало градиентного спуска в точке b = {0}, m = {1}, error = {2}».
печатать «Бегу…»
[b, m] = gradient_descent_runner (точки, initial_b, initial_m, learning_rate, num_iterations)
напечатать «После {0} итераций b = {1}, m = {2}, error = {3}».
если __name__ == '__main__':
бегать()
Ссылка на код
Это визуальное представление программы поиска градиента, в которой задачи решаются в линейной регрессии путем нанесения точек на одну линию. Код представляет собой демонстрацию того, как он работает, и помогает установить несколько точек вдоль линии. Градиентный спуск пытается найти наилучшие значения этих параметров относительно функции ошибок.
Код содержит своеобразную функцию, помеченную как «выполнить». Это помогает определить набор параметров, используемых в алгоритме, чтобы сделать начальный набор прогнозов на основе поведения переменных и наклона линии. Другие факторы включают количество итераций, необходимых для достижения градиентного спуска в формате, показанном ниже:
initial_b = 0 # начальное предположение о пересечении оси y
initial_m = 0 # предположение о начальном наклоне
число_итераций = 1000
Вы можете легко прийти к пониманию, что метод Градиент довольно прост и понятен. Как только вы поймете его функциональные возможности, единственной частью, на которой вам нужно сосредоточиться, является стоимость функции, которую вы хотите оптимизировать.

Цель состоит в том, чтобы приложить непрерывные усилия, чтобы сделать разные итерации для каждого из значений переменных, оценить их стоимость и создать новые переменные, которые инициируют лучшую и меньшую стоимость в программе.
Обязательно прочтите: вопросы для интервью по машинному обучению
Советы по градиентному спуску
1. Скорость обучения
Протокол оптимизации помогает уменьшить значение скорости обучения даже при меньших десятичных дробях, попытаться перетасовать разные значения, подходящие для платформы, а затем выбрать лучшее рабочее значение. Обучение может быть намного быстрее и плодотворнее, чтобы это произошло, обязательно ограничьте количество проходов через каждый набор данных. Идеальным числом будет от 1 до 10.
2. График средней стоимости
Время обучения для каждого экземпляра набора данных может вызвать задержку из-за дополнительного времени, затрачиваемого на выполнение алгоритма. Для лучших результатов выберите среднее значение более 100 или 1000, чтобы получить лучшие шансы найти лучшую тенденцию обучения для алгоритма.
Резюме
В этой статье вы узнали о градиенте и о том, как создать такой алгоритм, который помогает делать точные и более эффективные прогнозы с помощью изученной регрессионной модели. Чтобы понять всестороннее и более глубокое понимание реальных сценариев, зарегистрируйтесь в upGrad. Мы предлагаем кураторские курсы, специально структурированные для начинающих специалистов по данным и соискателей машинного обучения.