AI bootcamp DAY24

jintonic92·2021년 8월 20일
0

AI bootcamp Session 02

목록 보기
2/4

다중선형회귀 Multiple Linear Regression

  • 머신러닝모델을 만들 때 학습/테스트 데이터를 분리해야 하는 이유 설명 가능
  • 다중선형회귀를 이해하고 사용 가능
  • 과적합/과소적합을 일반화 관점에서 설명 가능
  • 평향/분산의 트레이드오프 개념 이해, 일반화 관점에서 설명 가능

회귀 : 하나의 종속 변수와 두 개 이상의 독립 변수 사이에 나타나는 관계를 최소 제곱법으로 추정하는 방법.

1. 데이터 train/test data split

1-1 pd.read_csv('')
1-2 컬럼명 확인 : 성능평가를 위해 학습에 사용할 데이터 확인하는 것

    df. columns 

데이터 나누는 법

  • 무작위로 선택해 나누는 방법이 일반적
  • 시계열 데이터를 가지고 과거에서 미래를 예측하려고 하는 경우, 무작위로 데이터를 섞으면 절대 안됨. 이때는 훈련 데이터 보다 테스트 데이터가 미래의 것이어야 함

1-3 데이터 test/train 나누기

train/test 데이터를 sample 메소드를 사용, 마지막은 크기 확인

2. 다중선형회귀모델 학습

2-1. 기준 모델

2-1-1. SalePrice 평균

2-1-2. label 정의

2-1-3. Saleprice 평균값으로 예측(기준모델)
훈련데이터의 평균

2-1-4. 기준모델로 훈련 에러 MAE 계산
성능을 알아보기 위하여 계산하는 것

  • x시험 데이터 X_test 를 넣어 예측한 y값들을 y_pred에 저장.
    이는 추후에 시험 데이터에 있는 실제 정답, 즉 y_test와 비교해보기 위함
  • 훈련은 y_pred = y_train.mean() * len(y_train)
    mae = mean_absolute_error(y_train, y_pred)
  • 테스트는 y_pred = y_train.mean() * len(y_test)
    mae = mean_absolute_error(y_test, y_pred)

2-2. 단순선형회귀 모델 만들기

2-2-1 먼저 GrLivArea, SalePrice의 Scatterplot을 그리고 OLS 라인 그려 봅니다.

  • 마지막에 ;을 붙임으로써 위에 이상한 글귀 없어짐.
    2-2-2 sklearn으로 단순선형회귀모델 학습

    기준모델과 비교했을때 에러가 줄어든 것 확인 가능

2-3. 2개 이상의 특성의 다중선형회귀 모델 만들기

하나의 특성을 사용한 단순선형회귀모델보다 테스트 오류가 더 줄어든 것 확인

eg.

회귀계수 해석하면서 모델 평가

  • 단순선형회귀식: y=β0+β1x
  • 다중선형회귀 식: y=β0+β1x1+β2x2
  • 계수들(coefficients or parameters) β0 ~ β2 는 어떻게 구할까?

선형회귀는 다른 ML모델보다 학습이 빠르고, 설명력이 강함
But 과소적합Underfitting이 잘 일어나는 단점 있음

회귀모델 평가 지표 Evaluation Metrics

  • 가장 많이 사용하는 지표
  • 제곱을 하여 단위 스케일 변하여 오류를 정확하게 파악하기 힘들고, 이상치 확인이 힘듦
  • 직관적으로 오류 확인 가능
  • MSE의 단점을 개선한 방법
  • 결정계수 1에 가까울수록 모델은 데이터를 잘 설명한다고 할 수 있음
    = 1에 가까울수록 설명력이 높다
  • SSR : 예측에 오류가 없다면 SSR = SST 라서 R-Squared가 1

과적합 Overfitting과 과소적합 Underfitting

  • 테스트데이터에서 만들어내는 오차를 일반화 오차 라고 부름
  • Train & Test 모두 좋은 성능을 내는 모델은 일반화가 잘 된 모델
  • 모델이 너무 train에 과하게 학습(과적합)하지 않도록 하는 많은 일반화 방법들이 있음
  • 과적합 : 모델이 train의 특수 성질을 과하게 학습해 일반화를 못해, test에서 오차가 커지는 현상 = 필요 이상으로 과하게 학습하여 오류가 커지는 것
  • 과소적합 : train에 과적합도 못하고 일반화 성질도 학습하지 못해, trian/test 데이터 모두 오차가 크게 나오는 경우 = 모델이 너무 간단하여 훈련 데이터의 일반 성질을 훈련하지 (X)
  • ML에서 과적합은 피할 수 없는 문제이고, 완전 극복 불가능.
    대부분 학습 알고리즘은 이런 과적합을 완화시킬 수 있는 방법을 제공함

분산/편향 tradeoff
과/소적합은 오차의 편향Bias와 분산Variance개념과 관계 있음

  • 분산이 높은 경우, 모델이 train 데이터의 노이즈에 민감하게 적합하여 test에서 일반화를 잘 못하는 경우 = 과적합 상태
  • 편향이 높은 경우, 모델이 train 뎅터에서 특성과 타겟 변수의 관계를 잘 파악하지 못함 = 과소적합 상태
  • 모델의 차수가 높을 수록 편향은 낮아지고, 분산은 높아짐
  • 모델의 차수가 낮을 수록 편향은 높아지고, 분산은 낮아짐
  • 단순선형모델로 학습하는 경우 (1), 데이터를 모두 지나가도록 곡선 피팅이 가능한 다형 모델로 학습하는 경우 (2)
  • 선형 모델 예측은 학습 데이터에서 타겟값과 오차가 크다 = 편향이 높다 (과소적합) but 훈련/테스트 데이터에서 그 오차가 비슷함 = 분산이 낮다

  • 곡선 피팅 모델에서는 학습 데이터에서 오차가 0에 가까움 = 편향이 낮다, but 테스트 데이터에서 오차가 많아짐 = 분산이 높다. 이렇게 한 데이터세트에서는 오차가 적은데 다른 데이터 세트에서는 오차가 많이 늘어나는 현상을 과적합이라고 함.

Good model?
편향도 적고, 분산도 적은 모델이 좋은 모델.

  • 모델의 복잡성에 따라 성능 그래프를 그려 보면, 모델 복잡해질 수록 train 성능은 계속 증가, 하지만 val 성능은 어느정도 증가하다가 증가세가 멈추고 오히려 낮아지는 지점이 있음. 이 시점을 과적합이 일어나는 시멎으로 파악하고 더 복잡한 모델이 불필요함을 알 수 있음.

assignment
test = df[(df['date'] >= '2030-03-30')]
train = df.drop(test.index)

reference
다중선형회귀(Multiple Linear Regression)
https://hleecaster.com/ml-multiple-linear-regression-example/

0개의 댓글

관련 채용 정보