본문 바로가기
코딩 독학/모두의딥러닝

[모두의딥러닝] 3장. 선형회귀 (Logistic regression)

by 효니루 2020. 9. 29.

선형회귀란?

한 개 이상의 독립변수(설명변수, x)와 종속변수(y)의 상관관계를 모델링하는 회귀기법이고, 이에 따라 만들어진 회귀식을 선형모델이라고 한다. 하나의 y에 하나의 x가 대응되는 경우 단순선형회귀, 둘이상의 x가 대응되는 경우 다중선형회귀 라고 한다.

 

활용

1. 값을 예측할 때 사용한다. → y가 없는 x에 대하여 기존의 데이터를 기반으로 만든 선형모델을 통해 y를 예측한다.

2. x와 y의 관계들을 정량화한다. → 다중선형회귀라면 여러특징의 x들중 y와 상관도가 가장 높은게 무엇인지를 알아낼 수 있다. 

쉽게 말해 좌표위에 점이 이렇게 찍혀있으면 얘들을 가장 잘 설명할 수 있는 직선을 하나 쫙 긋는다는 말이다.

y = ax + b라는 선을 그을텐데, 주어진 (x, y)들을 가지고 최적화된 a와 b라는 파라미터를 구하는 것이 목적이고, 그 과정이 회귀분석이다.

 

 

 

 

 

최소제곱법

주어진 x값이 하나일 때 가장 정확한 직선의 기울기(a)와 y절편(b)을 구하는 공식이다.

 

 

 

 

 

 

 

이 식을 통해 y = ax + b 라는 직선을 구할 수 있다. 하지만 입력값(x)이 여러개일 때는 과정이 복잡하기 때문에 '평균제곱오차(mean square error, MSE)'라는 방식을 사용한다.

 

평균제곱오차

일단 임의의 (a, b)를 설정하여 직선을 그리고, 기존 데이터들과의 오차가 최소가 되는 직선을 찾는다.

 

예측값(y_hat)과 실제값(y)의 차이는 음수일 수 있기때문에 제곱하여 평균을 내며, 이 값이 최소인 (a, b)를 가진 직선이 최적화된 예측함수일 것이다.

 

 

실습

1. 최소제곱법 : 공부한시간(x) 과 성적(y)의 관계

 

2. 평균제곱오차  

주의 :  mse 함수는 말그대로 함수고, 행렬의 원소끼리 연산이 가능한 np.array로 인자를 변환해 넣어야한다. 처음에 그냥 

mse(predict_result, y) 로 넣었다가 오류가 났다. Python list 는 원소끼리의 연산이 안 됨.

 

 

댓글