기능 엔지니어링의 수명주기 : 원시 데이터에서 모델 지원 입력까지


편집기에 의한 이미지
데이터 과학 및 기계 학습에서 원시 데이터는 알고리즘에 의한 직접 소비에 거의 적합하지 않습니다. 이 데이터는 모델이 배울 수있는 의미 있고 구조화 된 입력으로 변환하는 것이 필수 단계입니다.이 프로세스는 다음과 같습니다. 기능 엔지니어링. 기능 엔지니어링은 모델 성능에 영향을 줄 수 있으며 때로는 알고리즘 자체의 선택 이상의 영향을 줄 수 있습니다.
이 기사에서는 원시 데이터에서 시작하여 기계 학습 모델을 훈련시킬 준비가 된 입력으로 끝나는 기능 엔지니어링의 완전한 여정을 살펴볼 것입니다.
기능 엔지니어링 소개
기능 엔지니어링은 기계 학습 모델의 예측력을 향상시키기 위해 새로운 변수를 생성하거나 기존 변수를 원시 데이터로 변환하는 기술과 과학입니다. 숨겨진 패턴과 관계를 찾기 위해 도메인 지식, 창의성 및 기술 기술이 포함됩니다.
기능 엔지니어링이 중요한 이유는 무엇입니까?
- 모델 정확도를 향상시킵니다: 주요 패턴을 강조하는 기능을 만들면 모델이 더 나은 예측을 할 수 있습니다.
- 모델 복잡성을 줄입니다: 잘 설계된 기능은 학습 과정을 단순화하여 모델이 더 빠르게 훈련하고 과적을 피하지 않도록 도와줍니다.
- 해석 가능성을 향상시킵니다: 의미있는 기능을 통해 모델이 결정을 내리는 방법을 쉽게 이해할 수 있습니다.
원시 데이터 이해
원시 데이터에는 불일치, 노이즈, 결 측값 및 관련없는 세부 사항이 포함됩니다. 원시 데이터의 특성, 형식 및 품질을 이해하는 것이 기능 엔지니어링의 첫 번째 단계입니다.
이 단계에서 주요 활동은 다음과 같습니다.
- 탐색 적 데이터 분석 (EDA): 분포, 관계 및 이상을 이해하기 위해 시각화 및 요약 통계를 사용하십시오.
- 데이터 감사: 가변 유형 (예 : 숫자, 범주 형, 텍스트)을 식별하고 누락 또는 일관성이없는 값을 확인하고 전반적인 데이터 품질을 평가합니다.
- 도메인 컨텍스트 이해: 각 기능이 실제 용어로 나타내는 것과 해결되는 문제와 관련된 방법을 배우십시오.
데이터 정리 및 전처리
원시 데이터를 이해하면 다음 단계는 청소하고 구성하는 것입니다. 이 프로세스는 오류를 제거하고 머신 러닝 모델이 사용할 수 있도록 데이터를 준비합니다.
주요 단계는 다음과 같습니다.
- 결 측값 처리: 누락 된 데이터로 레코드를 제거할지 여부를 결정하거나 평균/중간 대치 또는 전방/뒤로 채우기와 같은 기술을 사용하여 채우는지 결정하십시오.
- 이상적인 탐지 및 치료: 통계적 방법 (예 : IQR, Z-Score)을 사용하여 극한 값을 식별하고 캡, 변환 또는 제거할지 여부를 결정하십시오.
- 복제 및 오류 수정: 중복 행을 제거하고 오타 또는 잘못된 데이터 항목과 같은 일치하지 않습니다.
기능 제작
기능 제작은 기존 원시 데이터에서 새로운 기능을 생성하는 프로세스입니다. 이러한 새로운 기능은 기계 학습 모델이 데이터를 더 잘 이해하고보다 정확한 예측을 할 수 있도록 도와줍니다.
일반적인 기능 제작 기술에는 다음이 포함됩니다.
- 기능 결합: 기존 변수에 산술 작업 (예 : 합, 차이, 비율, 제품)을 적용하여 새로운 기능을 만듭니다.
- 날짜/시간 기능 추출: 타임 스탬프 필드에서 시간적 패턴을 캡처하기 위해 요일, 월, 분기 또는 시간과 같은 기능을 도출합니다.
- 텍스트 기능 추출: Word Counts, TF-IDF 또는 Word Embeddings와 같은 기술을 사용하여 텍스트 데이터를 숫자 기능으로 변환합니다.
- 집계 및 그룹 통계: 정보를 요약하기 위해 범주별로 그룹화 된 수단, 카운트 또는 합계를 계산합니다.
기능 변환
기능 변환은 원시 데이터 기능을 기계 학습 알고리즘에 더 적합한 형식 또는 표현으로 변환하는 프로세스를 나타냅니다. 목표는 모델의 성능, 정확성 또는 해석 가능성을 향상시키는 것입니다.
일반적인 변환 기술에는 다음이 포함됩니다.
- 스케일링: Min-Max 스케일링 또는 표준화 (Z-Score)와 같은 기술을 사용하여 기능 값을 정상화하여 모든 기능이 비슷한 규모에 도달하십시오.
- 범주 형 변수 인코딩: 1 홈 인코딩, 레이블 인코딩 또는 서수 인코딩과 같은 방법을 사용하여 범주를 숫자 값으로 변환합니다.
- 로그 및 전력 변환: 로그, 제곱근 또는 박스 콕스 변환을 적용하여 왜곡을 줄이고 숫자 특징의 분산을 안정화시킵니다.
- 다항식 특징: 변수 간의 비선형 관계를 캡처하기 위해 상호 작용 또는 고차 항을 생성합니다.
- 비닝: 연속 변수를 이산 간격 또는 빈으로 변환하여 패턴을 단순화하고 특이 치를 처리합니다.
기능 선택
모든 엔지니어링 기능이 모델 성능을 향상시키는 것은 아닙니다. 기능 선택은 가장 관련성이 높은 기능을 선택하여 치수를 줄이고 해석 가능성을 향상 시키며 과적을 피하는 것을 목표로합니다.
접근 방식은 다음과 같습니다.
- 필터 방법: 통계 측정 (예 : 상관 관계, 카이-제곱 테스트, 상호 정보)을 사용하여 모든 모델과 독립적으로 기능을 순위하고 선택하십시오.
- 래퍼 방법: 다양한 조합에서 모델을 교육하여 기능 하위 집합을 평가하고 최상의 성능 (예 : 재귀 기능 제거)을 산출하는 것을 선택합니다.
- 내장 된 방법: Lasso (L1 정규화) 또는 의사 결정 트리 기능 중요성과 같은 기술을 사용하여 모델 교육 중 기능 선택을 수행하십시오.
기능 엔지니어링 자동화 및 도구
수동으로 제작 기능은 시간이 많이 걸릴 수 있습니다. 최신 도구 및 라이브러리는 기능 엔지니어링 라이프 사이클의 일부를 자동화하는 데 도움이됩니다.
- FeatureTools: “딥 피처 합성”이라는 기술을 사용하여 관계형 데이터 세트에서 기능을 자동으로 생성합니다.
- 자동 프레임 워크: Google Automl 및 H2o.ai와 같은 도구에는 기계 학습 파이프 라인의 일부로 자동 기능 엔지니어링이 포함됩니다.
- 데이터 준비 도구: Pandas, Scikit-Learn 파이프 라인 및 Spark Mllib과 같은 라이브러리는 데이터 정리 및 변환 작업을 단순화합니다.
기능 엔지니어링의 모범 사례
확립 된 모범 사례에 따라 기능이 유익하고 신뢰할 수 있으며 생산 환경에 적합한 기능을 수행 할 수 있습니다.
- 도메인 지식을 활용하십시오: 전문가의 통찰력을 통합하여 실제 현상과 비즈니스 우선 순위를 반영하는 기능을 만듭니다.
- 모든 것을 문서화하십시오: 각 기능을 작성, 변환 및 검증하는 방법에 대한 명확하고 버전으로 된 문서를 유지하십시오.
- 자동화를 사용하십시오: 기능 상점, 파이프 라인 및 자동화 된 기능 선택과 같은 도구를 사용하여 일관성을 유지하고 수동 오류를 줄입니다.
- 일관된 처리를 보장하십시오: 모델 입력의 불일치를 피하기 위해 훈련 및 배치 중에 동일한 전처리 기술을 적용하십시오.
최종 생각
기능 엔지니어링은 기계 학습 모델을 개발하는 데 가장 중요한 단계 중 하나입니다. 지저분한 원시 데이터를 모델이 이해하고 배울 수있는 깨끗하고 유용한 입력으로 바꾸는 데 도움이됩니다. 데이터를 정리하고, 새로운 기능을 만들고, 가장 관련성이 높은 기능을 선택하고, 적절한 도구를 사용하여 모델의 성능을 향상시키고보다 정확한 결과를 얻을 수 있습니다.
Jayita Gulati 기계 학습 애호가이자 기계 학습 모델 구축에 대한 열정으로 인해 기계 학습 애호가이자 기술 작가입니다. 그녀는 리버풀 대학교에서 컴퓨터 과학 석사 학위를 취득했습니다.
Post Comment