표현: 좋은 특성의 특성

원시 데이터를 적절한 특성 벡터로 매핑하는 방법을 살펴보았지만 이는 일부에 불과합니다. 이제 이러한 특성 벡터 내에서 어떤 종류의 값이 실제로 좋은 특성을 만드는지 살펴봐야 합니다.

거의 사용되지 않는 불연속 특성값 피하기

좋은 특성 값은 데이터 세트에서 약 5회 이상 표시되어야 합니다. 이렇게 하면 모델에서 이 특성값이 라벨과 어떻게 관련되는지 학습할 수 있습니다. 즉, 불연속 값이 동일한 예가 많으면 모델이 다양한 설정에서 특성을 확인하고 그 다음에 해당 특성이 라벨에 적합한 예측자인지 판단할 수 있습니다. 예를 들어 house_type 특성에는 값이 victorian인 예가 많이 포함될 수 있습니다.

house_type: victorian

반대로 특성 값이 한 번만 표시되거나 매우 드물게 나타나는 경우 모델은 해당 특성을 기반으로 예측할 수 없습니다. 예를 들어 unique_house_id는 각 값이 한 번만 사용되어 모델이 학습할 수 없으므로 잘못된 특성입니다.

unique_house_id: 8SK982ZZ1242Z

명확하고 명확한 의미 선호

각 기능은 프로젝트에 참여하는 모든 사람에게 명확하고 명확한 의미를 가져야 합니다. 예를 들어 다음과 같은 좋은 특성은 명확한 이름이 있고 값은 이름과 관련하여 의미가 있습니다.

 house_age_years: 27 

반대로 다음 특성 값의 의미는 특성을 만든 엔지니어를 제외하고는 누구나 해독할 수 없습니다.

house_age: 851472000

경우에 따라 잘못된 엔지니어링 선택이 아니라 노이즈가 많은 데이터로 인해 불분명한 값이 발생하는 경우가 있습니다. 예를 들어 다음의 user_age_years는 적절한 값을 확인하지 않은 소스에서 비롯되었습니다.

user_age_years: 277

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

좋은 부동 소수점 특성에는 특이한 범위를 벗어난 불연속 값이나 '매직' 값이 포함되지 않습니다. 예를 들어 어떤 특성이 0과 1 사이의 부동 소수점 값을 가지고 있다고 가정해 보겠습니다. 따라서 다음과 같은 값은 괜찮습니다.

quality_rating: 0.82
quality_rating: 0.37

그러나 사용자가 quality_rating를 입력하지 않았다면 데이터 세트가 다음과 같은 특수 값으로 항목의 부재를 나타냈을 수 있습니다.

quality_rating: -1

특별한 값을 명시적으로 표시하려면 quality_rating의 제공 여부를 나타내는 부울 특성을 만듭니다. 이 부울 특성에 is_quality_rating_defined와 같은 이름을 지정합니다.

원래 특성에서 특수 값을 다음과 같이 바꿉니다.

  • 유한한 값 집합을 갖는 변수 (이산 변수)의 경우 새 값을 집합에 추가하고 이 값을 사용하여 특성값이 누락되었음을 나타냅니다.
  • 연속 변수의 경우 특성 데이터의 평균값을 사용하여 누락된 값이 모델에 영향을 미치지 않는지 확인합니다.

업스트림 불안정성 고려

특성의 정의는 시간이 지나도 변하지 않습니다. 예를 들어 도시 이름은 일반적으로 변경되지 않으므로 다음 값은 유용합니다. 'br/sao_paulo'와 같은 문자열을 원-핫 벡터로 변환해야 합니다.

city_id: "br/sao_paulo"

그러나 다른 모델에서 추론한 값을 수집하면 추가 비용이 발생합니다. 값 '219'가 현재 상파울루를 나타낼 수 있지만 이 표현은 다른 모델의 향후 실행에서 쉽게 변경될 수 있습니다.

inferred_city_cluster: "219"