ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 단순 선형회귀(Simple Linear Regression)
    머신러닝 2021. 12. 26. 17:44

    선형회귀란 무엇인가

    한 마디로 정리하자면, 어떠한 A를 보고 B를 예측해 보는 것이다. 이를 풀어서 설명하자면, A가 변화함에 따라서 B가 어떻게 변화하는 지 예측을 하고 선(Linear)로 표현 하는 것이다. 

     

    단순 선형 회귀

    단순 선형회귀는 위의 설명 내용에서 A라는 feature가 1개일 경우를 뜻한다. 2개 이상일 경우는 다중 선형 회귀(Multiple Linear Regression)이라 한다. 여기서 영향을 주는 A의 경우에는 독립 변수(independent variable) 또는 설명 변수(explanatory variable) 등으로 불리고 영향을 받는 B의 경우에는 종속 변수(dependant variable) 또는 반응 변수(response variable) 등으로 블린다.

     

    키와 몸무게를 예로 들어보자. 아래와 같이 키와 몸무게의 분포가 있다. 

      몸무게
    A 170 60
    B 175 65
    C 180 70
    D 185 75
    E 190 80

    위 분포를 선형 그래프로 나태내면 아래와 같다.

    여기서 우리는 '키가 195일 경우에 대략 몸무게가 85일 것이다.' 라는 것을 예측 할 수 있다.

     

    대략적으로 감이 왔으니 더 깊게 들어가보자.

    아래와 같이 집 값과 집 크기의 상관관계를 파악하고자 할 때, 모든 데이터를 가장 잘 대변해 주는 선을 선형 회귀라고 한다.

     

    만약 우리가 50평인 집의 가격을 알고 싶으면, 이 선에서 찾으면 된다. 이 선에 의하면, 50평인 집의 가격은 약 20억 원이라고 할 수 있다. 이렇게 하면 비록 정확하지는 않지만, 합리적의 가격을 예측 할 수 있다.

     

    가설 함수 사용

    그렇다면 우리는 적절한 선을 어떻게 찾을 수 있을까.

    최적선은 대충 눈으로만 봤을 때는 사람마다 다 다를 수 있다. 어느 정도 비슷하지만 각자의 기준에서 다른 선들이 그려질텐데, 이러한 선들을 찾는 함수를 가설 함수라고 한다.

     

    가설 함수 h$\theta​$(x)=$\theta_{0}$​+$\theta_{1}​$x1​+$\theta_{2}$​x2​+...+$\theta_{n}$​x을 단순 회귀에 적용하면 h$\theta$(x)=$\theta_{0}$​+$\theta_{1}​$x으로 정의 할 수 있다. 여기서 x는 입력 변수 집 크기다. 위의 집 값 예시에 각 3명이 가설 함수를 만들었다고 생각해보자. 

     

    3가지 가설 함수를 만들었는데, 이것을 비교하기 위해서는 어떠한 기준이 필요하다.

     

    평균 제곱 오차

     가설 함수를 평가하기 위해서는 여러가지 방법이 있는데, 그 중에서 가장 많이 쓰는 방법으로 평균 제곱 오차(Mean Squared Error)가 있다. 줄여서 MSE라고 부른다.

     

     MSE는 각 데이터(실제값)들이 가설 함수(예측값)에서 얼마나 차이가 있는지 계산하는 것이다. 아래 그래프를 참고해보면, 집의 크기 47평을 가설 함수에 넣을 경우에 집 값이 18.8억으로 예측된다. 하지만 실제 가격은 22억으로 -3.2억이 차이난다. 또한 39평의 집을 가설 함수에 대입하면 15.6억으로 예측되지만 실제 가격은 9억으로 6.6억의 차이가 있다.

     이러한 차이들을 각각 제곱을 한 후 다 합한 후, 그것의 갯수만큼 나누어 주어 평균을 구하는 것이다. 수학 공식으로 표현하자면, 

    MSE = (-3.2**2+6.6**2+⋯)​/14 이다. 평균 제곱 오차가 크다는 건 가설 함수와 데이터 간의 오차가 크다는 거고, 결국 데이터를 잘 표현해 내지 못한 것이다.

     

     이제 오차를 제곱 해주는 이유를 알아보자. 첫 번째 이유는 양수와 음수일 경우 차이 값이 제대로 표현되지 않는 것에 있다. 각 오차들을 더 할 때 서로 상쇄되니 제대로 파악이 될 수 없다. 두 번째 이유는 오차의 값을 부각시키기 위해서다. 더 큰 값을 해줄 수록 각 차이가 얼마나 큰지 우리가 더 잘 알 수 있기 때문이다.

     

    이 밖에 여러 평가지표는 별도로 정리하여 포스팅 하도록 하자.

     

    그래프 출처: 코드잇 머신러닝

    참고자료

    기준모델

    Scikit-Learn

    읽어보세요

    최소제곱법

    (참고) 더 세련된 시각화툴: Plotly

    ipywidgets interact

    지도학습 vs 비지도학습

    댓글

Designed by Tistory.