범주형 변수를 전처리하는 방법의 모든 것
1. introduction
범주형 변수는 일종의 category를 가진다. 식물의 종이나 자동차 종류나
연속형보다 주의해서 다뤄야 할 수도 있음
보통 문자열로 나타나는데 머신러닝에 입력하기 어려워서 수치형으로 변환해줘야 한다.
2. one hot encoding
해당 변수의 값이 어떤 category에 속하면 1, 아니면 0으로 두는 방법
'그냥 0 아니면 1' 이런게 아니라.. '해당 변수의 VALUE가 어떤 category에 속한다면 1, 그렇지 않으면 0'
위의 그림에서 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,... 다른 의미를 부여함
위의 그림에서 개는 1 고양이는 2를 부여하고 개와 고양이에는 3을 부여한다
column을 1개로 쓸 수 있으므로 차원이 급격히 증가하는 것을 방지해줌
그러나 모델이 부여된 숫자 1,2,3,...자체에서 어떤 특징으로 인식할 수 있어
category 자체가 순서의 의미를 가지는 예를 들어 1학년, 2학년, 3학년 혹은 하, 중, 상이면 의미있을 수 있지만 그렇지 않을 때는 성능을 떨어뜨리는 요인이 될 수 있다.
5. frequency encoding
해당 category가 몇번 등장했는지 빈도수로 encoding하는 방법
위의 그림에서 개가 3번 고양이가 1번 거위가 1번 등장했으므로 개를 3 고양이, 거위를 1로 부여한 encoding
당연히 생각할 수 있는 단점은 서로 다른 종인 고양이와 거위에 동일한 수치를 부여했다는 점
다른 데이터가 추가로 들어오면 encoding을 전체 바꿔야 할 수 있다는 점
6. target encoding
각 category에 대응하는 모든 데이터 포인트의 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함
'정형데이터' 카테고리의 다른 글
정형데이터에서 결측치를 처리하는 방법 (0) | 2022.06.24 |
---|---|
연속형 변수를 전처리하는 방법은 무엇이 있고 왜 전처리를 해야하는가? (0) | 2022.06.19 |
회귀문제에서 사용하는 decision tree (0) | 2021.12.15 |
연속형 변수를 사용한 decision tree (0) | 2021.12.14 |
decision tree의 불순도를 측정하는 기준 (0) | 2021.12.14 |