범주형 변수를 전처리하는 방법의 모든 것

1. introduction

 

범주형 변수는 일종의 category를 가진다. 식물의 종이나 자동차 종류나

 

연속형보다 주의해서 다뤄야 할 수도 있음

 

보통 문자열로 나타나는데 머신러닝에 입력하기 어려워서 수치형으로 변환해줘야 한다.

 

2. one hot encoding

 

해당 변수의 값이 어떤 category에 속하면 1, 아니면 0으로 두는 방법

 

'그냥 0 아니면 1' 이런게 아니라.. '해당 변수의 VALUE가 어떤 category에 속한다면 1, 그렇지 않으면 0'

 

one hot encoding 예시

 

위의 그림에서 id 1은 개에 속하므로 개에 1을 주고 고양이에 0을 주어 (1,0)으로 encoding하고

 

id 2는 고양이에 속하므로 개에 0을 주고 고양이에 1을 주어 (0,1)로 encoding한다

 

특히 개와 고양이 모두에 속하는 id 5는 (1,1)로 encoding된다는 점에 유의한다

 

 

3. one hot encoding의 효과

 

모델이 변수가 가지는 의미를 파악할 수 있게 된다.

 

개 이다 >> 개에 1을 주고 고양이에는 0을 주어 그것에 담긴 의미를 그대로 모델에 전달함

 

그러나 category가 너무 많으면 column이 기하급수적으로 늘어나 sparse한 행렬이 되어

 

‘차원의 저주’라고 불리는, 성능이 급격히 떨어지고, 메모리가 급격히 늘어남

 

 

4. Label encoding

 

column 수가 급격히 늘어나는 one hot encoding의 단점을 극복하고자 column의 수는 1개로 고정하고

 

각 category가 가지는 의미는 다르게 할 수 있도록 1,2,3,... 다른 의미를 부여함

 

label encoding의 예시

 

위의 그림에서 개는 1 고양이는 2를 부여하고 개와 고양이에는 3을 부여한다

 

column을 1개로 쓸 수 있으므로 차원이 급격히 증가하는 것을 방지해줌

 

그러나 모델이 부여된 숫자 1,2,3,...자체에서 어떤 특징으로 인식할 수 있어

 

category 자체가 순서의 의미를 가지는 예를 들어 1학년, 2학년, 3학년 혹은 하, 중, 상이면 의미있을 수 있지만 그렇지 않을 때는 성능을 떨어뜨리는 요인이 될 수 있다.

 

 

5. frequency encoding

 

해당 category가 몇번 등장했는지 빈도수로 encoding하는 방법

 

frequency encoding의 예시

 

위의 그림에서 개가 3번 고양이가 1번 거위가 1번 등장했으므로 개를 3 고양이, 거위를 1로 부여한 encoding

 

당연히 생각할 수 있는 단점은 서로 다른 종인 고양이와 거위에 동일한 수치를 부여했다는 점

 

다른 데이터가 추가로 들어오면 encoding을 전체 바꿔야 할 수 있다는 점

 

 

6. target encoding

 

각 category에 대응하는 모든 데이터 포인트의 target 값의 평균으로 encoding함

 

target encoding 예시

 

위의 그림을 보면 id 1,3,4는 개인데 target값이 1000,1500,3500이므로 그 평균은 2000이어서 개는 2000으로 encoding함

 

고양이는 1000000이고 거위는 2000이고 1개있으므로 각각으로 encoding시킴

 

개와 거위가 다른 종임에도 불구하고 같은 값인 2000으로 encoding된다는 점

 

새로 들어온 데이터에 대해 coding하려면 다른 것도 전부 바꿔야할 수 있는 불상사가 생길 수 있음

 

 

7. 종합 비교

 

one hot encoding과 label encoding은 category에 의미 없는 수치를 부여하는 것임

 

frequency encoding은 값과 범주 빈도수 의미의 연관성을 부여한 값을 부여

 

target encoding은 값과 그것의 target사이 연관성을 부여

 

frequency, target의 단점은 이제 위에서 설명한대로 서로 다른 종인데 동일한 값이 부여될 수 있다는 것

 

특히 target encoding은 target변수와 직접적으로 연관을 가지므로 overfitting의 가능성이 높아 이것을 해결할 전처리 기법이 필요할 수 있음

 

 

8. embedding

 

entity embedding이라고도 불림

 

우리 데이터의 description은 text data로 위의 encoding 방식으로는 encoding하기가 쉽지 않음

 

Word2Vec같은 embedding 방식으로 가능 할 수 있음

 

 

Word2Vec으로 description을 embedding함

 

 

TAGS.

Comments