EH_dream

One hot encoding_학습_25.04.15 본문

Python

One hot encoding_학습_25.04.15

Song EH. 2025. 4. 15. 23:11

요즘은 Python으로 원하는 데이터 프레임을 얻기위해 결측치를 제거하고 이상치를 파악해서 처리하고 스케일링 등을 하는 공부를 하고있다.

 

수업을 진행하면서 캐글 필사도 열심히 하는 중인데 생각보다 반복되는 작업들 다양한 방식들과 시각화 하는 방법들도 점점 이해가되고 더 흥미롭게 느껴지는 것 같다.

 

오늘은 One hot encoding에 대해서 학습을 했는데 잘 이해되지 않은 부분을 다시한번 정리해봐야겠다.

 

원-핫 인코딩이란 범주형 데이터를 머신러닝 알고리즘이 이해할 수 있도록 수치형으로 변환하는 방법이다.

쉽게 말하면 문자열로 된 데이터들은 컴퓨터가 이해하지 못하므로 숫자로 변환하는 것이다.

One이라고 표현한 이유는 해당하는 값만 1로 표시해서 인것같다.

 

그리고 문자열을 숫자로 단순히 사과는 1이고 바나나은 2이다라고 지정을 한다면 모델이 숫자의 크기를 비교하려고 하기 때문에 부정확한 예측을 하기 때문에 모든 값을 동등하게 취급하는 원 핫 인코딩을 사용하는 것이다.

 

하지만 원-핫 인코딩은 데이터 차원이 많아질 수가 있으며 범주가 많을수록 벡터가 커지고 공간이 비효율적이기 떄문에 이런 경우에는 임베딩 (embedding) 기법을 사용해서 차원을 줄이기도 한다고 한다.

 

사용법은 pd.get_dummies()를 사용해서 One hot encoding을 사용할 수 있다.

 

원-핫 인코딩을 하다보니 임베딩이 궁금해졌는데 이 기법은 대부분 원-핫 인코딩이 가진 한계를 넘어서기 위한 대표적인 방법이라고 한다.

 

출처 : ChatGPT

 

Embedding은 고차원 공간의 데이터를 저차원 밀집 벡터로 변환하는 기법이다. 쉽게 표현하면 의미를 잘 유지하면서 효율적인 숫자 벡터로 바꿔주는 것이다. 원-핫 인코딩의 경우 범주 수가 많아지면 차원이 매우 커지게 되는데 임베딩을 사용해주면 차원이 줄어들어 계산 효율이 증가하고 비슷한 의미를 가진 단어들이 비슷한 벡터 값을 가지게된다.

 

하지만 임베딩은 어떻게 사용하는것인가 검색하다보니 임베딩은 보통 딥러닝 모델이 학습 과정에서 자동으로 생성한다는것을 알았다... 아직은 어려운 범위로 임베딩에 대해서 더 공부해 봐야할것같다. 

 

오늘도 학습하면서 궁금했던 내용에 대해 정리해 보았는데 하루하루 일기처럼 앞으로 어려운게 아니더라도 data에 관련된 지식을 하나씩 올려봐야겠다.