본문 바로가기
[코드스테이츠] AI부트캠프2기/Section 2

[Section 2] 1. 단순선형회귀 (feat. 코드스테이츠)

by xper100 2021. 4. 5.

[AI 부트캠프 2기] Simple Regression (2021/4/5)

기본선형회귀와 다중선형회귀에 대해서 기초적인부분을 다루었다. 내용중 핵심이 되는 기본 가설, OLS, 성능지표, 정규화의 중요성에 대해서 정리하자.


회귀분석의 가설

1. 선형성(Linearity)

  • X와 Y는 선형적 관계를 가져야 함

 

2. 독립성(Independency)

  • 각 잔차들은 독립성이 확보되어야 한다.
  • 독립변수와 잔차는 상관관계가 없다.

 

3. 정규성(Normality)

  • 변수와 잔차는 정규성을 가져야 함
  • 잔차는 평균 = 0, 분산 = σ2를 따라야 함

 

4. 등분산성(Homoscedasticity)

  • 잔차들의 분산은 같아야 함

가설들 중 하나라도 만족하지 못하면 모델성능에 제약적인 부분이 발생한다.


OLS(Ordinary Least Square)

Ordinary Least Square(OLS)란 에러가 최소화될 때의 계수들을 찾는 과정이다.

데이터를 선형식으로 나타내면,

 

 

MSE(Mean Squared Error)를 통해 회귀분석의 성능을 비교하는데, 이를 위해서는 다음과 같은 식이 필요하다.

 

 

Ordinary Least Square(OLS)란 회귀식의 주어진 β0  β1를 구하는 방식으로,

 

위와 같이 에러를 최소화하여 각 계수를 도출하는 과정을 나타낸다.

 


MSE vs MAE

MSE(Mean Squared Error)

  • 일반적으로 쓰이는 성능지표
  • 큰 오차에 페널티를 부여하여 나타낸 지표

 

MAE(Mean Absolute Error)

  • 직관적으로 예측값과 측정값의 차이를 보여주는 지표
  • 데이터의 단위 보존

 


스케일링(Scaling)과 모델성능의 관계

목적:

단위가 다른 독립변수들을 하나의 규정된 형태로 전환하여 모델성능을 높이는 작업

 

종류:

1) Standard Scaler:

정규식으로 데이터를 전환하는 방법. 단, feature가 정규분포를 따르지 않을시에는 좋은 방법이 아니다.

 

 

Python Library

sklearn.preprocessing.StandardScaler().fit()

sklearn.preprocessing.StandardScaler().transform()

sklearn.preprocessing.StandardScaler().fit_transform()

 

 

2) Min-Max Scaler:

  • 가장 보편적으로 활용되는 방식으로 각 변수간의 범위를 활용하여 -1 ~ 1사이의 값으로 변환
  • 정규분포가 아니거나 표준편차가 작을때 효과적이다.

 

 

Python Library

sklearn.preprocessing.MinMaxScaler().fit()

sklearn.preprocessing.MinMaxScaler().transform()

sklearn.preprocessing.MinMaxScaler().fit_transform()

 

 

3) Robust Scaler:

 

  • 최소-최대대신에 IQR(Interquartile Range)중 25%와 75%를 기준으로 스케일링을 하여 이상치(Outlier)의 영향을 최소화시킬 수 있다. 
  • 적은 데이터에 효과적이다.

 

Python Library

sklearn.preprocessing.RobustScaler().fit()

sklearn.preprocessing.RobustScaler().transform()

sklearn.preprocessing.RobustScaler().fit_transform()

 

 

4) Normalizer:

 

  • 각 변수를 모든 변수들의 크기들로 나누어서 변환시킨다. (Cartesian Coordinates)
  • 원점으로부터 반지름 1만큼 떨어진 범위 내로 변환

 

Python Library

sklearn.preprocessing.Normalizer().fit()

sklearn.preprocessing.Normalizer().transform()

sklearn.preprocessing.Normalizer().fit_transform()

 

댓글


출처: https://privatedevelopnote.tistory.com/81 [개인노트]