범주형 데이터 변환

특성의 일부는 순서가 지정된 관계에 없는 개별 값일 수 있습니다. 품종은 개, 단어, 우편번호입니다. 이러한 특성을 범주형이라고 하며, 각 값을 카테고리라고 합니다. 범주형 값을 문자열이나 짝수로 나타낼 수 있지만 이러한 숫자를 비교하거나 서로 빼는 것은 불가능합니다.

종종 숫자 값이 아닌 정수 값을 범주형 데이터로 포함하는 특성을 표현해야 합니다. 예를 들어 값이 정수인 우편번호 특성을 생각해 보세요. 이 기능을 실수로 숫자로 표현하면 모델은 서로 다른 우편번호 간의 숫자 관계를 찾아야 합니다. 예를 들어 모델은 우편번호 20004가 신호를 우편번호 10002로 두 배 (또는 절반)로 식별한다고 예상해야 합니다. 우편번호를 범주형 데이터로 표시하여 모델이 각 개별 우편번호에 대해 별도의 신호를 찾을 수 있도록 합니다.

데이터 필드의 카테고리 수가 적은 경우(예: 요일 또는 제한된 색상 팔레트) 각 카테고리에 고유한 특성을 만들 수 있습니다. 예를 들면 다음과 같습니다.

팔레트의 각 색상은 별도의 지형지물로 표시됩니다.
즉, 각 색상은 특징 벡터의 개별 지형지물입니다.
예를 들어 빨간색은 지형지물이고 주황색은 별도의 지형지물입니다. 그림 1: 각 카테고리의 고유한 기능

 

모델은 각 색상에 대해 별도의 가중치를 학습할 수 있습니다. 예를 들어 모델은 빨간색 자동차가 초록색 자동차보다 더 비싼 점을 학습할 수 있습니다.

그러면 특성의 색인을 생성할 수 있습니다.

이제 팔레트의 각 색상이 동일한 지형지물에 속합니다. 
즉, 색상은 이제 특성 벡터의 단일 특성일 뿐입니다.
각 색상에는 고유한 값이 있습니다. 예를 들어 빨간색은 값이 0이고 주황색은 값이 1입니다. 그림 2: 색인이 생성된 기능

 

이러한 종류의 매핑을 어휘라고 합니다.

어휘

어휘에서 각 값은 고유한 특성을 나타냅니다.

Index NumberCategory
0Red
1Orange
2Blue
......

모델은 문자열에서 색인을 조회하여 특징 벡터의 해당 슬롯에 1.0을 할당하고 특징 벡터의 다른 모든 슬롯에 0.0을 할당합니다.

범주를 특성 벡터에 매핑하는 엔드 투 엔드 프로세스의 다이어그램
다이어그램에서 입력 특성은 노란색, 주황색, 파란색, 파란색입니다. 시스템은 저장된 어휘 (빨간색은 0, 주황색은 1, 파란색은 2, 노란색은 3 등)을 사용하여 입력 값을 ID에 매핑합니다. 따라서 시스템은 노란색, 주황색, 파란색, 파란색을 3, 1, 2, 2에 매핑합니다. 그러면 시스템은 이러한 값을 원-핫 특성 벡터로 변환합니다. 예를 들어 시스템에서 7가지 가능한 색상을 사용할 경우 3은 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0이 됩니다. 그림 3: 카테고리를 특성 벡터에 매핑하는 엔드 투 엔드 프로세스

희소 표현에 관한 참고사항

카테고리가 요일인 경우, 예를 들어 금요일을 특성 벡터 [0, 0, 0, 0, 1, 0, 0]으로 나타낼 수 있습니다. 그러나 대부분의 ML 시스템 구현은 희소 표현으로 메모리에서 이 벡터를 나타냅니다. 일반적인 표현은 비어 있지 않은 값과 해당 색인의 목록입니다(예: 값의 경우 1.0, 색인의 경우 [4]). 따라서 많은 양의 0을 저장하는 메모리를 더 적게 사용하고 행렬 곱셈을 더 효율적으로 수행할 수 있습니다. 기본 수학 측면에서 [4] 는 [0, 0, 0, 0, 1, 0, 0]과 같습니다.

용어 (OOV)

숫자 데이터에 이상점이 포함된 것처럼 범주형 데이터도 포함됩니다. 예를 들어 자동차에 대한 설명이 포함된 데이터 세트를 생각해 보세요. 이 데이터 세트의 기능 중 하나는 자동차 색상일 수 있습니다. 일반적인 자동차 색상 (검은색, 흰색, 회색 등)이 이 데이터 세트에 잘 대표되고 각 색상을 카테고리로 만들어 이러한 여러 색상이 값에 어떤 영향을 주는지 알아볼 수 있습니다. 그러나 이 데이터 세트에 특이한 색상 (연한 색상, 소스, 아보카도)이 포함된 소수의 자동차가 포함되어 있다고 가정해 보겠습니다. 각 색상에 별도의 카테고리를 지정하는 대신 Out of Vocab (OOV)이라는 포괄적인 카테고리로 묶을 수 있습니다. OOV를 사용하면 시스템이 이러한 드문 색상 각각에 학습하는 시간을 낭비하지 않습니다.

Hashing

또 다른 옵션은 모든 문자열 (카테고리)을 사용 가능한 색인 공간으로 해시하는 것입니다. 해싱으로 인해 종종 충돌이 발생하지만 모델이 특정 문제에서 잘 작동하는 동일한 색인의 카테고리 공유 표현을 학습합니다.

중요한 용어의 경우 충돌로 인해 어휘를 선택하는 것보다 해싱이 나빠질 수 있습니다. 반면 해싱은 어휘를 조합할 필요가 없으므로 시간 경과에 따라 특성 분포가 크게 변경되는 경우에 유용합니다.

두 단어 목록을 보여주는 다이어그램 목록 1개는 단어 10개로 구성됩니다. 다른 목록은 해시 버킷 10개를 8개로 나눈 값을 보여줍니다. 따라서 해시 버킷 중 6개는 단어 1개를 포함하고 있고 해시 버킷 2개에는 모두 단어 2개가 포함되어 있습니다.  각 해시 버킷은 1에서 8 사이의 숫자로 식별됩니다.그림 4: 어휘에 항목 매핑

해싱과 어휘의 하이브리드

하이브리드 방식을 사용해 해싱과 어휘를 결합할 수 있습니다. 데이터에서 가장 중요한 카테고리에는 어휘를 사용하지만 OOV 버킷을 여러 OOV 버킷으로 대체하고 해싱을 사용하여 버킷에 카테고리를 할당합니다.

해시 버킷의 카테고리는 색인을 공유해야 하며 모델은 좋은 예측을 할 수 없지만 어휘 외의 카테고리를 학습하기 위해 어느 정도 메모리가 할당되었습니다.

단어 3개가 표시된 다이어그램 목록 10개는 분류할 10개의 단어로 구성됩니다. 다른 두 목록은 이 10개 단어를 어휘 및 해시 버킷에 매핑합니다. 즉, 5단어는 어휘에 직접 매핑되고 다른 5개 단어는 2개의 해시 버킷에 매핑됩니다. 한 해시 버킷에는 단어 두 개가 포함되고 다른 해시 버킷에는 단어 세 개가 포함됩니다.  어휘에는 일반 단어가 포함되어 있고 해시 버킷에는 희귀 단어가 포함되어 있습니다. 그림 5: 어휘와 해싱을 결합한 하이브리드 접근 방식

임베딩 관련 참고사항

머신러닝 단기집중과정에서 임베딩은 연속 값 특성으로 표현되는 범주형 특성이라는 것을 배웠습니다. 딥 모델은 색인을 색인에서 임베딩으로 자주 변환합니다.

임베딩을 통해 카테고리를 특징 벡터에 매핑하는 엔드 투 엔드 프로세스를 보여주는 다이어그램 임베딩 테이블은 번호가 매겨진 행 집합으로 구성됩니다. 각 행은 0.0~1.0 사이의 부동 소수점 값 집합으로 구성됩니다. 시스템은 카테고리를 변환하기 위해 임베딩 테이블에서 해당 행을 복사합니다.
예를 들어 입력 카테고리가 0이면 시스템은 임베딩 테이블의 첫 번째 행을 특성 벡터에 복사합니다. 입력 카테고리가 1이면 시스템은 임베딩 테이블의 두 번째 행을 특성 벡터에 복사합니다. 그림 6: 임베딩을 통한 희소 특성 벡터

앞서 설명한 다른 변환은 디스크에 저장될 수 있지만 임베딩은 다릅니다. 임베딩은 학습되기 때문에 일반적인 데이터 변환이 아니며, 모델의 일부분입니다. 이는 다른 모델 가중치로 학습되며 기능적으로는 가중치 레이어와 동등합니다.

선행 학습된 임베딩은 어떨까요? 선행 학습된 임베딩은 일반적으로 학습 중에 여전히 수정 가능하므로 여전히 개념적 모델의 일부입니다.