데이터분석

34. 회귀분석과 데이터모델링

장수우 2024. 1. 27. 00:17
학습주제
  • 회귀분석과 데이터모델링)
주요학습내용
  • 데이터 모델링이란?
    • 주어진 데이터에서 사용하고자 하는 x, 알고싶은 값 y 가 있을 때 y = f(x) 라는 함수를 통해서 x와 y의 관계를
      설명할 수 있다면?
      x 를 독립변수, y를 종속변수 라고 합니다(x 를 feature, y를 label)
    • y와 x의 관계를 효과적으로 설명하는 f()함수를 만드는 일 = 모델링
    • y값이 존재하는 경우 supervised learning
      y값이 존재하지 않는 경우 unsupervised learning

      y값이 continuous(연속형)값 = regression task
      y값이 categorical 값 = classification task
  • 데이터 모델링 - Bayes theorem의 관점
    • 조건부 확률 : 어떤 사건이 일어났다는 '전제 하에' 다른 사건이 일어날 확률
      두 사건 A, B가 있을 때, 사건 A 가 일어났을 때 B가 일어날 확률
      P(B|A) = P(A ∩ B) / P(A)
    • 이 때 P(A|B) = P(A ∩ B) / P(B)이므로 P(B|A) = P(A|B)P(B) / P(A) 로 표현이 가능
    • 데이터 모델링의 관점에서 P(θ|X) = P(X|θ)P(θ) / P(X) 로 표현이 가능
      X: 관측된 데이터
      θ: 데이터에 대한 가설, 즉 모델의 parameter값
    • - P(X): Marginal probability, 데이터 X 자체의 분포
      - P(θ): Prior probability, 데이터 관측 이전의(사전) Parameter의 확률 분포
                (보통은 모든 값에 대한 확률이 동일하다고 가정)
      - P(X|θ): Likelihood, Parameter가 주어졌을 때 X 데이터가 관측될 확률 분포
      - P(θ|X): Posterior probability, Observation (dataset X)가 ‘주어졌을 때’ parameter의 확률분포
    • 궁극적으로 목적은 P(θ|X)를 최대화 하는 θ를 찾는 것
    • P(θ)가 일정하다는 가정 하에서는 P(X|θ), Likelihood를 최대화 하는 θ를 추정(MLE)
      그렇지 않을 때는 P(X|θ)P(θ)를 최대화 하는 θ를 추정(MAP)하는 과정이 데이터 모델링이라고 할 수 있습니다.
  • 데이터 모델링 과정
    • 데이터를 전처리 및 분석합니다.
    • 데이터를 training set, test set으로 나눕니다.
    • training set에 대해서 사용할 모뎅을 학습시킵니다(model.fit(training_set))
    • test set에 대해서 학습된 모델의 예측값을 통해 모델의 성능을 평가합니다.
      (실제값과 예측값의 비교를 통해서)
    • (모델의 성능이 충분히 쓸만하다 판단되면)
      새로운 데이터에 대해 학습된 모델을 이용해 y값을 예측합니다.
  • 데이터 모델링 - Linear Regression
    • x 와 y 간의 '선형'관계(y = b + wx)가 있다고 가정할 때 주로 사용
    • b + wx = y(예측) 라는 값에 대해서 y(예측) 값이 실제 y와 최대한 가까워지는 w(weight), b(bias)값을 찾도록 학습
    • Linear regression 오차항 ε의 가정 5가지
      1. 오차항의 기대치는 0이다.
      2. 오차항은 일정한 분산을 가진다.
      3. i != j 일때 εi 와 εj 는 서로 독립적이다.
      4. 독립변수 X와 εi 는 서로 독립이다.
      5. εi는 정규분포 N(0,  σ^2)를 따른다
    • 가정 5가지로 파생되는 가정
      1. 회귀모형은 선형성을 가진다.
      2. 종속변수 Y의 분산은 일정한 값 σ^2를 가진다.
      3. εi 와 εj 는 서로 독립이며, εi는 자기상관성이 없다.
        - 시계열 데이터의 경우 자기상관성이 존재할 수 있다.
      4. Y는 정규분포를 따른다.
    • 비용함수 (Cost function)
      • 실제 Y와 Y(예측)의 오차를 계산하는 식을 세우고, 이 오차를 최소화하는 w, b를 찾아야 한다.
      • 실제값과 예측값의 오차에 대한 식을 손실함수 (loss function), 비용함수 (cost function), 혹은
        목적함수(objective function)라고 합니다.
      • 선형회귀에서는 기본적으로 Residual sum of squares(RSS), 혹은 Mean squared error(MSE)를
        cost function으로 사용합니다
      • Cost function이 differentiable(미분가능)하고 convex(아래로 볼록)할 때, cost의 최저점은 cost function을
        w, b로 각각 편미분 했을 때 0이 되는 지점입니다.
  • 데이터 모델링 - Ordinary Least Squares (OLS, 최소제곱법)
    • 오차 ε를 최소화하는 w, b를 추정하는 방법
    • ε의 제곱의 합이 최소가 되는 점을 찾기 위해서
      ε의 제곱의 합을 w, b로 표현한 뒤
      w, b로 각각 편미분 했을 때 0이 되면서
      2차 편미분(Jacobian) 값이 Positive definite 이 되도록 해야한다.
  • 데이터 모델링 - Gradient descent (경사 하강법)
    • parameter에 대해 cost function을 편미분한 값을 learning rate α 여러번 update 해주는 것
    • 변수가 많아지거나 cost function이 복잡해지는 경우, 최소 제곱법을 통해서 한번에 loss가 최소인
      parameter를 추정하기 어렵습니다,
    • 보통 데이터가 매우 많을 때 사용
    • 한번에 gradient descent step을 계산하는 batch gradient descent 보다는
      매 스텝에서 mini-batch 만큼의 데이터를 샘플링 해서 학습하는 mini-batch stochastic gradient descent(SGD)
      방식으로 학습합니다
  • 데이터 모델링 - Overfitting ( 학습 데이터에 대해서 과하게 fitting되는 경우를 의미)
    • Generalization(일반화): 학습할 때와 추론할 때의 성능 차이가 많이 나지 않는 경우. 
      즉, 모델이 여러 inference 상황에서 잘 쓰일 수 있음을 의미
    • Overfitting이 발생하는 경우, test set에서의 loss가 증가할 수 있기 때문에 실제 inference 상황에서
      모델이 generalization(일반화)되기 어렵게 됩니다
    • 보통 데이터에 내재된 복잡도 (complexity)보다 모델의 복잡도가 더 과한 경우나,  데이터셋 사이즈가
      작은 경우 자주 발생
    • Linear regression의 경우, 고려하는 변수가 많아질수록 overfitting이 발생할 가능성이 높다.
  • Overfitting을 줄이는 방법 : regularization(정규화)
    • Overfitting을 해결하는 방법은 크게 두 가지
      1. 모델의 복잡도 줄이기: 모델이 가질 수 있는 parameter를 줄이거나 (e.g. 딥러닝에서 모델의 사이즈)
        모델이 고려하는 feature 중에서 상대적으로 중요한 feature 들만 모델의 input으로 사용
      2. 정규화(Regularization): 모델이 가지는 복잡도를 제한하는 방법으로 보통 모델의 parameter가 
        가지는 값의 크기를 cost function에 추가해주는 방식으로 parameter 값의 크기를 제한
  • 데이터 모델링 - Ridge
    • Ridge regression: 선형 회귀 모델에 L2 loss를 추가해서 parameter를 정규화
    • Ridge regression모델의 패널티항은 모델의 weight parameter들의 제곱합이며,
      lambda hyperparameter를 이용해서 모델에 주어지는 패널티를 조절
    • Parameter가 갖는 원형의 제약 조건 내에서 cost의 최적점에 가장 가까운 w*를 사용
  • 데이터 모델링 - Lasso
    • Lasso regression: 선형 회귀 모델에 L1 loss를 추가해서 parameter를 정규화
    • Lasso regression모델의 패널티항은 모델의 weight parameter들의 절대값의 합
    • Parameter가 갖는 사각형의 제약 조건 내에서 cost의 최적점에 가장 가까운 w*를 사용하며,
      유의미하지 않은 변수들에 대한 계수를 0으로 주어 중요한 변수를 선택할 때 유용하게 사용 가능
  • 데이터 모델링 - Logistic regression
    • Linear regression의 output y 값에 ‘Sigmoid function’을 적용해서 output y의 값이 0~1 사이 값이 되도록 만든다.
    • Classification에 적합화된 Linear regression model
  • 데이터 모델링 - Support Vecter Machine(SVM)
    • Linear regression과 비슷하지만, “어느 정도의 허용오차(C) 안에 있는 오차값은 허용해준다” 
    • 허용 오차 C 값을 잘 설정해야 모델이 좋은 성능을 낼 수 있다.
    • kernel= 설정을 통해 모델이 가정하는 x와 y의 관계(선형, 2차 선형, …) 등을 잘 잡아낼 수 있다.
  • 데이터 모델링 - Random Forest
    • Decision Tree는 x를 기준삼아, “해당 기준을 만족/불만족시 y값이 ~값일것이다”
      라는 조건(x)-결과(y) 를 나무처럼 발전
    • Classification에서는 y값이 클래스, Regression에서는 y값이 평균값
    • RandomForest는 Decision Tree를 무작위로 여러개 만든 후, 각 tree마다 나온 decision들을
      voting(ensemble)을 통해서 최종적인 y 값을 예측
    • n_estimators(트리의 개수), max_depth(각 트리의 길이) 등을 설정하여 모델의 성능을 높일 수 있다.
      다만, 무조건 트리 개수나 길이값이 크다고 성능이 좋아지진 않으며, 학습 시간이나 차지하는 메모리가
      지나치게 커질 수 있습니다
  • 데이터 모델링 - regression 평가 방법(evaluation)
    • 모델을 제대로 평가하는 metric(지표)을 사용해 주어진 데이터에 가장 효과적인 모델을 사용할 수 있다
    • Mean Squared Error(MSE)
      - 오차(틀린값)의 제곱을 평균으로 나눈 값, 0에 가까울수록 좋은 성능이라고 볼 수 있고,
        오차값이 큰 데이터점에 대해서 민감하게 반응합니다 (Outlier에 민감하게 반응)
    • Mean Absolute Error(MAE)
      - 오차의 절대값을 평균으로 나눈 값
      - 0에 가까울수록 좋은 성능이라고 볼 수 있다. 오차값이 큰 데이터에대해서 상대적으로 덜 민감하게 반응
    • R-square(결정계수)
      - 독립변수 x 가 종속변수 y를 얼마나 잘 설명하는 지를 나타냅니다.
      - 전체 y의 평균으로부터각 y값이 멀리 떨어질수록, 예측한 y값과 실제 y값이 가까울수록 1에 가까워진다.
      - 0~1 사이 값을 가지며, 1에 가까울수록 좋은 성능
    • F1 score
      - Precision과 recall을 둘다 고려한 metric
  • 데이터 모델링 - Principal component analysis (PCA)
    • PCA는 고차원의(feature가 많은) x에 대해서 주어진 x 들의 분포를 가장 잘 설명하는 x축, y축을 찾아내는 기술
    • 주로 데이터의 전반적인 분포를 visualization 할때 매우 유용 (Scatter plot 사용)
    • n_components를 2이외의 값으로 주어 모델의 feature 개수를 줄여 효과적인 학습
  • Feature analysis 
    • 데이터를 설명하는 feature x와 알아보고자 하는 label y가 있을 때, 어떠한 feature가 y를 설명하는데에있어
      중요한 feature 인지 아는 것 또한 매우 중요
    • Logistic regression이나 linear regression, Support vector machine, 그리고 random forest 모두
      학습이 된 상태에서 어떠한 feature를 주로 보고있는지를보여주는 값들을 가지고 있다.
    • 각 feature들과 label 간의 상관관계 분석을 통해 어떤 feature가 중요한지를 안다면 의사결정 과정에서 큰도움이 될 수 있습니다 (e.g. 문제를 일으키는 주된 원인이 무엇인지 파악할 경우)
  • Feature analysis - Linear regression, Logistic regression
    • Regression에서의 Linear regression, Classification에서의 Logistic regression 모두 학습이 된 
      상태에서 .coef_ 와 .intercept_ 를 조회할 수 있습니다
    • .coef_는 각 feature들에 대해서 각각 곱해지는 값, .intercept_ 는 절편을 의미합니다
    • .coef_의 절대값이 상대적으로 큰 feature가 있다면, label을 설명하는데 중요한 feature일 수 있다.
  • Feature analysis - Random forest
    • Random forest 모델들에서는 자체적으로 feature importance score를 제공
    • .feature_importances_ 를 통해 각 feature의 importance score를 구할 수 있다.
  • Feature analysis - 상관관계 분석
    • 각 feature들과 label간의 상관관계 분석을 통해 feature의 중요도를 알아볼 수 있다.
    • 상관관계: 통계적 변인과 다른 여러 통계적 변인들이 공변(共變)하는 함수관계
    • pearsonr(): 피어슨 상관계수 두 변수간의 선형 상관관계의 정도를 나타내준다.
    • spearmanr(): 스피어만 상관계수 두 변수간의 크기 순서상의 상관관계의 정도를 나타내준다.
    • 두 상관계수 모두 1/-1에 가까울 수록 양/음의 상관관계가 있다고 이야기 할 수 있고, 
      같이 나오는 p-value의 경우 H0: 두 변수는 상관관계가 없다 라고 하는 가설에 대한 p-value 입니다

 

공부하면서 어려웠던 점
  • 결국 모델링도 신뢰성을 확보하기 위한 과정중 하나임을 기억해야하는 것 같다. 일단 배우긴 했는데 잘 적용할 수 있을지 의문이 듭니다. 한번 사용해봐야 할 것 같
반응형

'데이터분석' 카테고리의 다른 글

41. 데이터 웨어하우스, 데이터 파이프라인  (0) 2024.01.29
35. 데이터 분석 프로세스  (1) 2024.01.27
33-(3). seaborn  (1) 2024.01.15
33-(2). Matplotlib  (1) 2024.01.15
33-(1) Matplotlib Visualization - 기본문법  (1) 2024.01.14