AI와 데이터 사이언스의 이론과 실전
데이터 분석 - 판다스(Pandas)로 원핫인코딩(One-Hot Encoding) 본문
원핫인코딩(One-Hot Encoding)은 머신 러닝 모델이나 알고리즘에 범주형 데이터를 적절하게 입력할 수 있도록 변환하는 필수적인 방법 중 하나입니다. 특히 자연어 처리 및 기계학습 분야에서 널리 사용되며, 이에는 다양한 이유들이 존재합니다.
1. 범주형 데이터의 표현
- 문제 설명: 머신 러닝 모델은 주로 숫자형 데이터를 다루기에 적합하며, 이는 실제 데이터가 주로 범주형인 경우에는 문제가 됩니다 (예: 색상, 성별, 국적 등).
- 원핫인코딩의 역할: 범주형 데이터를 0 또는 1로 이루어진 이진 벡터로 변환하여 모델이 이를 이해하고 활용할 수 있도록 합니다.
2. 이진 분류 문제
- 문제 설명: 특히 이진 분류 문제에서는 모델이 '사과' 또는 '오렌지'와 같은 두 개의 범주를 구분하는 데 효과적입니다.
- 원핫인코딩의 역할: 이진 분류 문제에서는 하나의 범주를 1로 표시하고 다른 범주는 0으로 표시하여 모델이 명확하게 구분할 수 있도록 돕습니다.
3. 알고리즘 요구사항
- 문제 설명: 일부 머신 러닝 알고리즘은 범주형 데이터를 수용하기 위해 데이터가 원핫인코딩된 형태를 필요로 합니다.
- 원핫인코딩의 역할: 모델이 범주형 데이터를 올바르게 처리하고 학습할 수 있도록 데이터를 변환합니다.
4. 모델 성능 향상
- 문제 설명: 범주형 데이터를 그대로 사용할 경우 모델이 잘못된 패턴을 학습할 수 있습니다.
- 원핫인코딩의 역할: 각 범주를 독립적인 열로 만들어 정보를 보존하면서 모델의 성능을 향상시킵니다.
5. 기타 장점
- 차원의 저주 해소: 범주가 많은 경우, 원핫인코딩을 통해 차원을 증가시켜 정보를 유지할 수 있습니다. 다만, 차원의 저주에 주의해야 합니다.
- 군집 간 거리 측정: 범주 간의 거리를 측정할 때 유클리드 거리와 같은 메트릭을 사용할 수 있습니다.
# df['혈액형']을 머신러닝/딥러닝 알고리즘에 넣어 데이터를 예측하려고 하면 컴퓨터는 값들간의 관계를 스스로 형성하게 됨
# 때문에 더미변수화(원 핫 인코딩)가 필요
blood_map = {
'A' : 0,
'B' : 1,
'AB' : 2,
'O' : 3
}
df['혈액형_code'] = df['혈액형'].map(blood_map) # 라벨인코딩
df.head(3)
# pd.get_dummies() : 원 핫 인코딩을 적용
pd.get_dummies(df['혈액형_code'])
pd.get_dummies(df, columns = ['혈액형']) # 사실 걍 해도됨
df = pd.get_dummies(df, columns = ['혈액형_code'])
원핫인코딩은 머신러신, 딥러닝을 하면서 매우 필수적인 전처리방식입니다. 때문에 앞으로 포스팅하는 코드에 자주 등장할 예정이니 주의깊게 보시길 바랍니다.
'인공지능' 카테고리의 다른 글
AI와 머신러닝의 핵심 개념 정리 (0) | 2023.11.16 |
---|---|
데이터 분석 - Matplotlib으로 데이터 시각화 (0) | 2023.11.15 |
데이터 분석 - 판다스(Pandas)로 데이터프레임 합치기, 산술연산, select_detypes, 등수 매기기, 날짜타입, map, apply (0) | 2023.11.13 |
데이터분석 - 판다스(Pandas)로 결측값(NaN) 처리, 행과 열 추가 및 삭제하기 (0) | 2023.11.12 |
데이터분석 - 판다스(Pandas)로 데이터 다루기 - 열출력, 범위, loc, iloc, isin (0) | 2023.11.11 |