[머신러닝] Multiple Regression

Colacan·2022년 2월 23일
1

[머신러닝]

목록 보기
7/8

다중선형회귀

  • 단일선형회귀는 여러 feature를 사용못했었다.

  • 다중선형회귀는 여러 feature 이용가능

학습/테스트 데이터 분리

  • 일반적으로 데이터는 분리되어 있지 않다.

  • 학습에 사용하는 데이터와 테스트 데이터는 달라야한다.

  • 데이터를 무작위로 나누는 것이 일반적

  • 시계열 데이터의 경우 과거,미래로 나누는 것이 일반적
    1) 시간 데이터가 존재한다고 무작정 시계열 데이터로 판단하지 않도록 하자

  • sample 메소드를 통해서 학습데이터를 추출, 전체에서 학습데이터를 드롭하여 테스트 데이터를 만들 수 있다.

다중선형회귀모델 학습

  • 기준모델
    1) MAE를 이용하여 계산
    2) 사이킷런의 mean_absolute_error로 쉽게 사용 가능하다
    3) api 문서를 가까이 하도록 노력하자

  • 단순선형회귀 모델
    1) 기준모델을 이용한 경우보다 에러가 줄어든 것을 볼 수 있다.

  • 다중선형회귀모델 (특성 2개 이상)
    1) OverallQual 특성이 추가하여 그래프를 확인해본다.
    2) 그래프로 차원을 표현하지 못하더라도 이용가능하다.
    3) 사용법은 단순히 특성을 여러개로 추가하면 된다.
    4) 에러가 단순 회귀모델보다 줄어든 것을 볼 수 있다.
    5) 특성이 두 개인 경우는 평면 방정식으로 표현 가능하므로 Plotly로 표현 (3D 그래프를 쉽게 확인 가능하다)

회귀계수의 해석

  • 다중회귀는 추가되는 특성의 수만큼 회귀계수가 늘어난다.

  • 사이킷런의 intercept, coef이용하여 확인

  • 특성이 얼마나 영향을 주는지 확인가능 (음수인지 양수인지, 절댓값이 얼마나 큰지를 통해서)

  • 회귀 계수로 설명이 쉽지만 단순한 모델이기에 과소적합이 일어날 수 있다.

회귀모델의 평가지표

  • MSE
    1) 많이 사용한다.
    2) 하지만 제곱으로 인해 어느정도의 오류인지 판단이 힘들다.
    3) 이상치의 평가지표에 민감하다.

  • MAE
    1) 오류의 양을 직관적으로 관측가능

  • RMSE
    1) MSE의 단점을 루트를 통해 개선

  • R-squared
    1) 회귀모델의 설명력을 표현
    2) 1에 가까울수록 설명력이 높다.
    3) 1-SSE/SST 나 SSR/SST로 표현가능, 예측에 오류가 없다면 SSR과 SST가 같아진다.
    4) SSE : 관측치와 예측치의 차이
    5) SSR : 예측치와 평균차이
    6) SST : 관측치와 평균 차이 (SSE+SSR)

  • 모델이 평균 기준모델을 같을 경우 R-squared가 0이 된다. SSR = 0 (전혀 학습이 되지 않는다.)

과적합과 과소적합

  • 일반화라는 용어와 밀접한 관련이 있다.

  • 훈련데이터와 테스트데이터 둘다 좋은 성능일 시 일반화가 잘되었다고한다.

  • 데이터가 충분하지 않을 경우 일반화를 하기 힘들다.

  • 과적합
    1) 훈련데이터에만 특수한 성질을 과하게 학습, 테스트 데이터에서 오차가 커집

  • 과소적합
    1) 일반화 성질을 학습하지 못해
    2) 훈련/테스트 데이터에서 모두 오차가 커짐

  • 분산/편향 트레이드 오프
    1) 다른 파트에서 배우는 용어들과 구분을 위해 분산error, 편향error로 알아두도록 하자.
    2) MSE 식은 Bias에러, Variance, irre로 나눌 수 있다.
    3) irre : 데이터 자체의 노이즈, 데이터를 바꾸지 않는 이상 없애기 힘들다.
    4) 모델의 복잡도가 높아질 수록 Variance는 커지고 Bias는 낮아진다.
    5) 모델의 복잡도가 낮을수록 Variance는 낮아지고 Bias는 커진다.
    6) 한 데이터 셋에서 오차가 적은데 다른 데이터 셋에서 오차가 많이 늘어나는 현상을 과적합이라고 하며 Variance가 높다고 한다.
    7) 모델의 복잡도가 커질수록 훈련데이터 성능 높아진다.
    8) 테스트데이터는 성능이 높아지다가 어느 시점부터 작아진다.

다항회귀모델로 과적합 만들어보기

  • 사이킷런의 train_test_split을 통해 데이터를 쉽게 나눌 수 있다.

  • PolynomialFeatures 함수를 통해서 다항회귀모델을 쉽게 구현할 수있다. (방정식에 다항 특성을 추가하는 것)

  • 차수가 늘어날 수록 곡선이 여러번 휘어진다.

  • 어느 순간부터 테스트 데이터의 성능이 낮아진다

  • model.score를 통해서 R square를 쉽게 구할 수 있다.

오늘의 참고자료

profile
For DE, DA / There is no royal road to learning

0개의 댓글