배우기
인터랙티브·

범주형 인코딩

범주의 의미를 거짓 순서 없이 모델 입력으로 바꾸기

1

들어가며

서울=1, 부산=2, 대구=3은 저장에는 편하지만 모델에는 “대구가 서울보다 크다”는 거짓 순서와 거리를 만듭니다.

범주형 값은 이름·상태·등급을 나타냅니다. 숫자로 바꾸는 순간 모델은 그 숫자의 거리·순서·빈도 또는 목표와의 관계를 학습하므로 인코딩 자체가 모델링 가정입니다.

같은 변수도 선형모형, 트리, 신경망에서 적합한 표현이 다릅니다. 범주 수, 실제 순서, 희소성, 신규범주, 해석 목적과 목표 누수를 함께 고려해야 합니다.

핵심 질문

범주 사이에 실제 순서·거리·유사성이 있는가, 그 표현은 훈련 밖의 새 범주에서도 안전하게 작동하는가?

범주 값

문자

모형이 직접 계산할 수 없는 이름과 등급을 준비합니다.

인코딩 방식

원-핫·순서·타깃

범주의 의미와 모형에 맞춰 숫자 표현을 선택합니다.

미지 범주

운영

새 범주와 희귀 범주를 처리하는 규칙을 학습 전에 정합니다.

2

원-핫 인코딩

각 범주별로 0/1 열을 만들어 명목 범주에 순서를 강요하지 않습니다. red 행은 red 열만 1이고 blue·green은 0입니다.

선형모형은 각 범주의 별도 효과를 추정하고 일반 트리도 범주별 분할 조합을 표현할 수 있습니다. 그러나 범주가 수천 개면 열이 급증하고 대부분 0인 희소행렬이 됩니다.

훈련에서 관측된 범주 목록과 열 순서를 저장해야 합니다. 검증·배포에서 열을 다시 만들면 빠진 범주 때문에 열 위치가 달라질 수 있습니다.

색상redbluegreen
red100
blue010
green001
3

더미 변수와 기준범주

절편과 K개 범주의 더미 K개를 모두 넣으면 각 행의 더미 합이 1이라 절편과 완전한 선형관계가 생깁니다. 보통 한 범주를 기준으로 제외해 K−1개를 사용합니다.

회귀계수는 다른 조건이 같을 때 기준범주 대비 결과 차이입니다. 기준을 바꾸면 개별 계수는 달라지지만 적합값과 범주 간 전체 비교는 같습니다.

효과코딩은 범주효과를 전체평균 대비 편차로 표현합니다. 기준범주 선택과 코딩 방식을 보고하지 않으면 계수 해석이 불가능합니다.

4

순서형 인코딩

낮음<중간<높음처럼 실제 순서가 있으면 0,1,2로 표현할 수 있습니다. 하지만 이 코딩은 낮음→중간과 중간→높음 효과가 같은 간격·직선이라는 가정을 추가합니다.

순서만 유지하고 간격을 강제하지 않으려면 순서형 결과모형, monotonic constraint, 단계별 더미 또는 spline을 검토합니다.

교육수준처럼 순서는 있어도 효과가 단조롭지 않을 수 있습니다. 업무가정과 검증성능을 함께 확인하며 코드 숫자를 원래 등급으로 역추적할 수 있어야 합니다.

5

빈도·횟수 인코딩

각 범주를 훈련자료의 출현횟수나 비율로 바꾸면 열 하나로 고카디널리티를 표현할 수 있습니다. 인기도·희소성이 목표와 관련된 문제에서 유용합니다.

서로 다른 범주가 같은 빈도면 완전히 같은 값이 되어 정체성을 잃습니다. 또한 훈련기간의 인기와 운영기간의 인기가 달라지면 의미가 이동합니다.

빈도도 전체 데이터가 아니라 훈련 폴드에서 계산해야 합니다. 시간예측에서는 미래 빈도를 사용하지 않고 예측시점까지 누적된 빈도만 사용해야 합니다.

6

Target Encoding

범주별 목표평균을 사용하면 열 하나에 강한 예측정보를 담지만 같은 행의 정답이 인코딩에 들어가는 누수가 매우 쉽습니다. 범주가 한 번만 등장하면 인코딩이 그 행의 목표와 같아집니다.

스무딩은 관측이 적은 범주의 평균을 전체평균 쪽으로 수축해 분산을 줄입니다. α가 클수록 더 많은 증거가 있어야 범주평균을 믿습니다. 분류에서는 양성률, 회귀에서는 평균을 사용합니다.

encc=(ncyˉc+αyˉ)/(nc+α)enc_c=(n_c\cdot \bar{y}_c+\alpha \cdot \bar{y})/(n_c+\alpha )
n_c=2인 범주는 n_c=200인 범주보다 전체평균에 더 가깝게 수축됩니다.
7

OOF 인코딩

훈련자료를 K개 폴드로 나눠 각 행의 인코딩을 그 행이 속하지 않은 K−1개 폴드의 통계로 계산합니다. 이렇게 만든 out-of-fold 값으로 최종 모델을 학습합니다.

검증·테스트는 해당 훈련폴드 전체에서 계산한 통계로 변환합니다. 최종 배포 전에는 전체 훈련자료로 인코더 통계를 다시 적합하고 모델과 함께 저장합니다.

시간자료는 무작위 OOF도 미래 목표를 과거 행에 넣을 수 있습니다. 과거 데이터만으로 다음 시점을 인코딩하는 ordered·time-aware 계산이 필요합니다.

8

고카디널리티

사용자ID·주소·상품코드처럼 범주 수가 표본 수에 가까우면 원-핫은 메모리와 과적합 문제가 큽니다. ID는 새 개체 일반화에 거의 도움이 없고 개체 암기와 그룹 누수를 만들 수 있습니다.

상위 범주 묶기, 빈도, hashing, 규제된 target encoding, 임베딩과 도메인 계층을 검토합니다. 우편번호를 지역·도시·위경도처럼 의미 있는 상위 특성으로 파생할 수도 있습니다.

희귀 범주를 “기타”로 합칠 기준은 훈련자료에서 정하고 운영에서도 동일하게 적용합니다. 빈도만 보지 말고 중요한 규제·안전 집단이 사라지지 않는지 확인합니다.

9

미지 범주

배포 후 처음 보는 범주는 반드시 생깁니다. 오류로 중단, unknown 열, all-zero, hashing, 전체평균 target 값 중 모델과 업무에 맞는 규칙을 미리 정합니다.

결측은 값이 관측되지 않은 것이고 미지 범주는 값은 있지만 훈련어휘에 없다는 뜻입니다. 둘을 같은 코드로 합치면 측정과 신규성의 신호가 섞입니다.

미지 범주 비율이 급증하면 신규상품 출시나 입력 포맷 변경일 수 있습니다. 단순 처리뿐 아니라 모니터링과 재학습 기준이 필요합니다.

10

트리와 범주형

일부 부스팅 구현은 범주통계나 최적 분할을 내부에서 처리합니다. 이 경우 문자열·category dtype, 최대 범주 수, 미지값 처리와 누수방지 방식을 확인합니다.

일반 결정트리에 A=1, B=2, C=3을 넣으면 “코드≤1.5”처럼 임의 순서 분할을 합니다. 코드 번호를 바꾸면 결과도 바뀔 수 있어 명목변수에는 안전하지 않습니다.

원-핫 트리는 한 번에 한 범주 대 나머지를 나눠 여러 범주 묶음을 표현하려면 깊이가 필요합니다. 네이티브 범주 분할이 더 효율적일 수 있지만 검증을 통해 선택합니다.

11

직접 해보기

target encoding에서 범주 표본 수와 스무딩 강도를 바꾸며 범주 양성률 .90이 전체 양성률 .20 쪽으로 얼마나 수축되는지 확인하세요.

범주형 인코딩 인터랙티브 랩

데이터 문제의 양과 처리 강도를 바꾸며 남는 정보와 왜곡이 어떻게 달라지는지 비교하세요.

서울부산대전제주1000원-핫 벡터

조작할 때 그래프의 위치·모양·오류 구조를 먼저 보세요.

계산 결과

인코딩 값 0.433

범주 10건과 전체평균을 대표하는 α=20의 가중평균입니다. 작은 범주일수록 .20에 더 가깝습니다.

확인할 것

한 조절값만 먼저 움직인 뒤 그래프의 어떤 부분이 변하고 무엇은 그대로인지 설명해보세요.

12

핵심 정리

  • 명목 범주에는 원-핫이 거짓 순서를 만들지 않는 기본값입니다.
  • 순서형 인코딩은 실제 순서와 간격 가정을 구분합니다.
  • target encoding은 OOF와 스무딩으로 누수를 막습니다.
  • 고카디널리티·희귀·미지 범주의 처리규칙을 정합니다.
  • 인코더를 학습 폴드에만 적합하고 모델과 함께 배포합니다.
13

더 깊이 알아보기

주제핵심 내용
Feature Hashing범주를 고정 차원 버킷에 매핑해 어휘 저장과 미지범주 문제를 줄이지만 충돌 때문에 서로 다른 범주가 같은 열을 공유합니다.
Embedding범주를 저차원 벡터로 공동 학습해 상품·사용자 유사성을 표현하지만 많은 데이터와 규제가 필요하고 좌표 자체 해석은 어렵습니다.
Ordered Target Statistics각 행보다 앞선 관측의 목표통계만 사용해 자기 목표와 미래 목표가 들어가는 누수를 줄입니다.
다음 학습변수 선택과 파생변수는 인코딩된 열을 포함해 실제 추가정보·안정성·비용·예측시점 가용성을 기준으로 입력을 구성합니다.
다음: 변수 선택·파생변수