이번 포스팅에서는 회귀 모델을 통해서 학습하기 이전에 어떤 전처리를 거쳐야 하는지, 이름에는 회귀가 포함되어 있지만 실제로는 분류에 많이 사용되는 로지스틱 회귀, 그리고 회귀 트리에 대해서 다뤄보자. 

 

선형 회귀 모델을 위한 전처리 

 

선형 모델 : 피처와 타깃 값 간 선형의 관계가 있다고 가정하고, 이러한 최적의 선형 함수를 찾아내 결과 값을 예측. 

피처 값과 타깃 값 모두 정규 분포인 형태를 매우 선호하며, 이 데이터 분포들이 한쪽으로 쏠리는 등 왜곡된 경우에는 예측 성능에 부정적인 영향을 미칠 가능성이 높습니다. 

 

선형 모델의 성능을 높이는 여러가지 전처리 방법 

  1. 스케일링(Standard Scaler, MinMax Scaler)

  2. 1번의 방법이 성능 향상에 큰 영향을 주지 못하는 경우, 다항 특성을 적용하여 변환

  3. 왜곡된 분포를 가지고 있는 데이터에 Log 함수를 씌워 정규 분포에 가까운 형태를 가지도록 변환한다. 
    (Log 함수를 취하는 것은 언더 플로우 문제를 발생시킬수 있어, np.log1p() 함수를 사용한다. )
    np.log1p() → np.log() + 1

 

 

 

로지스틱 회귀

 

선형 회귀 방식을 분류에 적용한 알고리즘으로 선형 회귀 계열이다. 이름에 회귀가 포함된 것과 다르게 분류에 많이 사용된다. 일반적인 선형 회귀 방식과 로지스틱 회귀가 다른 점은 로지스틱 회귀가 시그모이드 함수 최적선을 찾는다는 점이다. 

위의 이미지에서 빨간색, 초록색, 파란색 선 처럼 여러가지 시그모이드 함수 중 데이터를 가장 잘 분류하는 시그모이드 함수를 찾는 것이 로지스틱 회귀이다. 

 

로지스틱 회귀를 사용하는 경우 경사하강법을 사용하게 되면 시그모이드 함수가 비선형 함수이기 때문에, 
기울기가 0인 지점이 최솟값이 아닌 극솟값인 경우 생기는 문제인 local minima와 극소점은 아니지만 기울기가 굉장히 작은 완만한 지점이어서 경사하강법이 잘 진행되지 않고 학습이 굉장히 느려지는 saddle point 문제가 발생한다. 

따라서 기존의 선형 회귀에서 사용하던 MSE, MAE 등의 평가지표를 사용하는 것이 아니라 Cross-Entropy를 사용한다. (사실, 애초에 회귀로 사용되기보다는 분류의 목적으로 더 많이 사용되기 때문이라고 생각하는 것이 더 자연스럽다.)

로지스틱 회귀는 가볍고 빠르지만, 이진 분류 예측 성능도 뛰어나 이진분류의 기본 모델로 사용하는 경우가 많다. 로지스틱 회귀는 희소한 데이터 세트 분류에도 뛰어난 성능을 보여, 텍스트 분류에서도 자주 사용된다. 

 

 

회귀 트리 

 

트리 기반의 회귀 : 회귀를 위한 트리를 생성하고 이를 기반으로 회귀 예측. 회귀 트리는 리프 노드에 속한 데이터 값의 평균값을 구해 회귀 예측값을 계산.

회귀 값 도출하는 방법 :리프 노드 생성 기준에 부합하는 트리 분할이 완료됐다면 리프 노드에 소속된 데이터 값의 평균값을 구해서 최종적으로 리프 노드에 결정 값으로 할당한다.

사이킷 런에서 제공하고 있는 트리 모델들은 CART(Classification And Regression Trees) 알고리즘에 기반하고 있어 분류 뿐만 아니라 회귀도 가능하다.

회귀 트리의 경우 분할되는 데이터 지점에 따라 브랜치를 만들면서 계단 형태로 회귀선을 만든다.

깊이가 깊어질수록 Overfitting되는 Tree 모델을 확인할 수 있다. 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기