1-1. 선형 회귀(Linear regression)

2021. 4. 26. 17:03Machine Learning

우리는 일상 속에서 '선형 모델'을 쉽게 찾아볼 수 있다. 

 

나이에 따른 성인병 발병확률이나, 소득과 비만율과의 상관지수 등이 그 예가 될 수 있다. 

 

선형 회귀(Linear regression)는 이러한 선형 모델을 분석하기 위한 방법으로, 

 

여러 샘플 입력(X)와 그에 대한 결과값(y)가 주어졌을 때

 

데이터셋(dataset)을 분석하여 해당 데이터가 어떤 양상을 띠는지 선(line)으로서 추정하는 모델이다. 

 

    X = 2*np.random.randn(50,1)
    y = 4 + 3*X + np.random.randn(50,1)
    plt.scatter(X,y)
    plt.xlabel('X')
    plt.ylabel('y')
    plt.show()

가우시안 분포로 생성된 난수들

1의 mean 값을 가지는 50개의 Gaussian Distribution 난수를 X와 y축에 각각 생성해주었다. 

 

이 데이터 분포는 잡음(noise)가 섞여있긴 하지만 (-3, -5)와 (4,15)로 이어지는 하나의 직선이 이 데이터셋을 

 

잘 표현하는 모델일 것이다. 

 

선형 회귀 모델은 다음과 같이 표현될 수 있다. 

 

                           선형 회귀 모델                          

각각 특성과 그 특성에 대한 가중치의 합과 편항(bias)를 더하여 입력 셋에 대한 예측값을 출력한다. 

 

이를 가설함수(hypothesis function)이라 부른다. 

 

선형회귀의 목적은 이 가설함수를 최대한 실제값과 비슷하게 추정할 수 있도록 가중치와 편향을 업데이트하는 것이다! 

 

선형 회귀 모델에서는 평균 제곱 오차(MSE)를 성능 측정 지표로서 널리 사용한다. 

 

선형 회귀 모델을 훈련시키면 이 MSE를 최소화하는 방향으로 가중치와 편향이 업데이트 된다. 

 

평균 제곱 오차

N개의 샘플 각각에 대한 추정치실제값 간 차이를 제곱한 것의 총합을 샘플 수(N)로 나눈 평균값을 MSE라 한다. 

 

'좋은 모델'이라 함은, 추정치와 실제값과의 차이를 최소화시켜야한다.

 

머신러닝에서는 이와 같은 함수를 비용 함수라 한다.