One-Hot 인코딩은 컴퓨터가 이해할 수 있도록 범주형 데이터를 이진 벡터로 변환하는 방법입니다. 이 기법은 각 범주에 해당하는 위치만 1로 표시하고, 나머지는 0으로 만듭니다.
1. One-Hot Encoding의 정의
One-Hot Encoding은 주어진 범주 중 하나를 컴퓨터가 이해할 수 있는 0과 1로 이루어진 벡터로 변환하는 방법입니다. 변환된 벡터에서 해당하는 범주만 1로 표시되고, 나머지는 모두 0이 됩니다.
예시로,
과일"이라는 범주에 사과, 포도, 수박이라는 범주의 값이 있다고 해봅시다.
- 사과 → [1, 0, 0]
- 포도 → [0, 1, 0]
- 수박 → [0, 0, 1]
이렇게 변환하면, 컴퓨터는 이진 벡터로 변환된 데이터를 처리할 수 있습니다.
2. 주요 특징
1) 범주별 독립적 표현
각 범주는 해당 위치만 1로 표시된 이진 벡터로 표현됩니다.
2) 순서와 크기의 왜곡 방지
범주형 데이터 간에 서열이나 크기의 의미를 부여하지 않습니다.
3) 고차원의 희소 벡터
범주의 수가 늘어날수록 벡터의 차원이 증가하고 대부분의 값이 0인 희소 벡터가 됩니다.
ex>: 10,000개의 범주 → 10,000차원 벡터에서 단 1개의 값만 1.
4) 컴퓨터가 이해할 수 있는 형태로 변환
범주형 데이터를 숫자 벡터로 변환해 머신러닝과 딥러닝 모델이 처리할 수 있도록 도와줍니다.
5) 범용적 사용
주로 선형 모델과 신경망 모델에서 사용되며, 특히 자연어 처리(NLP)나 범주형 데이터가 많은 문제에 자주 활용됩니다.
3. One-Hot Encoding의 장점
1) 순서 정보의 왜곡 방지
각 범주를 이진 벡터로 변환하여, 범주 사이에 서열이 없도록 합니다.
2) 단순하고 직관적
범주형 데이터를 0과 1로 표현하기 때문에 이해와 구현이 쉽습니다.
3) 다양한 알고리즘과 모델에서 사용 가능
신경망 모델, 선형 회귀, 로지스틱 회귀 등 다양한 모델에 쉽게 적용됩니다.
4. One-Hot Encoding의 단점
1) 고차원 문제
범주 수가 많을수록 벡터의 차원이 커져, 계산 속도와 메모리 사용이 비효율적입니다.
ex> 1,000개의 범주 → 1,000차원 벡터.
2) 희소성 문제
부분의 값이 0인 벡터가 생성되어, 메모리와 연산 자원이 낭비될 수 있습니다.
3) 범주 간 관계를 반영하지 못함
서로 유사한 범주(예: '고양이'와 '호랑이')도 완전히 독립적인 벡터로 처리됩니다.
5. One-Hot Encoding 코드 사용 예
import pandas as pd
# 데이터 준비
data = pd.DataFrame({'과일': ['사과', '포도', '수박', '사과']})
# One-Hot Encoding 수행
encoded_data = pd.get_dummies(data, columns=['과일'])
print("One-Hot Encoded Data:")
print(encoded_data)
'IT > ML_용어' 카테고리의 다른 글
[ML][용어] Gradient Boosting Machine (GBM) (1) | 2024.10.22 |
---|---|
[ML][용어] ReLU 함수 (1) | 2024.10.15 |
[ML][용어] Sigmoid 함수 (0) | 2024.10.11 |
[ML][용어] GELU 함수 (0) | 2024.10.07 |
[ML][용어] softmax 함수 (1) | 2024.09.30 |
댓글