Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Hello AI

[Ch.01] 선형회귀란(Linear Regression) 본문

카테고리 없음

[Ch.01] 선형회귀란(Linear Regression)

콩디 2023. 8. 24. 14:58

1. Notation in this chapter

x: 독립변수 y: 종속변수 p, q: 파라미터 Simple Linear Regression: 단순 선형회귀 Multiple Linear Regression: 다중 선형회귀 cost function, loss function: 비용함수
           

 

2. Regression 과 Linear Regression 의 개념

2-1. Regression 에 대한 간단한 기본 개념.

회귀(Regression) 란 여러 변수로 구성된 데이터들이 주어져 있을 때, 특정 변수와 다른 나머지 변수 간 관계를 알아내는(모델링하는) 과정을 말한다. 쉽게 이해하기 위해 아래와 같이 아주 간단한 식이 있다고 가정한다. 

\[ y = px+q\]

\(x\) 와 \(y\) 모두 '변수' 인데, 우변의 \(x\) 는 입력값이 대입되는 독립변수, 좌변의 \(y\) 는 출력값을 나타내는 종속변수가 된다. 파라미터 \(p\) , \(q\) 는 주어진 데이터에서 결정이 되는 파라미터들이다. 이 때 종속변수 \(y\) 와 독립변수 \(x\) 사이의 관계를 알아보는 회귀를 진행해 볼 수 있을 것이다. 일례로 아래와 같은 데이터들이 주어져 있다고 할 때, 

\(x\) \(y\)
1 4
2 7
3 10
4 13

Table 1. 주어진 \(x\) 와 \(y\) 데이터. 

두 변수간 상관도는 다음과 같이 그려볼 수 있다. 

Figure 1. \(x\), \(y\) 간 상관도

2-2. Linear Regression 에 대한 간단한 기본 개념.

그럼 이 상관도의 점들 사이에 직선을 긋고, 이 직선의 방정식을 가지고 두 변수의 관계를 알아볼 수가 있는데, 이 때 점들 사이를 나누는 직선을 회귀 직선(Regression Line)이라고 한다. 만약 데이터들이 Table 1의 예시처럼 아주 쉽게 주어진다면 Figure 1 처럼 상관도를 그리고, 그 위에 똑바른 직선을 그어 두 변수간 관계를 모델링하는 회귀가 쉽게 완성 될 것이다. 하지만 현실세계에서의 데이터는 이와 다르게 복잡하며, 만약 아래의 Figure 2-(a) 처럼 데이터들이 주어져 있다면 이 땐 직선을 Figure 2-(b)와 같이 (최대한 두 변수 간 관계가 잘 반영되도록) 그려서 두 변수간 관계를 모델링하는 회귀를 해 볼 수 있다.

Figure 2. 좌-(a) 복잡한 \(x\) 와 \(y\) 데이터. 우-(b) 복잡한 \(x\) 와 \(y\) 데이터 간 상관도와 회귀 직선

 

어쨌든 결론적으로, 이렇게 직선(line)을 통해 변수들 간 관계를 알아보는 방법을 두고 선형 회귀(Linear Regression) 라고 부를 수 있다. 

 

3. Model 의 파라미터를 구하기 위한 비용함수.

3-1. model이란?

쉽게 생각해서 

\[ y = px+q\]

가 바로 모델이라고 생각하면 된다. 현재 이 모델은 파라미터 \(p\) , \(q\) 를 통해 규정 되어 있다. 위 2-2에서 '두 변수 간 관계가 잘 반영되도록 직선을 그린다' 라고 했는데, 변수 간 관계가 잘 반영되려면 이 파라미터들의 값을 최대한 실제 데이터들에 맞게 추정을 해야한다. 회귀 부분에서 사용했던 Table 1의 예시를 보면, 다음과 같이 정리할 수가 있겠다.

1. Table 1. 을 보았을 때 우리는 종속변수 y와 독립변수 x 간 관계가 \[ y = 3x+1\] 임을 알 수 있다.

2. 이에 우리는 모델을 임의로 설계 할 수 있다. 바로 \[ y = px+q\] 이렇게.

3. 2에서 설계한 모델에 있는 파라미터 p, q 각각이 3, 1 이 되게 회귀 직선(Regression Line)을 그어 두 변수간 관계를 모델링하는 회귀를 완성해 본다.

 

3-2. 비용함수 (cost function 또는 손실함수(loss function), 목적함수(objective function) 이라고도 불림.)

일반적으로 변수들(독립변수들) 앞에 붙은 파라미터를 가중치(weight), 그 외에 상수값을 편향(bias)라고 부르는데, 한 가지 주의할 점은 데이터 중심의 회귀방정식에서는 x, y 들이 변수였으나 비용함수에서는 파라미터들(이를테면 p, q)가 변수가 된다. 즉 비용함수는 파라미터들을 알아내기 위한 방정식이라는 것이다.

 

가장 간단하게 사용해 볼 수 있는 비용함수는 어떤 형태일까? 바로 '실제 데이터 중 종속변수의 값 - 우리가 설계한 모델에 데이터를 대입해 나온 예측값' 을 비용함수로 사용하는 것이다. 즉

\[ C_k (Cost function) = \sum_{k=1}^4 y_k - (px_k+q)\]

다음과 같이 말이다. p와 q를 각각 2, 1로 설계했다고 하면 Table 1의 data를 기준으로 k = 1,2,3,4 에 해당하는 각각의 yk값 4, 7, 10, 13 이 얻어지고, 내가 설계한 모델에 대해서는 2*1+1, 2*2+1, 2*3+1, 2*4+1 즉 3, 5, 7, 9 가 얻어진다. 이때의 cost function의 값은 (4-3=1), (7-5=2), (10-7=3), (13-9=4) 를 모두 합친 1+2+3+4 = 10 이 얻어진다. 만약 p와 q를 실제값에 맞게 3과 1로 설정했다면 cost function 값은 0, 0, 0, 0 의 '최소화(minimize)'가 가능하며, 이렇게 비용함수가 최솟값이 되는 방향으로 파라미터를 설정하는 작업을 최적화(Optimization) 이라고 한다. 

 

그러나 이 역시, 실제 데이터는 매우 복잡하다는 점을 감안해야 하며 만약 yk값이 4, -12, 389, 22 와 같이 얻어진다면 cost function의 값은 (4-3 =1), (-12-5=-17), (389-7=382), (13-22=-9) 1-17+382-9 =  357 이라는, 뭔가 분석하기 어려운 값이 나온다. 따라서 일반적으로 cost function으로 사용 되는 방정식은 보통 다음과 같다.

\[ C_k (Cost function) = \sum_{k=1}^m \left [y_k - (px_k+q)\right ]^2 \]

또는 아래와 같이 쓰이기도 한다. 이 cost function을 사용하면 실제 데이터와 예측 데이터 간 오차가 - 값으로 나오지 않는다. 제곱을 했으므로.

\[ C_k (Cost function) = \frac{1}{2m} \sum_{k=1}^n \left [y_k - (px_k+q)\right ]^2 \]

위 식에서 시그마 앞에 보면 1/2m 이 곱해져 있다. 데이터의 개수인 1/m 으로 나누는 이유는 저렇게 제곱한 오차에 대한 평균을 얻기 위한것이다. 1/2 의 의미는 나중에 나오겠지만 위 식을 미분했을때 나오는 2 를 제거하기 위해서다. 

4. 미분 그리고 벡터 및 행렬의 연산을 이용한 파라미터 구하기.

4-1. 파라미터의 값을 어떻게 실제 데이터와 가깝게 구하는가?

다시 한 번 cost function의 식을 보면 다음과 같다.

\[ C_k (Cost function) = \frac{1}{2m} \sum_{k=1}^n \left [y_k - (px_k+q)\right ]^2 \]

이 때 실제 데이터가 (x=1, y=4) 그리고 (x=2,y=8) 이렇게 2개만 주어져있고 설계한 모델은 px 이라고 가정해보겠다.(편의상 q는 생략.) cost function을 구한 결과는 다음과 같다.

\[ C_k (Cost function) = \frac{1}{2*2(=m)} \left [(4 - (1*p))^2 + (8 - (2*p))^2 \right ] \]

\[ = \frac{1}{2*2(=m)} \left [16-8p+p^2+64-32p+4p^2 \right ] \]

\[ = \frac{1}{4} \left [5p^2-40p+80 \right ] \]

즉 cost function 이 아래로 볼록한(보통 이를 'convex' 하다고 말함.) 2차 방정식 형태가 되는데, 이를 미분을 해서 기울기가 0인 지점을 계산하면 그것이 곧 cost function 이 최소화되는 지점이다. 그럼 cost function이 최솟값이 되는 이 지점의 파라미터로 내가 설계한 모델의 파라미터를 설정하면 이것이 곧 최적화(Optimization) 가 된다.

 

출처: 처음 배우는 딥러닝 수학

 

Comments