초봉5센티미터

⚡️One-Hot-Encoding 본문

Machine Learning

⚡️One-Hot-Encoding

삶은돼지고기 2022. 11. 10. 16:46
728x90

기본적으로 사이킷런의 머신러닝 알고리즘들은 문자열 값을 처리하지 못하기 때문에

모든 문자열 값들을 숫자형으로 인코딩을하는 전처리 작업이 필요하다.

그중 대표적인 방법이 One-Hot-Encoding이다.

 

One-Hot-Encoding

데이터를 수 많은 0과 한개의 1의 값으로 데이터를 구별하는 인코딩이다.

이렇게 표현된 벡터를 원-핫 벡터(One-Hot vector)라고 한다.

 

출처: https://www.kaggle.com/code/alexisbcook/categorical-variables/tutorial

 

 "Color"라는  변수는  "Red", "Yellow", "Green"의 세가지 범주가 있는 범주형 변수이다.

"Color"에 원핫인코딩을 하게 된다면 원래 값이 "Red"인 경우 "Red" 열에 1을 넣는다. 원래 값이 "Yellow"인 경우 "Yellow" 열에 1을 넣는 식이다.

 

Ordinal Encoding과 달리 One-Hot-Encoding은 범주의 순서를 가정하지 않는다.

따라서 범주형 데이터에 명확한 순서가 없는 경우 ex) 커피, 물, 음료 이 접근 방식이 잘 동작할 것이다.

 

Oen-Hot-Encoding은 일반적으로 범주형 변수가 많은 수의 값을 취하는 경우 잘 수행되지 않는다. (일반적으로 15개 이상의 다른 값을 취하는 변수에는 사용하지 않는다.

 

장점

- 해당 Feature의 모든 정보를 유지한다.

 

단점

1) 해당 Feature에 많은 고유값이 있는 경우 너무 많은 Feature를 사용한다.

- 다른 표현으로는 벡터의 차원이 늘어난다고 표현한다. 원 핫 벡터는 단어 집합의 크기가 곧 벡터의 차원 수가 된다.

가령, 단어가 1,000개인 코퍼스를 가지고 원 핫 벡터를 만들면, 모든 단어 각각은 모두 1,000개의 차원을 가진 벡터가 된다.

다시 말해 모든 단어 각각은 하나의 값만 1을 가지고, 999개의 값은 0의 값을 가지는 벡터가 되는데 이는 저장 공간 측면에서는 매우 비효율적인 표현 방법이다.

 

2) 단어의 유사도를 표현하지 못한다

바나나, 냉장고, 딸기, TV라는 4개의 단어에 대해서 원-핫 인코딩을 해서 각각, [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]이라는 원-핫 벡터를 부여받았다고 할때.

이때 원-핫 벡터로는 바나나와 딸기 유사하고, 냉장고와 TV가 유사하다는 것을 표현할 수가 없다.

 

사용법

 

1) pandas에서는 get_dummies메서드로 지원

2) sklearn에서는 OneHotEncoder 객체로 지원

'Machine Learning' 카테고리의 다른 글

Support Vector Machine  (0) 2022.11.22
🌳랜덤포레스트 - 매개변수 정리  (0) 2022.11.17
🌲Decision Tree(결정트리)  (0) 2022.10.27
4. 머신러닝(지도학습-분류)  (0) 2022.08.22
3. 머신러닝(지도학습-회귀)  (0) 2022.08.19
Comments