Linear Regress. From Scratch With Python
https://medium.com/sigmoid/linear-regression-from-scratch-with-python-5c33712a1cec
2 월 2 일
데이터 과학에서 가장 기본적인 개념 중 하나 인 저는 선형 회귀가 어떻게 작동하는지에 대한 기본을 다루는 것이 좋은 생각이라고 생각했습니다.
Github Repo에 대한 링크는 다음과 같습니다.
sarvasvkulpati / LinearRegression선형 회귀를 파이썬에서 처음부터 구현 � - sarvasvkulpati / LinearRegression
선형 회귀는 두 변수 사이의 선형 관계를 근사화하는 방법입니다. 그게 복잡해 보일지 모르지만 실제로는 집의 나이와 같은 입력 변수가 필요하며 그것이 판매되는 가격과 같은 다른 변수와 어떻게 관련되어 있는지를 알아내는 것입니다.
선형 관계가있는 데이터의 예
선형 회귀 분석에서는 집의 연령과 같은 입력 변수를 사용하고 다른 변수 (예 : 판매 가격)와의 관련성을 찾습니다.
데이터에 선형 관계 가있는 경우이를 사용합니다. 즉, 그래프에 점을 그릴 때 데이터는 대략 직선 모양입니다.
선형 회귀의 목적은 일련의 데이터 요소에 가장 잘 맞는 선을 찾는 것입니다.
일반적인 직감의 관점에서 선형 회귀 분석은 데이터에 맞는 선을 추측하고 부정확 한 정도를 확인한 다음 약간 더 정확 해 지도록 조정합니다. 가능한 한 오류를 줄일 때까지이 과정을 반복합니다.
선형 회귀는 다음 두 단계로 이루어집니다.
가설 함수의 매개 변수를 무작위로 초기화
이들이 복잡하게 들릴 수도 있지만 단계별로 살펴보고 각 요소가 의미하는 바를 이해합시다.
선형 회귀의 경우 모델을 학습하기 위해 선형 패턴을 따르는 데이터 세트가 필요합니다.
python 패키지 sklearn은 선형 데이터 세트를 생성하는 inbuilt 함수를 제공합니다 :
선형 방정식 m이 나타내는 그래프에서 직선을 나타내는 표준 형태의 광고가 얼마나 가파른 그라데이션 -를 , B는 나타내고 , Y intercept- 선이 Y 축이 교차하는 곳 .
이것을 학교에서 배운 첫 번째 방정식 중 하나로 기억할 수 있습니다.
가설 함수는 선형 회귀 표기법에서 똑같은 기능입니다.
우리가 변경할 수있는 두 변수 - m과 b -는 매개 변수 θ1과 θ0로 표현된다.
파이썬에서 함수를 다음과 같이 표현할 것이다.
처음에는 무작위로 매개 변수를 초기화합니다. 즉, θ1과 θ0에 임의의 값을 부여합니다. 이것은 임의의 줄을 출력합니다.
Python에서 matplotlib 및 numpy 라이브러리를 사용하여 그래프를 표시하는 함수를 만들 수 있습니다.
그런 다음 임의로 초기화 된 θ1 및 θ0 값이있는 선을 표시 할 수 있습니다
우리가 그 함수를 실행할 때, 무작위 라인을 출력 할 것이다.
분명히 위의 그래프에 그려진 선은 잘못되었습니다. 그러나 그것은 얼마나 틀린가? 이것이 바로 오류 기능 입니다. - 선의 총 오류를 계산합니다 . Mean Squared Error 함수 또는 MSE (문자 J로 표시됨)라는 오류 함수를 사용할 것입니다.
지금은 복잡해 보일 수도 있지만 실제로는 매우 간단합니다.
선이 얼마나 잘못되었는지 알아 내려면 각 점에서 얼마나 멀리 떨어져 있는지 알아야합니다. 이를 위해 예측값 h (xᵢ)에서 실제 값 y subt를 뺍니다.
코드에서 보이는 모습은 다음과 같습니다.
이제 함수가 얼마나 잘못되었는지 값을 얻었으므로이 오류를 줄이기 위해 함수를 조정해야합니다.
선형 회귀를 사용한 우리의 목표는 일련의 데이터 요소에 가장 잘 맞는 선을 찾는 것이 었습니다. 다른 말로하면 가장 잘못되었거나 오류가 가장 적은 줄입니다.
오류 (예 : 비용 함수를 그래프로 나타냄)에 대해 매개 변수를 그래프로 표시하면 아래 그래프와 비슷한 형태로 나타납니다. 그래프의 가장 낮은 지점에서 오류는 가장 낮습니다. 이 점을 찾아내는 것을 비용 함수 최소화 라고 합니다.
이를 위해 우리는 그래프 하단에서 무엇이 발생하는지 고려할 필요가 있습니다. 그라디언트는 0입니다. 그러므로 비용 함수를 최소화하기 위해 그라디언트를 0으로 설정해야합니다.
그라디언트는 함수의 미분으로 주어지며 함수의 부분 파생어는 다음과 같습니다.
우리는 다음 함수를 사용하여 파생 상품을 계산할 수 있습니다.
이제 그라디언트를 줄이기 위해 매개 변수를 업데이트해야합니다. 이를 위해 그라디언트 업데이트 규칙을 사용합니다.
알파 (α)는 우리가 학습율 (learning rate)이라고 부르는 것인데, 이는 적은 양으로 매개 변수를 업데이트 할 수있는 작은 숫자입니다 . 위에서 언급했듯이 그라디언트를 0에 가까워 지도록 업데이트하려고합니다 (하단). 학습 속도는 네트워크를 소량으로 곡선의 가장 낮은 지점으로 안내하는 데 도움이됩니다.
이제 우리는 오류를 점검하고 미분을 계산하며 가능한 한 오류가 낮아질 때까지 가중치를 업데이트하는 단계를 반복합니다. 이를 비용 함수 최소화라고합니다.
이제 모든 코드를 파이썬의 함수로 묶을 수 있습니다.
이 작업을 실행하면 θ1과 θ0가 무작위로 초기화 된 다음 1000 번 반복되어 매개 변수가 업데이트되어 오류가 줄어 듭니다. 100 회마다 선의 모습을 출력하여 진행 상황을 보여줍니다.
오류가 최소화되면 이제는 데이터를 근사시킬 수있는 최상의 선이 될 것입니다.
다음은 우리가 배운 핵심 용어입니다.
단순 선형 회귀 - 선형 상관 관계가있는 두 변수 간의 관계를 찾습니다. 예를 들어 집 크기와 집값 간의 관계를 찾는 것
선형 관계 - 그래프에 데이터 세트를 플롯하면 데이터는 대략 직선 모양에 놓입니다.
선형 방정식 - y = mx + b. 그래프상의 직선을 나타내는 표준 형식입니다. m는 구배 를 나타내, b는 y 절편을 나타냅니다 .
Gradient - 선이 얼마나 가파른 가요?
Y 절편 - 선이 y 축과 교차하는 곳
무작위 초기화 - 매개 변수에 임의의 값을 지정하여 시작합니다.
비용 함수 - 라인의 총 오차를 계산합니다.
비용 함수 최소화 - 오류가 최소화 될 때까지 비용 함수의 값을 줄입니다.
학습률 (alpha (alpha)) - 작은 양으로 매개 변수를 업데이트 할 수있는 작은 숫자입니다.