경사하강법을 사용한 선형 회귀 [코딩 예제로 설명]

게시 됨: 2020-12-21

기계 학습은 소프트웨어 개발자, 데이터 과학자 또는 데이터 분석가가 되든 상관없이 여전히 진행 중입니다. 선형 회귀에 진지한 노력을 기울이려면 Python에 정통해야 합니다. 초기 단계에서 시작하는 것은 지루한 작업일 수 있습니다. 이 기사는 회귀를 더 철저히 이해하는 데 도움이 될 것입니다.

경사 하강법은 제공해야 하는 최적화 기술 때문에 다양한 반복에서 선택됩니다. 알고리즘을 사용하면 로지스틱 회귀 및 신경망과 같은 크기를 줄이는 것이 가능합니다. 그래디언트를 시작하기 전에 선형 회귀를 살펴보겠습니다.

읽기: 데이터 과학을 위한 기계 학습 알고리즘

목차

선형 회귀란 무엇입니까?

종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링하는 데 사용되는 선형 접근 방식입니다. 이러한 변수 간의 선형 관계는 y= mx+b 방정식 형식으로 표현됩니다.

주어진 x 종속 변수와 효과를 일으키는 다른 변수 y에서 학습 곡선을 향상시키는 모니터링되는 기계 학습 알고리즘입니다. 이러한 특성은 x 및 y에 대한 값과 확실성 요인을 예측하는 데 도움이 됩니다.

경사하강법이란?

기울기 회귀의 사용은 함수의 비용을 직접 최소화할 수 있는 함수의 필수 매개변수 값을 찾는 데 사용되는 알고리즘을 최적화하는 것을 포함합니다.

시나리오를 통해 개념을 이해하고 캄캄한 환경에서 요새를 내려가고 싶다고 상상해 보겠습니다. 이 과정에서 당신이 완전히 장애인이고 다시 내려올 수 있는 가장 짧고 쉬운 거리를 찾아야 한다고 가정해 봅시다. 경사하강법은 목적지에 도달하는 최적화된 방법을 찾는 데 사용되는 리소스입니다. 기본 방향 입력을 사용하면 알고리즘이 차트를 작성하고 최적의 경로를 제안할 수 있습니다.

기울기는 기계 학습에서 가장 널리 사용되는 알고리즘 중 하나이며 초기 단계에서 기계 학습을 마스터하기 위한 토대를 마련하는 것으로 간주됩니다.

그라디언트에 대한 더 나은 근사치를 위해 NumPy의 도움으로 파이썬에서 작업하면서 샘플의 코드로 그라디언트를 구현해 보겠습니다.

NumPy 가져오기에서 *

# y = mx + b

# m은 기울기, b는 y절편

def compute_error_for_line_given_points(b, m, 포인트):

총 오류 = 0

범위(0, len(points))의 i에 대해:

x = 포인트[i, 0]

y = 포인트[i, 1]

totalError += (y – (m * x + b)) ** 2

return totalError / float(len(points))

def step_gradient(b_current, m_current, 포인트, learningRate):

b_그라디언트 = 0

m_그라디언트 = 0

N = float(len(포인트))

범위(0, len(points))의 i에 대해:

x = 포인트[i, 0]

y = 포인트[i, 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 gradient_descent_runner(점, 시작_b, 시작_m, 학습_속도, num_iterations):

b = 시작_b

m = 시작_m

범위(num_iterations)의 i에 대해:

b, m = step_gradient(b, m, 배열(점), learning_rate)

반환 [b, m]

def 실행():

포인트 = genfromtxt("data.csv", 구분 기호 =",")

learning_rate = 0.0001

initial_b = 0 # 초기 y절편 추측

initial_m = 0 # 초기 기울기 추측

num_iterations = 1000

"b = {0}, m = {1}, error = {2}에서 기울기 하강 시작"을 인쇄합니다.format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))

"실행 중..." 인쇄

[b, m] = gradient_descent_runner(포인트, initial_b, initial_m, learning_rate, num_iterations)

인쇄 "{0} 반복 b = {1}, m = {2}, 오류 = {3}".format(num_iterations, b, m, compute_error_for_line_given_points(b, m, points))

__name__ == '__main__'인 경우:

운영()

코드 참조

이것은 선형 회귀에서 점을 한 줄로 표시하여 문제를 해결하는 그래디언트 검색 프로그램의 시각적 표현입니다. 이 코드는 작동 방식에 대한 데모이며 선을 따라 여러 점을 설정하는 데 도움이 됩니다. 기울기 하강법은 오류 함수와 관련된 이러한 매개변수에 대한 최상의 값을 찾으려고 시도합니다.

이 코드에는 'run'이라는 고유한 기능이 포함되어 있습니다. 알고리즘에 사용되는 매개변수 집합을 정의하여 변수의 동작과 선 기울기를 기반으로 초기 예측 집합을 만드는 데 도움이 됩니다. 다른 요인에는 아래 표시된 형식으로 경사하강법을 달성하는 데 필요한 반복 횟수가 포함됩니다.

initial_b = 0 # 초기 y절편 추측

initial_m = 0 # 초기 기울기 추측

num_iterations = 1000

Gradient 방법이 매우 간단하고 간단하다는 것을 쉽게 이해할 수 있습니다. 기능 기능을 이해하고 나면 집중해야 하는 유일한 부분은 최적화에 관심이 있는 기능 비용입니다.

목표는 각 변수 값에 대해 서로 다른 반복을 수행하고, 비용을 평가하고, 프로그램에서 더 좋고 저렴한 비용을 시작하는 새로운 변수를 생성하기 위해 지속적으로 노력하는 것입니다.

필독: 기계 학습 인터뷰 질문

경사하강법을 위한 팁

1. 학습률

최적화 프로토콜은 작은 소수에서도 학습률 값을 줄이고 플랫폼에 적합한 다른 값을 섞은 다음 최상의 작업 값을 선택하는 데 도움이 됩니다. 학습은 훨씬 빠르고 유익할 수 있으므로 각 데이터 세트를 통과하는 패스 수를 제한해야 합니다. 이상적인 숫자는 1에서 10 사이입니다.

2. 평균 비용 플롯

각 데이터 세트 인스턴스에 대한 학습 시간은 알고리즘 실행 중에 소요되는 추가 시간으로 인해 지연이 발생할 수 있습니다. 더 나은 결과를 얻으려면 알고리즘에 대한 더 나은 학습 경향을 찾을 확률을 높이려면 100 또는 1000보다 큰 평균을 선택하십시오.

요약

이 기사에서는 기울기와 그러한 알고리즘을 만드는 방법에 대해 배웠습니다. 이는 학습된 회귀 모델을 사용하여 정확하고 효과적인 예측을 하는 데 도움이 됩니다. 실제 사례 시나리오를 통해 훨씬 포괄적이고 심층적인 수준에서 이해하려면 upGrad에 등록하십시오. 데이터 과학자 및 기계 학습 지원자를 지망하는 사람들을 위해 특별히 구성된 선별된 과정을 제공합니다.

AI 주도 기술 혁명 주도

기계 학습 및 인공 지능 PG 디플로마
더 알아보기