차원이라는 용어는 특징 벡터의 요소 수와 동의어입니다. 일부 범주형 특성은 낮은 차원입니다. 예를 들면 다음과 같습니다.
기능 이름 | 카테고리 수 | 샘플 카테고리 |
---|---|---|
snowed_today | 2 | 참, 거짓 |
skill_level | 3 | 초급, 실무자, 전문가 |
season | 4 | 겨울, 봄, 여름, 가을 |
day_of_week | 7 | 월요일, 화요일, 수요일 |
행성 | 8 | 수성, 금성, 지구 |
범주형 특성에 가능한 카테고리가 적은 경우 어휘로 인코딩할 수 있습니다. 어휘 인코딩을 사용하면 모델은 가능한 각 범주형 값을 별도의 특성으로 취급합니다. 학습 중에 모델은 각 카테고리에 대해 서로 다른 가중치를 학습합니다.
예를 들어 car_color
라는 범주형 특성을 부분적으로 사용하여 자동차 가격을 예측하는 모델을 만들고 있다고 가정해 보겠습니다.
빨간색 자동차가 녹색 자동차보다 가치가 높을 수 있습니다.
제조업체에서 제공하는 외부 색상은 제한적이므로 car_color
는 저차원 범주형 특성입니다.
다음 그림은 car_color
의 어휘 (가능한 값)를 보여줍니다.
연습: 학습 내용 점검하기
색인 번호
머신러닝 모델은 부동 소수점 수만 조작할 수 있습니다. 따라서 다음 그림과 같이 각 문자열을 고유한 색인 번호로 변환해야 합니다.
문자열을 고유한 색인 번호로 변환한 후에는 모델이 값 간의 의미 있는 관계를 학습하는 데 도움이 되는 방식으로 데이터를 더 처리해야 합니다. 범주형 특성 데이터가 색인이 생성된 정수로 남아 있고 모델에 로드되면 모델은 색인이 생성된 값을 연속 부동 소수점 수로 처리합니다. 그러면 모델은 '보라색'이 '주황색'보다 6배 더 높다고 간주합니다.
원-핫 인코딩
다음 단계는 각 색인 번호를 원-핫 인코딩으로 변환하는 것입니다. 원-핫 인코딩의 경우:
- 각 카테고리는 N개의 요소로 구성된 벡터 (배열)로 표시되며, 여기서 N은 카테고리 수입니다. 예를 들어
car_color
에 가능한 카테고리가 8개 있는 경우 이를 나타내는 원-핫 벡터에는 8개의 요소가 있습니다. - 원핫 벡터의 요소 중 정확히 하나가 값 1.0을 갖고 나머지 모든 요소는 값 0.0을 갖습니다.
예를 들어 다음 표는 car_color
의 각 인코딩에 대한 원-핫 인코딩을 보여줍니다.
기능 | 빨간색 | 주황색 | 파란색 | 노란색 | 초록색 | 검은색 | 보라색 | 갈색 |
---|---|---|---|---|---|---|---|---|
"빨간색" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"오렌지" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"Blue" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
'노란색' | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
'녹색' | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
'검은색' | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"Purple" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
'갈색' | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
특성 벡터에 전달되는 것은 문자열이나 색인이 아닌 원-핫 벡터입니다. 모델은 특성 벡터의 각 요소에 대해 별도의 가중치를 학습합니다.
다음 그림은 어휘 표현의 다양한 변환을 보여줍니다.
희소 표현
값이 대부분 0이거나 비어 있는 특징을 희소 특징이라고 합니다. car_color
와 같은 많은 범주형 특성은 희소한 특성인 경향이 있습니다.
희소 표현은 1.0의 위치를 희소 벡터에 저장하는 것을 의미합니다. 예를 들어 "Blue"
의 원핫 벡터는 다음과 같습니다.
[0, 0, 1, 0, 0, 0, 0, 0]
1
가 2번 위치에 있으므로 (0부터 집계 시작) 위의 원-핫 벡터의 희소 표현은 다음과 같습니다.
2
희소 표현은 8개 요소 원핫 벡터보다 훨씬 적은 메모리를 사용합니다. 중요한 점은 모델이 희소 표현이 아닌 원핫 벡터로 학습해야 한다는 것입니다.
범주형 데이터의 이상치
숫자 데이터와 마찬가지로 범주형 데이터에도 이상치가 포함됩니다. car_color
에 인기 있는 색상뿐만 아니라 "Mauve"
또는 "Avocado"
와 같이 거의 사용되지 않는 일부 색상도 포함되어 있다고 가정해 보겠습니다.
이러한 예외 색상에 각각 별도의 카테고리를 지정하는 대신 외부 단어(OOV)라는 단일 '포괄적' 카테고리로 묶을 수 있습니다. 즉, 모든 외부값 색상이 단일 외부값 버킷으로 분류됩니다. 시스템은 이 특이값 버킷에 대한 단일 가중치를 학습합니다.
고차원 범주형 특성 인코딩
다음 표와 같이 일부 범주형 특성에는 많은 수의 측정기준이 있습니다.
기능 이름 | 카테고리 수 | 샘플 카테고리 |
---|---|---|
words_in_english | ~500,000 | "행복", "걷기" |
US_postal_codes | ~42,000 | '02114', '90301' |
last_names_in_Germany | ~850,000 | '슈미트', '슈나이더' |
카테고리 수가 많으면 일반적으로 원-핫 인코딩을 사용하지 않는 것이 좋습니다. 별도의 임베딩 모듈에 자세히 설명된 임베딩이 일반적으로 훨씬 더 나은 선택입니다. 임베딩은 차원 수를 크게 줄여 모델에 두 가지 중요한 이점을 제공합니다.
- 일반적으로 모델이 더 빨리 학습합니다.
- 빌드된 모델은 일반적으로 더 빠르게 예측을 추론합니다. 즉, 모델의 지연 시간이 더 짧습니다.
해싱 (해싱 트릭이라고도 함)은 덜 일반적인 차원 수 줄이기 방법입니다.
해싱에 대해 자세히 알아보려면 여기를 클릭하세요