Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

머신러닝 내공쌓기

[머신러닝] 레이블 인코딩, 원핫 인코딩 본문

머신러닝

[머신러닝] 레이블 인코딩, 원핫 인코딩

mlprodev 2021. 6. 18. 22:53

from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder

 

데이터 전처리는 머신러닝 모델이 학습할 수 있게끔, 기존의 raw data를 가공하는 작업을 말합니다. 물론 머신러닝이 뛰어난 성능을 내는 데는 모델의 하이퍼파라미터를 조정하거나 개량된 모델을 쓰는 것 역시 중요합니다. 그러나 데이터 전처리 과정 역시 머신러닝의 성능을 높이는 데 상당히 중요한 역할을 합니다. 그렇다면 데이터 전처리에는 어떤 유형이 있는지, 판다스의 데이터프레임을 기준으로 소개드리겠습니다.

[1] 레이블 인코딩

기계는 사람들이 사용하는 문자를 있는 그대로 이해하지 못하기 때문에, 문자열을 숫자화하는 인코딩의 과정을 거쳐야 합니다. 그런데 데이터의 타깃값에 해당하는 레이블은 서로 다른 클래스들로 구성되어 있으므로, 레이블 인코딩시 서로 겹치지 않는 숫자들로 각 레이블들을 인코딩하게 됩니다.

[2] 원핫 인코딩

레이블 인코딩이 데이터프레임의 속성값들을 프레임의 추가 없이 같은 프레임 내에서 문자를 숫자로 바꿔주기만 하는 작업이라면, 원핫 인코딩은 데이터 프레임의 같은 칼럼 내의 속성값들을 새로운 칼럼화(새로운 피처 생성)하는 작업입니다. 특정 값에 해당하면 새 피처의 속성값은 1을, 해당하지 않으면 0을 부여하게 됩니다. 예컨대, 데이터프레임의 특정 피처가 사내 직책이고, 그 피처값으로 부장, 과장, 대리, 신입이 있었다고 가정해 봅시다. 그럴 경우, 부장, 과장, 대리, 신입이라는 새로운 칼럼(피처)가 데이터프레임에 생성되고, 특정 샘플(레코드)이 과장에 해당한다면, 과장 칼럼에서 1을, 나머지 칼럼에서 0을 부여받는 것입니다. 이렇게 하는 이유는, 레이블 인코딩과 마찬가지로, 동일한 피처 내의 문자열 속성을 숫자로 변경함으로써 기계가 읽을 수 있도록 하기 위함입니다. 

레이블 인코딩과 다른 점도 있습니다. 레이블 인코딩은 숫자를 1, 2, 3, 4처럼 1 이상의 숫자로 인코딩하는 반면, 원핫 인코딩은 1 또는 0의 이진법의 속성값을 부여합니다. 사실 1, 2, 3, 4처럼 숫자의 대소관계가 성립하는 경우, 본래 숫자화된 레이블값 간에는 서로 대소관계가 성립하지 않지만(서로 다른 클래스에 속하므로), 대소관계로 인한 잘못된 상관관계를 도출할 우려가 있습니다. 따라서 일단 레이블 인코딩 처리를 한 경우에도, 다시 원핫 인코딩을 해주는 것이 좋습니다.