Python을 사용하여 처음부터 경사 하강 법 알고리즘

이 기사에서는 Gradient Descent Algorithm을 처음부터 구현할 것입니다.

1- 선형 회귀 란 무엇입니까?
2- 비용 함수 또는 손실 함수
3- 경사 하강 법 알고리즘
4- 경사 하강 법 알고리즘을위한 파이썬 코드 구현

더 이상 고민하지 않고 뛰어 들자.

선형 회귀 는 연속 값을 예측하는지도 학습 알고리즘입니다 . 예를 들면 다음과 같습니다. 주택 가격 예측?
종속 변수 (Y)와 하나 (단순 선형 회귀) 또는 그 이상 (다중 선형 회귀) 독립 변수 (X) 간의 관계를 모델링하는 선형 접근 방식입니다.

이 두 변수 간의 선형 관계를 다음과 같이 정의합니다.

선형 회귀 공식

비용 함수 또는 손실 함수 :
손실 함수와 비용 함수의 차이 : https://stats.stackexchange.com/questions/179026/objective-function-cost-function-loss-function-are-they-the-same-thing

비용 함수로 평균 제곱 오차 를 사용합니다 . MSE 는 관측치의 실제 값과 예측 값 간의 평균 제곱 차이를 측정합니다. 출력은 현재 가중치 집합과 관련된 비용 또는 점수를 나타내는 단일 숫자입니다. 우리의 목표는 MSE를 최소화하여 모델의 정확도를 높이는 것입니다.

간단한 선형 방정식 y = mx + b가 주어지면 MSE를 다음과 같이 계산할 수 있습니다.

MSE 공식

이제 Cost 함수가 MSE 라는 것을 알고 있습니다. 우리 가설에 가장 적합한 mb 값 을 찾기 위해이를 최소화하는 흥미로운 부분을 살펴 보겠습니다 : y = mx + b.

경사 하강 법 :

최소화하기 위해 MSE를 우리가 사용하는 그라데이션 하강을 우리의 비용 함수의 기울기를 계산합니다.

경사 하강 법은 경사도의 음수로 정의 된 가장 가파른 하강 방향으로 반복적으로 이동하여 일부 기능을 최소화하는 데 사용되는 최적화 알고리즘입니다. 머신 러닝에서는 경사 하강 법을 사용하여 모델 의 매개 변수 ( mb ) 를 업데이트합니다 . 매개 변수는 선형 회귀의 계수를 나타냅니다.

산 꼭대기에서 시작하여 음의 기울기로 지정된 방향으로 내리막을 시작합니다. 다음으로 음의 기울기를 다시 계산하고 (새 점의 좌표를 전달) 지정하는 방향으로 한 단계 더 나아갑니다. 그래프의 맨 아래에 도달하거나 더 이상 내리막 길을 이동할 수없는 지점 (국부적 최솟값)까지이 과정을 반복적으로 계속합니다 (비용 함수 MSE는 볼록 함수 (그릇 모양)이므로 결국 로컬 최소값으로 끝날 것입니다)

경사 하강 법

학습률 (알파) :

이러한 단계의 크기를 학습률 이라고합니다 . 높은 학습률로 우리는 각 단계마다 더 많은지면을 다룰 수 있지만 언덕의 경사가 지속적으로 변하기 때문에 가장 낮은 지점을 넘을 위험이 있습니다. 학습률이 매우 낮 으면 너무 자주 다시 계산하기 때문에 음의 기울기 방향으로 자신있게 이동할 수 있습니다. 낮은 학습률은 더 정확하지만 그래디언트를 계산하는 데 시간이 많이 걸리므로 바닥에 도달하는 데 매우 오랜 시간이 걸립니다.

이제 새로운 비용 함수를 사용하여 경사 하강 법을 실행 해 보겠습니다. 비용 함수에는 m (가중치)b (바이어스)의 두 가지 매개 변수가 있습니다 . 각각이 최종 예측에 미치는 영향을 고려해야하므로 편도 함수를 사용해야합니다. 각 매개 변수에 대한 비용 함수의 편도 함수를 계산하고 그 결과를 기울기에 저장합니다.

m과 b에 대한 미분

기울기를 해결하기 위해 새로운 mm 및 bb 값을 사용하여 데이터 포인트를 반복하고 편도 함수를 계산합니다. 이 새로운 기울기는 현재 위치 (현재 매개 변수 값)에서 비용 함수의 기울기와 매개 변수를 업데이트하기 위해 이동해야하는 방향을 알려줍니다. 업데이트의 크기는 학습률에 의해 제어됩니다.

m = m-L * Dm
b = b-L * Db

여기서 : L 은 학습률 (알파), Dm 은 m 에 대한 미분 , Db 는 b에 대한 미분입니다 .

파이썬 코드

질문이나 설명이 있으시면 주저하지 말고 저에게 연락하십시오. 감사합니다.

전체 소스 코드 + 데이터 세트 : https://github.com/jairiidriss/GradientDescentAlgorithmFromScratch

참조 :
https://ml-cheatsheet.readthedocs.io/en/latest/gradient_descent.html

Suggested posts

단순화 된 선형 회귀

선형 회귀 : 일련의 관측치에 직선을 맞추기.

단순화 된 선형 회귀

그게 다야. 가장 간단한 형태의 회귀 분석 예제 제가 측정 한 사람들의 그룹이 있는데, 제가 측정 한 두 가지 특징은 체중과 높은 수준입니다.

선형 회귀 모델이 보간을 좋아하는 이유는 무엇입니까?

선형 회귀 모델이 보간을 좋아하는 이유는 무엇입니까?

보간 또는 외삽 : 어느 것을 선택해야하며 그 이유는 무엇입니까? 보간이란 무엇입니까? :이 알 수없는 값이 관찰 된 데이터 세트의 상한과 하한 사이에 존재해야한다는 점을 감안할 때 추세와 관련된 알려진 값을 해석하여 알 수없는 값을 추정 할 수있는 통계적 방법입니다. 외삽이란 무엇입니까? : 이러한 알 수없는 값이 관찰 된 데이터 세트의 상한 및 하한 영역 밖에 있어야한다는 점을 고려할 때, 관련 알려진 값이 뒤 따르는 추세를 해석하여 알 수없는 값을 추정 할 수있는 통계적 방법입니다.

Related posts

"실용적인 프로그래머"의 5 가지 필수 사항

역대 베스트셀러 코딩 북의 요점

"실용적인 프로그래머"의 5 가지 필수 사항

Pragmatic Programmer는 1999 년에 처음 출판되었으며 이후 역대 최고의 프로그래밍 책으로 선정되었습니다. 저자 Andy Hunt와 David Thomas는 Agile Manifesto의 원저자 중 하나였으며 몇 가지 심각한 자격을 가지고 있습니다.

대규모 GraphQL 쿼리 공격으로부터 보호

공격자가 공개적으로 사용 가능한 GraphQL 인터페이스를 사용하여 사이트를 스크랩하거나 서비스 거부 공격을 실행하는 방법에 대해 알아보십시오. 이들은 4 가지 방법 중 하나로이를 수행 할 수 있습니다. 단일 대형 쿼리를 신중하게 구성하여 실행하고, 관련 데이터를 가져올 수있는 병렬 쿼리를 많이 작성하고, 일괄 요청을 사용하여 많은 쿼리를 연속적으로 실행하고, 마지막으로 많은 요청을 보냅니다.

기술 인터뷰의 사회적 구성 요소

코딩 문제는 스트레스가 많지만 스트레스에 대한 당신의 반응은 당신의 기술적 능력보다 더 크게 말합니다.

기술 인터뷰의 사회적 구성 요소

기술 업계의 직책을 위해 인터뷰 할 때 일반적으로 제안을 고려하기 전에 최소한 3 차례의 인터뷰를 거치게됩니다. 라운드는 일반적으로 다음과 같습니다. 그렇게 생각하면 잘못된 것입니다.

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자를 만드는 비 기술적 인 것들 나는이 기사를 작성하는 것을 한동안 미루고 있습니다. 나는 그것을 작성할 자격이 있다고 생각하지 못했습니다. 오늘은 쓸 때라고 생각했습니다.