주요 컨텐츠로 이동

머신 러닝을 위한 피처 엔지니어링(Feature engineering)

데이터 처리라고도 불리는 피처 엔지니어링은 가공되지 않은 데이터를 머신 러닝 모델 개발 사용할 수 있는 기능으로 전환하는 프로세스입니다. 이 항목에서는 피처 엔지니어링의 주요 개념과 피처 엔지니어링이 ML 수명 주기 관리에서 수행하는 역할을 설명합니다.

머신 러닝에서 특성은 모델 트레이닝에 사용되는 입력 데이터입니다. 특성은 모델이 학습할 어떤 엔터티의 속성입니다. 가공되지 않은 데이터는 처리 작업을 수행한 후 ML 모델의 입력 데이터로 사용해야 합니다. 올바른 피처 엔지니어링은 모델 개발 프로세스의 효율성을 향상하고 더 단순하고 유연하며 정확한 모델을 만들 수 있습니다.

피처 엔지니어링이란 무엇입니까?

피처 엔지니어링은 데이터로 모델을 트레이닝시키는 데 사용되는 머신 러닝 알고리즘의 성능을 향상하기 위해 데이터를 변환하고 개선하는 프로세스입니다.

피처 엔지니어링에는 데이터 스케일링 또는 정규화, 비수치적 데이터(예: 텍스트 또는 이미지) 인코딩, 시간 또는 엔터티별 데이터 집계, 다른 소스의 데이터 조인 또는 다른 모델에서의 지식 이전까지도 포함됩니다. 이러한 변환의 목표는 다른 데이터 세트로부터 학습하는 머신 러닝 알고리즘의 능력을 향상하고 더 정확한 예측을 수행하는 것입니다.

특성 저장소 운영

피처 엔지니어링이 왜 중요한가요?

피처 엔지니어링이 중요한 이유는 몇 가지가 있습니다. 첫째, 앞서 언급했듯이, 머신 러닝 모델은 때때로 가공되지 않은 데이터에서는 작동하지 않습니다. 따라서 데이터를 모델이 이해할 수 있는 수치 형식으로 변환해야 합니다. 이를 위해 텍스트 또는 이미지를 수치 형식으로 변환하거나 고객의 평균 트랜잭션 금액과 같은 집합적 특성을 만들어야 할 수 있습니다.

때로는 머신 러닝 문제와 관련된 기능이 여러 데이터 소스에 존재할 수 있습니다. 따라서 효과적인 피처 엔지니어링을 수행하려면 데이터 소스를 함께 조인하여 사용 가능한 하나의 데이터 세트를 만들어야 합니다. 이를 통해 사용 가능한 모든 데이터로 모델을 트레이닝하여 모델의 정확성과 성능을 향상할 수 있습니다.

또 다른 흔한 시나리오는 다른 모델의 산출물과 학습이 새로운 문제를 위한 특성의 형태로 재사용되는 경우입니다. 이때 전이 학습(transfer learning)이라는 프로세스가 사용됩니다. 이럴 경우 이전 모델에서 습득한 지식을 활용하여 새 모델의 성능을 향상할 수 있습니다. 전이 학습은 데이터 세트가 크고 복잡하여 모델을 처음부터 새로 트레이닝시키는 것이 현실적이지 않은 경우 특히 유용합니다.

효과적인 피처 엔지니어링은 또한 유추 시간에 신뢰할 수 있는 기능이 가능하게 합니다. 유추 시간은 새 데이터에 대한 예측을 수행하기 위해 모델을 사용하는 때를 말합니다. 온라인/오프라인 왜곡("online/offline skew")를 피하려면 유추 시간에 사용되는 기능은 트레이닝 시간에 사용되는 기능과 동일해야 하므로 신뢰할 수 있는 기능을 제공하는 것은 중요합니다. 온라인/오프라인 왜곡은 예측 시간에 사용된 기능이 트레이닝에 사용된 기능과 다르게 계산되는 경우를 말합니다.

피처 엔지니어링은 다른 데이터 변환과 어떻게 다릅니까?

피처 엔지니어링의 목표는 머신 러닝 모델 구축을 위해 트레이닝시킬 수 있는 데이터 세트를 만드는 것입니다. 데이터 변환에 사용되는 툴과 기법 중 다수가 피처 엔지니어링에 사용됩니다.

피처 엔지니어링에서 강조되는 것은 모델 개발이므로 일부 특성 변환에서는 존재하지 않는 몇 가지 요구 사항이 있습니다. 예를 들면, 여러 모델 또는 조직의 여러 팀에서 특성을 재사용해야 하는 경우가 있습니다. 이럴 경우 특성 발견을 위한 강력한 방법이 필요합니다.

또한, 특성이 사용된 후에는 즉시 특성이 어디서 어떻게 컴퓨팅되는지 추적할 수 있는 방법이 필요합니다. 이를 특성 계보라고 합니다. 재생산 가능한 특성 계산은 머신 러닝에 특히 중요합니다. 특성은 모델 트레이닝을 위해 컴퓨팅될 뿐만 아니라 모델이 유추에 사용될 때와 똑같은 방식으로 재컴퓨팅되어야 하기 때문입니다.

효과적인 피처 엔지니어링의 장점은 무엇입니까?

효과적인 피처 엔지니어링 파이프라인이 있으면 모델링 파이프라인이 더 강력해지고, 궁극적으로 신뢰성과 성능이 더 뛰어난 모델을 만들 수 있습니다. 트레이닝과 유추에 모두 사용되는 특성을 향상하면 모델 품질에 엄청난 영향을 줄 수 있습니다. 따라서 특성이 더 나으면 모델도 더 나아집니다.

다른 관점에서 보면, 효과적인 피처 엔지니어링은 재사용을 장려하여 실무자의 시간을 절약할 뿐만 아니라 모델을 품질도 향상할 수 있습니다. 이러한 특성 재사용은 두 가지 이유 때문에 중요합니다. 특성 재사용은 시간을 절약해 줍니다. 그리고 견고하게 정의된 특성이 있으면 모델이 트레이닝과 유추 사이에 다른 특성 데이터를 사용하지 않도록 방지하는 데 도움이 됩니다. 일반적으로 트레이닝과 유추 사이에 다른 특성 데이터를 사용하면 "온라인/오프라인" 왜곡이 발생합니다.

피처 엔지니어링에 필요한 툴은 무엇이 있습니까?

일반적으로 데이터 엔지이어링(data engineering)에 사용되는 툴을 피처 엔지니어링에도 사용할 수 있습니다. 이 두 가지의 변환 대부분이 공통이기 떄문입니다. 그래서 여기에는 보통 데이터 스토리지 및 관리 시스템, 표준 개방형 변환 언어(SQL, Python, Spark 등)에 대한 액세스 그리고 변환을 실행하기 위한 일정 유형의 컴퓨팅에 대한 액세스가 수반됩니다.

그러나 특정 Python 라이브러리의 형태로 피처 엔지니어링을 위해 활용할 수 있는 추가 툴이 몇 가지 있습니다. 이러한 라이브러리는 테스트 또는 이미지 임베딩 또는 범주 변수 원-핫 인코딩과 같은 머신 러닝(특정 데이터 변환)에 도움을 줄 수 있습니다. 또한, 모델이 사용하는 특성을 추적하는 데 도움이 되는 몇몇 오픈 소스 프로젝트도 있습니다.

모델은 변경된 데이터 세트로 훈련되는 경우가 있기 때문에 데이터 버전 관리는 피처 엔지니어링을 위한 중요한 툴입니다. 적절한 버전 관리를 통해 데이터가 시간에 따라 자연스럽게 진화하는 동안 주어진 모델을 재생산할 수 있습니다.

특성 저장소란 무엇입니까?

특성 저장소(feature store)는 피처 엔지니어링의 문제를 해결하도록 설계된 툴입니다. 특성 저장소는 조직 전반에 사용되는 특성을 저장하는 중앙집중식 저장소입니다. 데이터 사이언티스트는 특성 저장소를 사용하여 특성을 발견 및 공유하고 특성 계보를 추적할 수 있고 특성 저장소를 통해 트레이닝 및 유추 시간에 동일한 특성 값이 사용되도록 할 수 있습니다. 재생산 가능한 특성 계산은 머신 러닝에 특히 중요합니다. 특성은 모델 트레이닝을 위해 컴퓨팅될 뿐만 아니라 모델이 유추에 사용될 때와 똑같은 방식으로 재컴퓨팅되어야 하기 때문입니다.

Databricks Feature Store를 사용해야 하는 이유는 무엇입니까?

Databricks Feature Store는 Databricks의 다른 구성 요소와 완전히 통합됩니다. Databricks Notebook을 사용하여 특성 생성을 위한 코드를 개발하고 이러한 특성을 기반으로 모델을 구축할 수 있습니다. Databricks로 모델을 서빙하면 모델은 유추를 위해 자동으로 특성 저장소에서 특성 값을 검색합니다. 또한 Databricks Feature Store는 이 글에 설명된 특성 저장소의 장점을 제공합니다.

  • 검색 가능성. Databricks Workspace에서 액세스 가능한 Feature Store UI로 기존 특성을 둘러보고 검색할 수 있습니다.
  • 계보. Databricks Feature Store로 특성 테이블을 만들 경우 특성 테이블을 만드는 데 사용된 데이터 소스가 저장되며, 이에 액세스할 수 있게 됩니다. 특성 테이블의 각 특성에 대해 해당 특성을 사용하는 모델, 노트북, 작업 그리고 엔드포인트에 액세스할 수도 있습니다.

또한 Databricks Feature Store는 다음과 같은 장점을 제공합니다.

  • 모델 평가 및 서빙과 통합. Databricks Feature Store의 특성을 사용하여 모델을 트레이닝시키는 경우, 모델은 특성 메타데이터로 패키지화됩니다. 배치 평가 또는 온라인 유추를 위해 모델을 사용하면, 모델은 자동으로 Databricks Feature Store에서 특성을 가져옵니다. 호출자는 이들에 대해 알거나 검색할 로직을 포함하거나 새 데이터를 평가하기 위해 특성을 조인할 필요가 없습니다. 따라서 모델 배포와 업데이터가 훨씬 쉬워집니다.
  • 시점 검색. Databricks Feature Store는 시점 정확성을 요구하는 시간 계열 및 이벤트 기반 사용 사례를 지원합니다.

추가 자료

용어집으로 돌아가기