[ZB] 머신러닝 - Chap1. Regression|회귀

porii·2024년 10월 2일

[edu] zerobase

목록 보기
9/28
  1. 데이터

    1. 정형데이터 : Table 데이터, N×P metrix, Excel Data
    2. 비정형데이터 : Image, Text
  2. Machin Learning 종류

    1. 지도학습 - Y가 O
      1. 회귀(regression)
      2. 분류(classification)
    2. 비지도학습 - Y가 X
      1. Clustering
      2. 차원축소(Dimensionality Reduction)
    3. 강화학습
    • X : Variables, Features, Columns, 독립변수, 설명변수
      • Numerical : 연속적 변수 - 대소 의미 O
      • Categorical : 이분적 변수 - 대소 의미 X
    • Y : Labels, 종속변수
      • Numerical : Regression, 회귀
      • Categorical : Classification, 분류
    • Y : 이미 갖고 있는 값 y^\hat{y} : 알고리즘이 낸 아웃풋
  3. 알고리즘

    = Input(Xs) → Process → Output(y^\hat{y})

    • 좋은 알고리즘 ?? = error가 낮은 알고리즘
    • Error = (yiy^i)2\displaystyle\sum(y_i-\hat{y}_i)^2
      +와 -로 값이 상쇄되지 않고 크기를 잘 대변할 수 있기 위해 제곱

1. Loss Function

  1. Error = Variance + Bias

    • Variance : 추정값(Algorithm Output)의 평균과 추정값(y^\hat{y}) 들 간의 차이 추정값들의 흩어진 정도
    • Bias : 추정값의 평균과 참 값(y) 들 간의 차이 참 값과 추정값 간의 거리

    θ=yθ^=y^\theta=y\qquad \hat{\theta}=\hat{y}

    MSE(θ^)=Eθ[(θ^θ)2]=Varθ(θ^)+Biasθ(θ^,θ)2MSE(\hat{\theta}) = E_\theta[(\hat{\theta}-\theta)^2] =Var_\theta(\hat{\theta})+Bias_\theta(\hat{\theta},\theta)^2

  2. 적합

    1. Underfitting : Bias ↑ , Variance ↓
    2. Overfitting : Bias ↓ , Variance ↑
  3. Error(x) = Noise(X) + Bias(X) + Variance(X)

    < 요소별 error 줄이는 법>

    • Noise : Data Processing(Cleansing) - 이상치들로 인한
    • Bias : Model Complexity ↑ → Bias ↓
    • Variance : Model Complexity ↓
    • Bias - Variance : Trade-off

LossFunction=Min(yiy^i)2Loss Function = Min \displaystyle\sum(y_i-\hat{y}_i)^2 : Task 1

2. Linear Regression

  1. Simple Linear Regression

    E(yi)=β0+β1xE(y_i)=\beta_0+\beta_1x

    y=β0+β1x+ϵy = \beta_0+\beta_1x +\epsilon(error)

    • 독립변수 X 1개, 종속변수 Y 1개
    • E(yi)E(y_i) : 추정값(DependentVariable) = y^\hat{y}
    • β0\beta_0 : Constant(상수)
    • β1\beta_1 : Coefficient(계수) - x가 1단위 증가할 때 Y에 미치는 영향도
  2. Multi Linear Regression

    선 → 평면

    E(yi)=β0+β1x+β2xi2E(y_i)=\beta_0+\beta_1x+\beta_2x^2_i

    • 독립변수 X 2개, 종속변수 Y 1개
    • E(yi)E(y_i) : 추정값(DependentVariable) = y^\hat{y}
    • β0\beta_0 : Constant(상수)
    • β1,β2\beta_1, \beta_2 : Coefficient(계수) - x가 1단위 증가할 때 Y에 미치는 영향도
    • MSE 제곱의 이유 = 미분가능하기 때문 → 최솟값 찾아야니까

3. β\beta(계수) 추정법

Y=β0+β1x1+β2x2++βpxp+ϵY=\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_px_p+\epsilon

E(Y)=β0+β1x1+β2x2++βpxp=Y^E(Y) = \beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_px_p=\hat{Y}

Q(β0,β1)=i=1nϵi2=i=1n(yiβ0β1xi)2Q(\beta_0,\beta_1)=\displaystyle\sum_{i=1}^{n}\epsilon^2_i =\displaystyle\sum_{i=1}^{n}(y_i-\beta_0-\beta_1x_i)^2

  1. β\beta에 대해 편미분 사용 → 추정

    Loss Function = closed form quadratic이므로 미분만으로 쉽게 추정 가능

  2. 추정한 β\beta가 의미가 있는지 판단

    • H0:β1=0vsH1:β10H_0:\beta_1=0\quad vs \quad H_1:\beta_1\neq 0
    • 기울기=0 → 의미 X
    • β\beta의 p-value가 낮으면 기울기 ≠0으로 판단
      p-value ≤ 0.05면 의미 O = H0H_0(귀무가설) 기각 & H1H_1(대립가설) 채택
      *p-value : 기울기가 0일 확률 = β1^0sd{β1^}=t\*\frac{\hat{\beta_1}-0}{sd\{\hat{\beta_1}\}}=t^\*
  • Model의 Output 해석
    1. βi\beta_i(β0\beta_0제외)

      : X가 1단위 증가 시 Y에 영향을 미치는 정도

      • βi\beta_i값이 크면 Y에 영향을 크게 미친다고 판단O
      • BUT X간 scale이 다르기 때문에 X 간의 상대적인 비교는 불가
    2. p-value
      - βi\beta_i값이 커도 p-value값이 높으면 의미 X

      βi\beta_i값과 p-value 두 가지 조건이 모두 맞아야 유의미

      → X 간에 중요한 변수를 ranking 하고자 할 때는 어떻게? → x scaling

4. Model 평가 및 지표 해석

  1. Model 평가 기준
    • 동일 평가 기준으로 model 성능 평가해야 함
    1. R-Squared (R2R^2)

      R2=SSESST=1SSRSSTR^2=\frac{SSE}{SST}=1-\frac{SSR}{SST}

      • SSR(Residual Sum of Squares) = YiYi^Y_i-\hat{Y_i} : 회귀식에 의해 설명되지 않는 편차
      • SSE(Explained Sum of Squares) = Yi^Y\hat{Y_i}-\overline{Y} : 회귀식에 의해 설명되는 편차
      • SST(Total Sum of Squares) = YiYY_i - \overline{Y} : 총편차 SST = SSR + SSE
      • regression model의 정성적 적합도 판단
      • R2R^2 = 평균으로 예측한 것 대비 분산을 얼마나 축소 시켰는지에 대한 판단
      • 0~1의 값. 1에 가까울수록 좋은 모델 0.25 정도면 유의미하다고 판단
  2. 성능지표
    1. Average Error(평균오차) : 잘못된 정량적 방법

      • 실제값에 비해 과대/과소 추정여부 판단
      • 부호로 인해 잘못된 결론 내릴 위험 O
    2. MAE(Mean Absolute Error) (평균 절대 오차)

      • 실제값과 예측값 사이의 절대적 오차의 평균
      • 미분 X
    3. MAPE(Mean Absolute Percentage Error)(평균 절대 비율 오차)

      MAPE=100(%)×1ni=1nyyyMAPE=100(\%) \times \frac{1}{n} \sum_{i=1}^{n} \frac{|y-y’|}{|y|}

      • 정성적
      • 실제값 대비 얼마나 예측값이 차이가 있는지 (%)
      • 상대적 오차 추정
    4. MSE(Mean Squared Error) & RMSE(Root Mean Sqaured Error)

      MSE=RMSE\sqrt{MSE}=RMSE

      • 부호의 영향을 제거하기 위해 절대값이 아닌 제곱을 취함
    • RMSE+R2RMSE+R^2 사용 많이 함
  3. linear regression 분석 순서
    1. Model 성능 체크 - 정성, 정량

      Model 성능 안 나올 시 - data quality check( or 모델 변형)

    2. p-value 확인하여 의미있는 변수 추출

    3. βi\beta_i 활용하여 X 1단위 증가 당 Y에 얼만큼 영향 미치는지 판단

5. Feature Selection 기법

  • 변수(feature)가 많은 경우
  • Overfitting 되었을 경우 사용 Overfitting - Bias 낮고 Variance 높아 → 방지 위해 Feature Selection
    • Feature 수 ↑ → Model Complexity ↑ 0 → Bias ↓ , Variance ↑
    • ⇒ Feature Selection을 통해 Bias, Variance의 Trade-off 최적점 도출
  • Train set에서 accuracy 보장이 안 된 경우(underfitting)에는 사용할 필요 X
  1. Supervised Variable Selection - Exhaustive Search(완전탐색)
    • Features의 최적 조합을 찾아내
    • X 개수 : p 경우의 수 : 2p12^p-1
    • Training Set 정확도보다 Test Set 정확도를 봄
    • 시간이 너무 오래걸림
  2. Supervised Variable Selection - Forward Selection
    • 처음에는 variable 없이 시작하여 하나씩 주요한 변수들을 sequentially 추가 선택된 variable은 지우지 X
    1. p개의 variable에 대하여
      y^=β0+β1x1\hat{y}=\beta_0+\beta_1x_1
      y^=β0+β2x2\hat{y}=\beta_0+\beta_2x_2

      y^=β0+βpxp\hat{y}=\beta_0+\beta_px_p

    2. R2R^2이 가장 큰 변수 xix_i에 대하여 (xix_i 제외)
      y^=β0+βixi+β1x1\hat{y}=\beta_0+\beta_ix_i + \beta_1x_1
      y^=β0+βixi+β2x2\hat{y}=\beta_0+\beta_ix_i + \beta_2x_2

      y^=β0+βixi+βpxp\hat{y}=\beta_0+\beta_ix_i + \beta_px_p

    3. b에서 R2R^2이 가장 큰 변수 xjx_j에 대하여 (xi,xjx_i,x_j제외)
      y^=β0+βixi+βjxj+β1x1\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_1x_1
      y^=β0+βixi+βjxj+β2x2\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_2x_2

      y^=β0+βixi+βjxj+βpxp\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_px_p

      ⇒ 가장 큰 R2R^2= 0.75 일 때(가정)

    4. c에서 R2R^2값이 가장 큰 변수 xkx_k 에 대하여(xi,xj,xkx_i,x_j,x_k 제외)
      y^=β0+βixi+βjxj+βkxk+β1x1\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_kx_k+\beta_1x_1
      y^=β0+βixi+βjxj+βkxk+β2x2\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_kx_k+\beta_2x_2

      y^=β0+βixi+βjxj+βkxk+βpxp\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_kx_k+\beta_px_p

      ⇒ 가장 큰 R2R^2 = 0.75인 것이 여러 개 있다면(정확도의 변화가 없다면) ⇒ STOP

    5. Final Model

      y^=β0+βixi+βjxj+βkxk,Radj2=0.75\hat{y}=\beta_0+\beta_ix_i + \beta_jx_j+\beta_kx_k, \qquad R^2_{adj}=0.75

  3. Supervised Variable Selection - Backward Elimination
    • 모든 variable을 사용하고 정확도에 영향을 미치지 않는 variable을 sequentially 제거
    1. 모든 variable을 넣고 시작
    2. 변수를 한 개씩 빼고서 계산 → 정확도 가장 높은(R2R^2 가장 높은) 모델 채택
    3. b의 모델에서 또 변수를 한 개씩 뺐을 때 정확도 loss가 있다면 → STOP & b의 모델 채택
  4. Supervised Variable Selection - Stepwise Selection
    • Forward Selection과 Backward Elimination을 번갈아 가며 수행
    • 둘 보다 시간은 오래걸릴 수 있음
    • 최적 variable subset 찾을 가능성 높음
    1. 높은 정확성을 가진 한 개의 variable 채택 (F)
    2. 높은 정확성을 가진 한 개의 variable 추가 (F)
    3. 높은 정확성을 가진 한 개의 variable 추가 (F)
    4. 한 개씩 variable 제거해서 기존의 모델과 R2R^2 비교 (B) - (F) - (B) - (F) - …

6. ★ Penalty Term

  • 전통적 Feature Selection 단점
    • variable이 커짐에 따라 시간이 매우 오래 걸림 ( 가성비가 떨어짐)

      → model이 error을 minimize하는 과정(fitting)에서 Feature Selection을 해줄 수 있는 방법 없을까?

  1. Feature Selection 종류

    1. Filter Method

      : 간단한 기법으로 filtering 수행(X-Y Correlation, Chi-Square Test, Anova 등)

      • 필요없는 X 없앰
      • X,Y 선형관계일 때는 O but 비선형관계일 때는 X
    2. Wrapper Method

      -Forward Selection, Backward Elimination, Stepwise Selection

    3. Embedded Method

      : Regularization Approach를 활용하여 model 스스로 feature selection 진행

      • wrapper method와 같이 featuer 간의 상호작용 고려
      • 상대적으로 시간 save
      • model이 train하면서 스스로 feature의 subset 찾아가
  2. Penaly Term

    : 불필요한 Feature에게 벌을 줘서 학습하지 못하게 하는 것 ( βi\beta_i=0으로 )

    • Error을 minimize하는 조건에서 필요없는 features의 β\beta에 penalty 부여
    • 적절하게 penalty 계수를 부여해야 함

7. Regularized(정규화) Model

  1. Ridge Regression

    : β2\beta^2에 Penalty Term을 부여하는 방식

    = L2normL_2-norm = L2L_2 Regularization (제곱이 들어가므로 L2L^2라고 알고 있어)

    • 제곱오차 최소화 하면서 회귀 계수 제한
    • Feature간 scaling 필수
    1. β^ridge=argmini=1n(yixiβ)2j=1pβj2t\hat{\beta}^{ridge}=arg\, min \displaystyle\sum_{i=1}^{n}(y_i-x_i\beta)^2 \qquad \displaystyle\sum_{j=1}^{p}\beta^2_j \leq t
      β^ridge=arg{mini=1n(yixiβ)2+λj=1pβj2}\Leftrightarrow \hat{\beta}^{ridge}=arg\, \{min \displaystyle\sum_{i=1}^{n}(y_i-x_i\beta)^2 +\lambda \displaystyle\sum_{j=1}^{p}\beta^2_j\}
    • t 커지면 식이 loose, overfitting 못 잡을 수 있음. → λ\lambda 작아짐
      t 작아지면 λ\lambda 커짐

    • MSE Contour : 중심에서 멀어질수록 Error 증가( overfitting 방지를 위해서는 error을 조금 증가시켜야)

      • 증가 지점 : Ridge Estimator과 MSE Contour이 만나는 점 = 제약조건 만족하며 error 최소
        *Ridge Estimator(j=1pβj2t\displaystyle\sum_{j=1}^{p}\beta^2_j \leq t) : 원으로 생각해

      L(β)=LossFunction(Min(yiy^i)2)+λj=1pβj2L(\beta)=Loss Function(Min \displaystyle\sum(y_i-\hat{y}_i)^2) + \lambda\displaystyle\sum_{j=1}^{p}\beta^2_j

      • λ\lambda : test와 train 사이에 tradeoff 를 조절하는 파라미터 ( Hyperparameter )
        • very big → underfitting ( model이 작동하지 않음)
        • very small → 일반 mode과 똑같이 작동함
        • 적절한 λ\lambda 찾는 것 중요
    1. 장점
      • 미분이 가능하므로 closed form solution 구할 수 있음
      • 해를 빠르게 찾을 수 있음
    2. 특징
      • Feature Selection 되지 X (원이기 때문에 0이 된다기보다 0에 가까워짐. shrinkage) = 불필요한 feature은 0에 수렴하게 만듦
      • Feature의 크기가 결과에 큰 영향을 마치기 때문에 scaling 중요
      • 다중공선성(multicollinearity) 방지에 가장 많이 쓰임
      • 다중공선성 : 변동성이 겹치는 부분. 이에 대해 중복으로 가져가지 못함
  2. LASSO Regression (Least Absolute Shrinkage and Selection Operator)

    : β|\beta|에 Penalty Term을 부여하는 방식

    = L1norm=L1L_1-norm = L_1 Regularization

    절댓값으로 shrinkage을 합하여 selection까지

    β^ridge=argmini=1n(yixiβ)2j=1pβjt\hat{\beta}^{ridge}=arg\, min \displaystyle\sum_{i=1}^{n}(y_i-x_i\beta)^2 \qquad \displaystyle\sum_{j=1}^{p}|\beta_j| \leq t

    β^ridge=arg{mini=1n(yixiβ)2+λj=1pβj}\Leftrightarrow \hat{\beta}^{ridge}=arg\, \{min \displaystyle\sum_{i=1}^{n}(y_i-x_i\beta)^2 +\lambda \displaystyle\sum_{j=1}^{p}|\beta_j|\}

    • Ridge와 달리 절댓값이므로 해의 set이 마름모 형태를 가짐 → MSE Contour과 만나는 점이 생기므로 selection 가능
    • 미분 불가능 → closed form solution 불가능 ⇒ Numerical Optimization Methods 필요
      1. Quadratic Programming techniques
      2. LARS Algorithm
      3. Coordinate descent Algorithm
      4. Semi-differentiable
      5. Gradient Descent(경사하강법)
        • 언제 사용?
          • non-convex의 경우 = closed form solution 없을 때
          • 대부분의 비선형회귀문제는 closed form solution X
          • closed form solution 존재해도 수많은 paramete가 있을 때
        • 시작점이 중요. 주로 parellel 하게(병렬) 진행
        • 최적의 해를 보장하지 X
          • Local Minima에 빠질 수 있음
          • Global Minimum이 있는지 없는지 모름
          • momentum을 사용
        • Deep Learning의 Loss Function 최적화 시 중요한 개념
        • 스텝방향과 사이즈를 조절하며 develop중
    • t가 작아짐에 따라 모든 계수의 크기 감소
      • Ridge : 크기가 큰 변수가 더 빠르게 감소
      • LASSO : 예측에 중요하지 않은 변수가 더 빠르게 감소 → 그러다 0됨
    RidgeLASSO
    L2L_2-norm RegularizationL1L_1-norm Regularization
    변수 선택 불가변수 선택 가능
    closed form solution O
    (미분)
    closed form solution X
    (numerical optimization 이용)(GD)
    변수 간 상관관계 높은 상황에서 좋은 예측 성능변수 간 독립적일 때
    크기가 큰 변수를 우선적으로 줄이는 경향
  3. ElasticNet

    = Ridge + LASSO

    = L2norm+L1normL_2-norm + L_1-norm

    β^enet=argmini=1n(ui=xiβ)2s1j=1pβj+s2j=1pβj2t\hat{\beta}^{enet}=arg\,min\displaystyle\sum_{i=1}^{n}(u_i=x_i\beta)^2 \qquad s_1 \displaystyle\sum_{j=1}^{p}|\beta_j|+s_2\displaystyle\sum_{j=1}^{p}\beta^2_j\leq t

    β^enet=argmin{i=1n(ui=xiβ)2+λ1j=1pβj+λ2j=1pβj2}\Leftrightarrow \hat{\beta}^{enet}=arg\,min\{\displaystyle\sum_{i=1}^{n}(u_i=x_i\beta)^2 +\lambda_1\displaystyle\sum_{j=1}^{p}|\beta_j| +\lambda_2\displaystyle\sum_{j=1}^{p}\beta^2_j\}

    • s1,s2s_1, s_2로 Ridge와 LASSO를 조절
    • λ1\lambda_1: LASSO Penalty Term (Reature Selection) λ2\lambda_2 : Ridge Penalty Term(다중공선성 방지)
    • correlation이 강한 변수를 동시에 선택/배제하는 특정을 가짐
    • (-) 더 많은 실험이 필요
    • 해 공간 α\alpha=0:Ridge , α\alpha=1:LASSO (1α)(β1+β2)+α(β12+β22)t(1-\alpha)(|\beta_1|+|\beta_2|)+\alpha(\beta^2_1+\beta^2_2)\leq t
    • 미분 불가능 - GD 활용해서 해 찾아
    • 상관관계 높은 변수들 동시에 선택
  4. 이외

    1. Fused LASSO - 인접한 변수들 동시에 선택
    2. Group LASSO - 사용자가 정의한 그룹 단위로 변수 선택
    3. Grace - 사용자가 정의한 그래프의 연결관계에 따라 변수 선택

0개의 댓글