본문 바로가기
  • 適者生存
WorkOut/LG Aimers

LG Aimers | Linear Regression (선형 회귀)

by lcrvvxln 2024. 7. 25.



 

📌 Linear regression (Multidimension)

2차원일 때 1차원과의 차이점 

 

(키, 손 크기) vs. 몸무게

 

$x= (x_1,x_2)$               $x \in \mathcal{X} = \mathbb{R}^2, y \in \mathcal{Y} = \mathbb{R}$

 

  • Input : 키와 손 사이즈 2개의 입력
  • Output : 몸무게
  • Model Class : \mathcal{G} = {g_{a1, a2, b}(x) = a_1x_1 + a_2x_2 + b}$
  • $\theta = (a_1, a_2, b)$ , 3개 순서쌍 찾기

 

  • Loss Function

$l(g_\theta(x^{(i)}), y^{(i)})$   =   $(g_\theta(x^{(i)}) - y^{(i)})^2$   =   $((a_1x_1^{(i)} + a_2x_2^{(i)} + b) - y^{(i)})^2$

 

 

 

$L(a_1, a_2, b) = \frac {1}{3} \sum^3_{i=1} (y^{(i)} - (a_1x_1^{(i)} + a_2x_2^{(i)} + b))^2$

▶ $a_1, a_2, b$로 이루어진 이차식

 

 

  • Gradient = 0

$\triangledown L(a_1, a_2, b) = (\frac {\partial L}{\partial a_1}, \frac{\partial L}{\partial a_2}, \frac{\partial L}{\partial b})$

 

▶ $a_1, a_2, b$에 대해 미분한 것으로 이루어진 벡터

▶ gradient는 함수가 어느 방향으로 가장 빠르게 증가하는지 나타내는 지표

 

 

∴ 각각 미분하면 일차식 3개 생성되므로 연립방정식 형태로 푸는 문제 형식은 동일

 

 

 

 

d차원

 

이미지 등의 다차원 벡터 

 

  • data : $x = (x_1, x_2, ...., x_d) \in \mathbb{R}^d$,  $y \in \mathcal{Y} = \mathbb{R}$
  • Function class : $\mathcal{G} ={g_{a,b}(x) = a^Tx + b :  a \in \mathbb{R}^d,  b \in \mathbb{R}}$
  • $\theta = (a_1, a_2, ...., a_d, b)$
  • Loss function : $l(g_{a,b}(x^{(i)}, y^{(i)})  =  (g_{a,b}(x^{(i)}) - y^{(i)})^2$

 

$a^Tx +b$ 선형 함수

$a_1x_1, ... a_dx_d +b$ 형태

▶paramter는 $a_1, ... a_d$ 라고 불리는 a 벡터와 상수 b

 

 

if ) data에 가상의 $x_0 = 1$이 추가되어 있다고 가정

 

  • data : $x = (1, x_1, x_2, ... , x_d) \in \mathbb{R}^{d+1}$  ,  $y \in \mathbb{R}$

▶ $a^Tx = a_0x_0 + a_1x_1 + \cdots + a_dx_d$ = $ a_0 + a_1x_1 + \cdots + a_dx_d$

 

▶ $a_0$가 b 역할을 하는 방식

 

  • Function Class : $\mathcal{G} = {g_a = a^Tx  : a \in \mathbb{R}^{d+1}}$ 

▶ 위에서는 a가 d차원, b가 scala였다면 a가 d+1 차원인 하나의 벡터로 표헌 가능

 

  • $\theta : (a_0, a_1, a_2, ... a_d)$ = $a$
  • Loss function $l(g_a(x^{(i)}), y^{(i)}) = (g_a(x^{(i)})) - y^{(i)})^2$
  • $\mathcal{L}(a) = \frac{1}{n} \sum^n_{i=1} (g_a(x^{(i)})) - y^{(i)})^2$

▶ $g_a(x) = a^Tx$

 

 

d+1개 변수에 대해 미분 진행 => $a_0, a_1, ... , a_d$

 

▶ d+1개 변수와 d+1개 식으로 이루어진 문제 

 

 

 

 

Normal Equation 

 

$a_0, a_1, .. $ 각각을 하나씩 고려하는 것이 아닌 Gradient 한 번에 고려해서 문제 푸는 방식

 

 

 ✅ 원래 Loss function : 각각의 데이터 포인트에 대해 제곱한 것을 다 더한 값

 

 

$ X = \begin{bmatrix} x^{(1)} \\ x^{(2)} \\ \vdots \\ x^{(n)} \end{bmatrix} \in \mathbb{R}^{n \times d}$ , $Y = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(n)} \end{bmatrix} \in \mathbb{R}^n$

 

▶ x로 이루어진 행렬 & y로 이루어진 벡터

 

 

$\mathcal{L}(a) = \begin{Vmatrix} \begin{bmatrix} a^Tx^{(1)} - y^{(1)} \\ a^Tx^{(2)} - y^(2) \\ vdots \\ a^Tx^{(n)} - y^{(n)} \end{bmatrix} \end{Vmatrix} ^2$    =  $\begin{Vmatrix} Xa - Y \end{Vmatrix}^2$   

 $a^Tx^{(1)} - y^{(1)} ~ a^Tx^{(n)} - y^{(n)}$ 을 컴포넌트로 가지는 벡터의 크기

 

▶ Xa = $a^Tx^{(1)} ~ a^Tx{(n)}$ 

▶ Y = $y^{(1)} ~ y^{(n)}$ 

 

∴ 두 값을 뺀 벡터의 크기가 손실값

 

 

식 최소화 과정은 a 벡터에 대한 이차식처럼 다룰 수 있음

 

 

=  $Y^TY - 2Y^TXa + a^TX^TXa$

 

a에 대한 이차식이므로 a에 대해 미분

 

 

  • 벡터 미분

 

$ \frac {\partial \mathcal{L}(a)}{\partial a} = -2X^TY + 2X^TXa  = 0$

 

▶ a에 대한 Gradient 값이 0인 지점이 Loss function이 가장 작아지는 지점 

 

 

$X^TXa = X^TY$

 

 

∴ $a = (X^TX)^{-1}X^TY$ 

 

 

 

What if we want to fit quadratic equation?

 

Q. 선형적으로 존재하지 않는 데이터를 어떻게 설명할 수 있을까?

A. 이차함수, ...

 

 

Q. 선형 회귀가 아닌 이차 함수로 맞추는 이차 회귀인가?

 

A. No, Linear Regression의 일부

 

▶ x에 대한 이차식으로 y를 표현하는 문제이지만 x와 y는 주어진 것이고 계수들을 구해야 함, 일차식 유지

 

 

 

 

We fit parameter "a"

 

$y = a_0 + a_1x + a_2x^2$

 

▶ x는 키, 몸무게와 같은 상숫값

▶ 함수를 찾는 것은 $a_0, a_1, a_2$ 를 찾는 문제, 일차식 선형 함수 동일

 

 

  • data :  $\tilde{x} = (1, x, x^2) \in \mathbb{R}^3$  ,  $y \in \mathbb{R}$
  • Model Class : $\mathcal{G} = {g_a(x) = a^T\tilde{x} : a \in \mathcal{R}^3}$
  • $g_a(x) = a_0 + a_1x + a_2x^2$
  • Loss function : $\mathcal{L}(a) = \sum^n_{i=1} ((a_0 + a_1x^{i} + a_2(x^{(i)})^2) - y^{(i)})^2$

 

 

 

You can always add features 

 

$x^2, x^3, ... , e^x$ 형태의 feature, kernel 추가로 표현력 높은 함수 표현 가능 

 

Overfitting 문제 발생 가능

▶ 적절한 방식은 좋은 방향 

 

 

 

Overfitting : Bias-Variance Tradeoff

 

데이터가 조금 변형되었을 때, 낮은 복잡도의 함수는 큰 차이가 없으나 높은 복잡도 함수는 큰 차이를 보임

 

▶ Overfitting 문제

 

모델의 복잡도 대비 데이터가 충분히 확보되었는지 확인하는 것 필요 

 

 

 

Underfitting vs. Overfitting 

 

Underfit (=High bias)

 

모델 성능이 떨어져 데이터를 잘 표현할 수 없는 경우 

▶ loss 값이 큼

 

 

Just right 

 

추세의 적절한 표현

 

 

Overfit (=High Variance)

 

과하게 데이터에 맞추는 형태

▶ 데이터 한 개에 대한 모델의 변화도가 큼

 

 

 

How can we recognize overfitting?

 

Q. 중간 부분을 어떻게 찾을 수 있을까?

 

실제 데이터는 매우 고차원적이므로 그래프 시각화가 어려움

 

 

A. Validation set의 활용 

- train set

- validation set

 

 

모델이 overfitting 되어 있지 않다면 train set의 loss 와 validation set의 loss 간격이 심하지 않음 

 

▶ Validation Loss (검증 손실) & Train Loss (학습 손실)

 

 

💡 데이터 학습 과정

1. 데이터를 학습 데이터와 검증 데이터로 구분
2. train loss 가 유의미하게 작아지는지 확인 
underfitting 발생 여부
3. Overfitting 발생 여부 확인 = train loss와 validation loss의 차이 비교 

 

 

 

 

 

 

Train - Validation - Test

 

Train : 대략 데이터의 80%

Validation : 대략 데이터의 20%Test : train & validation 과 별도로 분리되어 있는 데이터 사용

 

 

 

Rules 

 

Based on prior knowledge (or theory)

 

- Occam's Razor

" The explanation that requires the fewest assumptions is usually correct."

유의미한 모델이 여러 개라면 가급적 단순하고 간단한 모델 사용하는 것이 안전하다

 

 

 ✅ Low training error : Underfitting 피하기

 ✅ Train error ~ Validation error : 둘 사이의 loss가 비슷하게 

 ✅ Train error << Validation error : Overfitting 상황 

 

 

 

 

If you are in overfit

  • 모델 복잡도 낮추기
  • 더 많은 데이터 수집 ( = 복잡하고 고비용)

 

 

 

Cross Validation (교차 검증)

 

데이터가 적을 때 사용할 수 있는 방법

 

출처 : Scikit-learn

 

  • 데이터셋을 20%씩 다섯 개로 분리
  • 첫 번째 stage, 첫 set를 validation set으로 사용, 나머지는 train에 사용
  • 두 번째 stage, 두 번째 set을 validation set으로 사용, 나머지를 train에 사용 
  • ....
  • 즉, 다섯 개의 stage를 거쳐 데이터를 전부 활용할 수 있는 학습 방식

 

 

 

Regularization (정규화)

 

Overfitting은 loss를 최소화에 너무 매몰되어 발생하는 문제

 

모델(함수)의 계수들이 너무 fit한 값을 가지지 않도록 loss를 줄이면서 ||a|| 크기는 유지하는 제약

 

 

$ \mathcal{L}(a) + \lambda \mathcal{L}_{reg}(a) = \sum^n_{i=1} l(g_{\theta} (x^{(i)}), y^{(i)} ) + \lambda ||a||^2$

 

 

  • Large $\lambda$ : loss를 줄이는 것보다 a가 커지는 것을 경계하는 형태, 정규화 ▲
  • Small $\lambda$ : Overfitting이 심각하지 않은 경우에 사용, 정규화 ▼

 

 

 

 

Augmentation (증강)

 

기존 데이터의 본질적 특성이 변하지 않도록 일정한 변화를 주어 데이터를 증강시키는 방식

 

  데이터에 특정 변화에 대해 불변성을 가지는 성질 활용

  • 뒤집기
  • 확대
  • 회전
  • noise 추가
  • 색상 및 밝기 변환 등 ...

 

⚠️ 하지만 불변성이 통용되지 않는 데이터의 경우에는 사용할 수 없음