특징 공학
1. 개요
특징 공학은 기계 학습 및 통계적 모델링에서 데이터의 특징을 선택, 생성, 변환 및 추출하는 과정을 의미한다. 이 과정은 특징 브레인스토밍, 결정, 생성, 테스트 및 개선을 포함하며, 데이터 클러스터링 및 예측 모델링에 활용된다. 특징 공학은 자동화 기술을 통해 효율성을 높이고 있으며, 피처 스토어를 통해 특징을 저장하고 관리한다. 딥 러닝의 대안적 접근 방식도 존재하지만, 데이터 전처리 및 모델 설정의 어려움이 있다.
| 정의 | 기계 학습 모델의 성능을 향상시키기 위해 원시 데이터에서 특징을 추출하고 변환하는 과정 |
|---|---|
| 목표 | 모델이 학습하기에 적합한 형태로 데이터를 변환하여 예측 정확도 및 성능 향상 |
| 필요성 | 데이터의 품질과 특징 표현 방식이 모델 성능에 큰 영향 원시 데이터는 모델이 직접 사용하기에 부적합한 경우가 많음 |
| 중요성 | 모델 성능 개선 데이터 이해도 향상 일반화 능력 향상 |
| 1. 특징 추출 | 원시 데이터에서 유용한 특징을 식별하고 추출하는 과정 예: 텍스트 데이터에서 단어 빈도수, 이미지 데이터에서 색상 히스토그램 추출 |
|---|---|
| 2. 특징 선택 | 모델 학습에 가장 관련성이 높은 특징을 선택하는 과정 불필요하거나 중복된 특징 제거 예: 분산 분석, 상관 분석 등을 통해 특징 선택 |
| 3. 특징 변환 | 추출된 특징을 모델이 학습하기에 적합한 형태로 변환하는 과정 예: 정규화, 표준화, PCA 등을 통해 특징 변환 |
| 1. 결측치 처리 | 결측치를 적절한 값으로 대체하거나 제거 예: 평균값 대체, 최빈값 대체, 결측치 제거 |
|---|---|
| 2. 이상치 처리 | 이상치를 탐지하고 제거하거나 변환 예: IQR 기반 이상치 탐지, Z-score 기반 이상치 탐지 |
| 3. 스케일링 | 특징 값의 범위를 조정하여 모델 학습 속도 및 성능 향상 예: Min-Max 스케일링, 표준화 |
| 4. 인코딩 | 범주형 데이터를 숫자형 데이터로 변환 예: 원-핫 인코딩, 레이블 인코딩 |
| 5. 차원 축소 | 고차원 데이터를 저차원 데이터로 변환하여 모델 복잡도 감소 및 성능 향상 예: PCA, LDA |
| 이미지 처리 | 특징 추출: 엣지, 코너, 텍스처 등의 시각적 특징 추출 특징 변환: 스케일 불변 특징 변환 (SIFT), 방향성 기울기 히스토그램 (HOG) |
|---|---|
| 텍스트 처리 | 특징 추출: 단어 빈도수 (TF), 역문서 빈도수 (IDF), TF-IDF 특징 변환: 단어 임베딩 (Word2Vec, GloVe, FastText) |
| 시계열 데이터 | 특징 추출: 이동 평균, 지수 평활, 계절성 분해 특징 변환: 푸리에 변환, 웨이블릿 변환 |
| 관련 개념 | 특징 선택 차원 축소 표현 학습 |
|---|---|
| 참고 자료 | Hastie, Tibshirani, Friedman (2009). The Elements of Statistical Learning: Data Mining, Inference, and Prediction. Springer. MacQueron C (2021). SOLID-LIQUID MIXING IN STIRRED TANKS : Modeling, Validation, Design Optimization and Suspension Quality Prediction. Stanford University (2013). Machine Learning and AI via Brain simulations. |
| 주의사항 | 특징 공학은 데이터와 모델에 따라 적절한 방법을 선택해야 함 과도한 특징 공학은 과적합을 유발할 수 있음 |
2. 과정
특징 공학은 일반적으로 다음과 같은 과정을 거친다.
* 특징을 브레인스토밍하거나 테스트한다.
* 어떤 특징을 만들지 결정한다.
* 특징을 만든다.
* 확인된 기능이 작업에 미치는 영향을 테스트한다.
* 필요하다면 특징을 개선한다.
* 반복한다.
3. 클러스터링
특징 공학은 데이터 세트에서 특징 객체 또는 샘플 객체의 클러스터링에 응용된다. 특히 행렬 분해를 기반으로 하는 특징 공학은 특징 계수에 비음수 제약 조건을 적용하여 데이터 클러스터링에 광범위하게 사용되었다. 여기에는 비음수 행렬 분해(NMF), 비음수 행렬 삼중 분해(NMTF), 비음수 텐서 분해/인수 분해(NTF/NTD) 등이 포함된다. 이러한 알고리즘으로 추출된 특징 벡터 계수에 대한 비음수 제약 조건은 부분 기반 표현을 생성하며, 서로 다른 인수 행렬은 자연스러운 클러스터링 속성을 나타낸다. 하드 클러스터링을 위한 직교성 제약 인수 분해와 알고리즘의 고유한 문제를 극복하기 위한 매니폴드 학습을 포함하여, 위에서 언급한 특징 공학 방법의 여러 확장 기능이 보고되었다.
다른 종류의 특징 공학 알고리즘에는 여러 상호 관련된 데이터 세트에서 공통적인 숨겨진 구조를 활용하여 합의(공통) 클러스터링 방식을 얻는 방법이 있다. 한 예로는 여러 데이터 세트에서 공통 클러스터링 방식을 추출하는 합의 행렬 분해 기반 다중 뷰 분류(MCMD)가 있다. MCMD는 두 가지 유형의 클래스 레이블(스케일 가변 및 스케일 불변 클러스터링)을 출력하도록 설계되었으며, 다음과 같은 특징을 가진다.
* 계산적으로 강건하여 정보가 누락되어도 괜찮다.
* 모양 및 스케일 기반의 이상치를 얻을 수 있다.
* 고차원 데이터를 효과적으로 처리할 수 있다.
결합된 행렬 및 텐서 분해는 다중 뷰 특징 공학에서 널리 사용된다.
4. 예측 모델링
특징 공학은 기계 학습과 통계적 모델링에서 데이터 특징을 선택, 생성, 변환 및 추출하는 과정을 포함한다. 주요 구성 요소는 다음과 같다.
* 기존 데이터로부터 특징 생성
* 누락되거나 유효하지 않은 특징 변환 및 대입
* 주성분 분석(PCA), 독립 성분 분석(ICA), 선형 판별 분석(LDA)과 같은 방법을 통한 데이터 차원 축소
* 중요도 점수와 상관 행렬을 기반으로 모델 훈련에 가장 적합한 특징 선택
특징은 중요도가 다양하며, 비교적 중요하지 않은 특징도 모델에 기여할 수 있다. 특징 선택은 모델이 훈련 데이터 세트에 지나치게 특화되는 현상(과적합)을 방지하기 위해 특징 수를 줄일 수 있다.
특징 폭발은 식별된 특징 수가 효과적인 모델 추정 또는 최적화에 너무 많을 때 발생한다. 일반적인 원인은 다음과 같다.
* 특징 템플릿 - 새로운 특징을 코딩하는 대신 특징 템플릿 구현
* 특징 조합 - 선형 시스템으로 표현할 수 없는 조합
특징 폭발은 정규화 (수학), 커널 방법 및 특징 선택과 같은 기술을 통해 제한될 수 있다.
5. 자동화
특징 공학의 자동화는 1990년대부터 연구되어 온 주제이다. 자동 특징 공학을 통합한 기계 학습 소프트웨어는 2016년부터 상용화되었다. 관련 학술 문헌은 크게 두 가지 유형으로 나눌 수 있다.
* 다중 관계 의사 결정 트리 학습(MRDTL)은 의사 결정 트리와 유사한 지도 학습 알고리즘을 사용한다.
* 심층 특징 합성은 더 간단한 방법을 사용한다.
5.1. 오픈 소스 구현
관계형 데이터 및 시계열 데이터의 특징 공학을 자동화하는 다양한 오픈 소스 라이브러리와 도구가 있다.
* featuretools: 기계 학습을 위한 특징 행렬로 시계열 및 관계형 데이터를 변환하기 위한 파이썬 라이브러리이다.
* MCMD: 여러 데이터 세트의 공동 클러스터링을 위한 오픈 소스 특징 공학 알고리즘이다.
* OneBM (One-Button Machine): 관계형 데이터에 대한 특징 변환과 특징 선택을 특징 선택 기술과 결합한다. OneBM은 데이터 과학자가 데이터 탐색 시간을 줄여 짧은 시간에 많은 아이디어를 시도하고 오류를 범할 수 있도록 돕는다. 또한 데이터 과학에 익숙하지 않은 비전문가도 적은 노력, 시간, 비용으로 데이터에서 빠르게 가치를 추출할 수 있도록 한다.
* getML community: 시계열 및 관계형 데이터에 대한 자동화된 특징 공학을 위한 오픈 소스 도구이다. C/C++(C++)로 구현되었으며 파이썬 인터페이스를 제공한다. tsflex, tsfresh, tsfel, featuretools 또는 kats보다 최소 60배 빠르다는 것이 입증되었다.
* tsfresh: 시계열 데이터에 대한 특징 추출을 위한 파이썬 라이브러리이다. 가설 검정을 사용하여 특징의 품질을 평가한다.
* tsflex: 시계열 데이터에서 특징을 추출하기 위한 오픈 소스 파이썬 라이브러리이다. 100% 파이썬으로 작성되었음에도 tsfresh, seglearn 또는 tsfel보다 빠르고 메모리 효율적임이 입증되었다.
* seglearn: scikit-learn 파이썬 라이브러리에 대한 다변량, 순차적 시계열 데이터의 확장이다.
* tsfel: 시계열 데이터에 대한 특징 추출을 위한 파이썬 패키지이다.
* kats: 시계열 데이터를 분석하기 위한 파이썬 툴킷이다.
6. 피처 스토어
피처 스토어는 피처를 저장하고 정리하는 곳으로, 데이터 과학자가 모델을 훈련하거나(모델 훈련), 훈련된 모델을 가진 애플리케이션이 예측을 수행하는(예측 수행) 명시적인 목적을 위해 사용된다. 여러 다른 데이터 소스에서 생성된 피처 그룹을 생성, 업데이트하거나, 모델 훈련 또는 피처를 계산하지 않고 예측을 위해 필요할 때 검색하려는 애플리케이션에서 사용할 새로운 데이터 세트를 생성하고 업데이트할 수 있는 중앙 위치이다.
피처 스토어는 피처를 생성하는 데 사용되는 코드를 저장하고, 해당 코드를 원시 데이터에 적용하며, 요청 시 해당 피처를 모델에 제공하는 기능을 포함한다. 유용한 기능으로는 피처 버전 관리 및 피처를 사용할 수 있는 상황을 관리하는 정책이 있다.
피처 스토어는 독립형 소프트웨어 도구이거나 기계 학습 플랫폼에 내장될 수 있다.