우리는 앞의 포스트를 통해 수집된 원시 데이터(Raw Data)를 적정한 특성 벡터(Feature Vector)로 맵핑(Mapping)하는 방법을 알아보았습니다.

이번 포스트에서는 이렇게 맵핑한 특성 벡터에서 어떤 값이 좋은 특성(Feature)가 되는지 알아보겠습니다.


좋은 특성의 조건

1. 거의 사용되지 않는 불연속 특성 값 배제

좋은 특성은 데이터 세트에서 최소 5회 이상 나타나야 합니다. 동일한 값을 갖는 예가 많으면 모델에서 다양한 설정으로 특성을 확인하여 라벨과 특성의 관계를 학습하기 용이합니다.


반대로 특성의 값이 한 번만 나타나거나 매우 드물게 나타난다면 모델에서 해당 특성을 기반으로 좋은 예측을 할 수 없습니다.


2. 최대한 분병하고 명확한 의미 부여

머신러닝 프로젝트에 참가하는 모든 구성원에서 각 특성은 바로 알 수 있도록 분명하고 명확한 의미를 가져야 합니다. 예를 들어 아래 처럼 주택의 연령을 연 단위로 나타내는 것인데 이는 바로 알아볼 수 있는 좋은 특성입니다.

반대로 아래와 같이 특정 사람 이외의 알아보기 힘든 특성 값은 좋은 특성이 아닙니다.


3. '특수' 값을 실제 데이터와 혼용하지 말 것

좋은 부동 소수점 특성(Floating-Point Features)은 특정 범위 외 불연속성 또는 '특수(Magic)' 값을 포함하지 않습니다. 예를 들어 어떤 특성이 0~1 사이의 부동 소수점을 특성 값으로 갖는다고 가정하겠습니다.


이때 이 특성 값이 0~1 사이가 아닌 -1과 같은 값을 갖는다면 이는 특수 값으로서 모델 학습에서 배제해야하는 값 입니다.


4. 업스트림(Upstream) 불안정성 고려

특성의 정의는 시간이 지나도 변하지 않아야 합니다. 하지만 다른 모델에서 추론한 값을 수집하는 경우 문제가 발생할 수 있습니다.


예를 들어, 포항을 나타내는 도시 번호를 255라는 값으로 맵핑하였다고 하겠습니다. 이 값은 다른 모델에서 실행할 때 표현이 변결 될 수 있습니다. 이러한 업스트림 불안정성을 고려하여 좋은 특성을 만들어야 합니다.

+ Recent posts