본문 바로가기
AI/관련 자료

[딥러닝] 원-핫 인코딩이란? / One-hot

by 뒹굴거리는프로도 2024. 11. 14.
반응형

 


[출처. 위키피디아]

 

원핫 인코딩(One-Hot Encoding)은 딥러닝에서 범주형 데이터(categorical data)를 수치형 데이터로 변환할 때 자주 사용되는 방법입니다. 이 방법은 각 범주형 값을 고유한 벡터로 표현해 모델이 이해할 수 있도록 하는데, 그 과정에서 특정 범주에 해당하는 위치만 1이고 나머지는 0인 벡터를 생성합니다.

 


 

예시를 통해 설명


예를 들어, '과일'이라는 범주형 변수에 '사과', '바나나', '체리'라는 세 가지 범주가 있다고 가정해봅시다. 이 범주를 원핫 인코딩으로 변환하면 다음과 같은 벡터로 나타낼 수 있습니다:

'사과' → [1, 0, 0]
'바나나' → [0, 1, 0]
'체리' → [0, 0, 1]

 

이렇게 각 범주가 벡터의 한 위치에 매핑되어 고유한 인덱스를 가집니다. 이 과정에서 특정 범주에 해당하는 인덱스에만 1이 있고, 나머지는 0이 됩니다.

 


 

왜 원핫 인코딩을 사용할까?


딥러닝 모델은 주로 수치형 데이터만을 처리할 수 있기 때문에 범주형 데이터를 그대로 사용할 수 없습니다.

예를 들어, '사과', '바나나', '체리'라는 범주를 0, 1, 2로 라벨링해서 모델에 넣는다면, 모델이 2가 1보다 크고, 1이 0보다 크다는 식으로 수치적인 관계를 학습하게 될 위험이 있습니다. 실제로는 과일 간에 수치적인 순서나 크기 비교가 의미가 없기 때문에, 이를 방지하기 위해 원핫 인코딩을 사용하여 각 범주가 서로 독립적인 값으로 인식되도록 만드는 것입니다.

 


 

원핫 인코딩의 특징과 단점


*고유한 인코딩
각 범주마다 고유한 벡터를 가지며, 두 벡터 간의 유사성은 없습니다.
*차원의 증가
범주의 수가 많아질수록 인코딩된 벡터의 차원도 커집니다. 예를 들어, 100개의 범주가 있다면 원핫 인코딩 후 벡터 길이도 100이 되므로 차원이 급격히 증가하는 문제가 생길 수 있습니다.
*희소 벡터(Sparse Vector)
벡터의 대부분의 값이 0이기 때문에 공간을 많이 차지하게 되고 계산 비용도 늘어날 수 있습니다.

 

 


 

원핫 인코딩을 실제로 어떻게 구현할까?


파이썬의 pandas나 sklearn 라이브러리를 사용하면 원핫 인코딩을 쉽게 적용할 수 있습니다. 예를 들어 pandas에서 get_dummies() 메서드를 사용하여 원핫 인코딩할 수 있습니다.

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({'과일': ['사과', '바나나', '체리', '사과']})

# 원핫 인코딩 수행
one_hot = pd.get_dummies(df['과일'])
print(one_hot)

 

이 코드는 각 범주가 1과 0으로 변환된 결과를 출력합니다.

 


 

딥러닝에서의 원핫 인코딩


딥러닝 모델에서 입력값으로 원핫 인코딩된 벡터를 사용하면 각 범주가 신경망에서 독립적인 입력값으로 처리됩니다.

이 벡터는 주로 모델의 임베딩 레이어나 Dense 레이어에 전달되어 학습에 활용됩니다. 하지만 범주가 너무 많을 경우, 모델이 과도한 차원의 입력을 받게 되어 과적합(overfitting) 문제가 생길 수 있기 때문에 경우에 따라서는 임베딩(Embedding) 기법을 사용하기도 합니다.

원핫 인코딩은 특히 NLP나 이미지 처리 분야에서 범주형 데이터로 작업할 때 자주 사용되며, 모델이 각 범주를 개별적으로 처리할 수 있게 하는 중요한 역할을 합니다.

 

 


https://en.wikipedia.org/wiki/One-hot

 

One-hot - Wikipedia

From Wikipedia, the free encyclopedia Bit-vector representation where only one bit can be set at a time Decimal Binary Unary One-hot 0 000 00000000 00000001 1 001 00000001 00000010 2 010 00000011 00000100 3 011 00000111 00001000 4 100 00001111 00010000 5 1

en.wikipedia.org

반응형