데이터 & AI/코칭스터디10기<Beyond AI BASIC 2023>

2.정형 데이터 전처리 - 데이터 전처리(1)

뭉실뭉실뜬구름 2023. 5. 10. 15:55
728x90

BEFORE:

  • 머신러닝 모델에 데이터를 입력하기 위해서는 데이터에 대한 적절한 전처리가 필요하다. 범주형,연속형 데이터를 어떻게 전처리할 수 있는지, 범주형 데이터를 변화하는 다양한 인코딩 방법과 각 방법의 장단점에 대해 알아보자

 

THE AIMS:

  • 범주형 및 연속형 데이터 전처리 방법과 데이터 상 결측치와 이상치 처리 방법을 이해하자

핵심 단어

  • 데이터 전처리
  • 연속형, 범주형 처리
  • Scaling
  • Log, Quantile Transformation
  • Binning
  • Encoding
  • Embedding

 

 

데이터 전처리

- 연속형, 범주형 처리

- 결측치 처리

- 이상치 처리

 

  •  데이터 전처리란 모델에 데이터를 입력하기 위해 데이터를 처리하는 과정을 의미한다. EDA를 적절히 하기 위해 데이터의 구조를 바꾸고 처리하는 과정 역시 데이터 전처리의 과정 중 하나이다. 
  • 데이터 전처리는 EDA의 목적, 사용하는 모델에 따라 달라지게 되는데, EDA와 마찬가지로 정해진 답은 없으며, 일반화 역시 어렵다. 하지만 EDA과정에서 배웠듯, 시작하는 과정에서 생각해보면 좋은 방법은 존재한다.

** 이번 강의에서는 Sklearn의 Boston Dataset을 사용하도록 하겠습니다. 이 데이터셋을 열어보면 다음과 같습니다: 

총 506개의 데이터 인스턴스가 존재하며, 13개의 변수로 구성되어 있다. 왼쪽 테이블에서 파란색으로 표시한 "CHAS"라는 변수는 범주형이며, 이 외에 모든 변수는 연속형 변수이다. 예측해야할 타겟 변수는 집값으로 회귀 문제를 위한 데이터셋이다. 우측 위에 차트는 타겟 변수의 분포를 나타내며, 아래의 그래프는 "CHAS" 변수에 대한 분포도를 나타낸다. 

연속형 변수 처리:

1.Scaling : 

Scaling은 데이터의 단위 혹은 분포를 변경하는 방법을 의미하며,선형기반의 모델을 사용할 경우 필수적으로 진행되는 과정이다. Scaling은 Scale만 바꾼 경우, 그리고 Scale과 분포를 바꾼 경우로 나눌 수 있다. Scaling에는 다음과 같은 3가지 방법이 있다.

1. Min Max Scaling

  •    현재 값에서 Minimum 값을 빼고, Max 값과 Min 값의 차이로 나눕니다

2. Standard Scaling

  • 현재 값에서 평균 값을 빼고, 표준 편차로 나눕니다

 

3. Robust Scaling 

  • 현재 값에서 중위 값을 빼고, IQR로 나눕니다

 

  • Scaling에 따라 선형 모델이 어떻게 변화하는지 알아보겠다.

** 위에 차트는 Age 피쳐에 Scaling을 진행했을 때의 효과를 보여준다. 가장 좌측에 있는 차트는 Min Max Scaling을 진행했을 때의 결과인데, Squared Error가 26.2 정도로 계수값이 아주 작은 것을 볼 수 있다.

    중간에 있는 차트는 Age피처에 1E-6을 곱해 아주 작게 만들고 Scaling은 진행하지 않은 상태로 피처의 계수값이 아주        커져 타깃에 영향을 주는 피처가 되었습니다. 우측의 차트는 Age피처에 10E10을 곱해 아주 크게 만들고 Scaling을 하        지 않았을 때이다. Age 피처의 계수값이 아주 작아진 것을 볼 수 있으며, 모델의 Error도 33.4 정도로 커진 것을 관찰할        수 있다.이처럼 Scaling은 잘못하면 계수값에 영향을 주며, 그에 따라 모델의 성능에도 영향을 줄 수 있기 때문에 적절하      게 Scaling하는 것은 매우 중요하다.

 

 

2. Scaling + Distribution

 

1. log transformation

  • 왼쪽과 같이 변수의 분포가 왼쪽으로 치우쳐 있는 경우, Log Transformation을 통해 오른쪽 차트와 같이 정규 분포에 가까운 분포를 만들어낼 수 있습니다. 

2. Quantile transformation

 

  •  값을 Uniform하게 변화시키거나 정규 분포로 변환시켜 줍니다. 
  • Log Transformation과 가장 큰 차이점은 어떠한 분포가 들어와도 정규 분포 혹은 Uniform한 분포로 변환이 가능합니다.

** 분포 변환의 장점:

   Transformation을 사용함으로 인해 특정 Feature(피처)와 Target과의 관계를 더욱 직접적으로 변환할 수 있다. 왼쪽 차트에서 원래 'LSTAT' 변수와의 상관관계는 -0.74정도로 나오지만, Transformation을 통해 오른쪽 차트와 같이 상관관계가 -0.79로 Target과 더욱 직접적인 관계를 갖게 된다. 이렇게 함으로써 선형 모델에 해당 피처가 모델의 성능을 올릴 수 있는 요소를 갖게된다.

 

 

 

3. Binning

 

  • Bining은 연속형 변수를 범주형 변수로 변형시키는 방법이다. 위의 그래프와 같이 봉우리가 여러 개 있는 데이터이며 구분되는 구간이 있는 반면, 연속형으로 존재하게 됨으로써 중간중간 유의미하지 않은 정보들이 있을 수 있다. 이런 경우 Overfitting이 발생할 수도 있게 된다. 이를 방지하기 위해 연속형 변수를 묶어 범주형 변수로 바꿀 수 있다.

 

범주형 데이터의 전처리:

  • 범주형 변수는 보통 문자열로 되어 있어 머신러닝 모델의 입력 데이터로 직접 사용할 수 없으며, 수치형 변수로 인코딩(Encoding)해주는 과정이 필요하게 된다. 인코딩 하는 방법에는 크게 One Hot Encoding, Label Encoding, Frequency, Target Encoding 그리고 Embedding 등의 방법이 있다.

 

  1. One Hot Encoding

 

  • 변수를 1과 0으로 나누는 방법입니다. 해당 값이 존재하는 경우에는 1, 그렇지 않은 경우에는 0으로 지정합니다.
  • 예) "개"와 "고양이"라는 애완동물에 대해 ID 1,3,4,5와 같이 개를 키울때는 "종_개" 컬럼에 1을 넣어주며, ID 2와 5와 같이 고양이를 키우면 "종_고양이" 컬럼에 1을 넣어줍니다. 
  • 장점: 변수의 의미가 명확
  • 단점: 변수의 종류가 많아질수록 변수 개수가 종류만큼 늘어나게 되고 Parse한 행렬이 만들어지게 됨 (차원의 저주)

2. Label Encoding

  • 컬럼의 수는 한 개로 유지하면서 각각의 종이 다른 값을 가지게 의미를 부여 (예. 개: 1,  고양이 : 2,  고양이,개 : 3)
  • 단점: 숫자의 순서가 특징으로 여겨질 수 있습니다. 

 

3. Frequency Encoding

  • 해당 변수의 값이 몇 번 등장하는지 빈도수를 측정해 변수의 값으로 사용하는 방식
  • 예) "개"는 3번 등장, "고양이" & "거위"는 1번씩 등장함으로 오른쪽과 같이 "개" 는 3, "고양이"와 "거위"는 1로 지정하는 방식입니다
  • 장점: 값에 의미가 있는 범주형 데이터로 만들 수 있습니다
  • 단점: 다른 종류의 변수가 같은 Target 변수값을 가질 수 있습니다. 

4. Target Encoding

  • 각각의 변수 종류가 가지는 Target 변수의 평균으로 인코딩
  • 예) "개"는 사료의 비용이 평균값 2000원을 갖습니다 ((1000 + 1500 + 3500)/3 )
  • 단점: 1, 3, 4, 5 ID처럼 다른 종이 같은 Target Encoding을 갖게 될 수 있습니다

 

5. Embedding

  • Entity Embedding이라고도 하는 이 방법은 Word2Vec과 같은 모델을 이용해 Text 데이터를 더 낮은 차원으로 임베딩하는 방법입니다. 

 

728x90