categorical features with high cardinality data

2020.11.02 08:05 3,282 조회
categorical features with high cardinality 데이터 다루는데 target encoding 같은 방법들을 쓰는데, 

혹시 feature들 grouping하는 것도 도움이 되나요? 


# 높은 카디널리티 데이터를 갖춘 범주 형 기능 : 대상 인코딩 및 자르기

높은 카디널리티 데이터를 갖춘 범주 적 특징은 일반적으로 작업하기가 어렵습니다.

많은 머신 러닝 알고리즘이 높은 카디널리티로 데이터를 처리 할 수 ​​없기 때문입니다.

데이터를보다 관리하기 쉽게하려면 카테고리 수를 줄이는 방법을 찾는 것이 중요합니다.

카테고리 수를 줄이기 위해 사용되는 두 가지 일반적인 방법은 대상 인코딩 및 자르기입니다.


## 타겟 인코딩

대상 인코딩은 범주 형 변수의 범주가 대상의 평균으로 대체되는 기술입니다.

모델이 범주 형 변수와 대상 변수 사이의 관계를 캡처 할 수 있기 때문에 유용합니다.

예를 들어, 네 가지 범주 (빨간색, 파란색, 녹색 및 노란색)의 "색상"이라는 변수가 있고 레이스 결과를 예측하려면

대상 인코딩을 사용하여 범주를 평균 마무리 시간으로 바꿀 수 있습니다.


## 자르기

카테고리 수를 줄이는 또 다른 방법은 카테고리를 자르는 것입니다.

자르기는 유사한 범주를 함께 그룹화하여 카테고리 수를 줄이는 과정입니다.

이것은 이해하기에는 너무 많은 범주가 있거나 일부 범주가 서로 너무 비슷하여 의미있는 구별을 할 때 유용합니다.

예를 들어, 100 카테고리의 변수가있는 경우 유사한 범주를 함께 그룹화하여 10 개 범주로자를 수 있습니다.


높은 카디널리티 데이터를 처리 할 때는 기계 학습 모델에서 사용할 기능을 결정하기가 어려울 수 있습니다.

높은 카디널리티 데이터를 갖는 범주 형 특징은 일반적으로 TE (Target Encoding)와 같은 방법과 함께 사용됩니다.

이것은 많은 범주를 다루고 의미있는 기능을 만드는 데 도움이 될 수 있습니다.


자르기는 몇 가지 유사한 값을 하나로 결합하여 데이터 세트의 크기를 줄이는 데 사용되는 기술입니다.

이것은 대형 데이터 세트를 처리 할 때, 특히 카테고리 수를 줄이려고 할 때 유용 할 수 있습니다.

높은 카디널리티 데이터를 갖춘 범주 형 특징의 맥락에서, 자르기는 관련 정보를 유지하면서 범주 수를 줄이는 데 도움이 될 수 있습니다.


아래는이 상황에서 자르기를 어떻게 사용할 수 있는지 보여주는 샘플 코드입니다.

이 코드는 "Pandas"패키지를 사용하여 데이터 세트의 "카운티"열을 자릅니다.

그런 다음 "County"열은 자른 카테고리가 포함 된 "cruped_county"열로 교체됩니다.


```

import pandas as pd

# 데이터 세트를 로드하십시오

df = pd.read_csv ( 'data.csv')


# '카운티'열을 자릅니다

df [ 'cruped_county'] = df [ 'County']. str.slice (start = 0, stop = 3)


# '카운티'열을 자른 버전으로 바꾸십시오.

df = df.drop ( 'County', 축 = 1)

df = df.rename (columns = { 'croped_county': 'county'})

```


자르기는 높은 카디널리티 데이터를 다룰 때 유용한 기술이 될 수 있습니다.

관련 정보를 유지하면서 데이터 세트의 카테고리 수를 줄이는 데 도움이 될 수 있습니다.

그러나 카테고리가 너무 작거나 의미가없는 경우 자르기가 모델의 정확도를 줄일 수 있음을 알고 있어야합니다.

따라서 모델을 적용하기 전에 자르기가 모델에 미치는 영향을 고려하는 것이 중요합니다.