2020. 11. 7. 11:56ㆍ분석 Python/Data Preprocessing
AutoML에서 자동 피처 엔지니어링에 대해서 관심이 많다.
보통 우리가 딥러닝을 쓰는 것도 사람들이 알 수 없는 패턴을 딥러닝이 학습(Representation Learning)을 기대하는 것인데, 이것이 현재는 비정형 데이터에서는 많이 사용하고 있으나, 여전히 정형 데이터에는 사람의 손이 타는 것 같다.
그래서 보통 어떤 알고리즘에서는 이미지를 통해서 전처리 단계를 비정형데이터로 만드는 방법이 있는가 하면, 아니면 먼가 복잡하게 내부적으로 처리하게 해서 자동으로 처리하는 경우를 본 것 같다.
여기서는 그러한 방법들 말고, 그냥 정형 데이터가 있다고 했을 때, 처리하는 방법 중에서 PCA를 활용한 AutoML에 대한 자료가 있어서 살펴본다.
아시다시피 정형 데이터는 아주 크게 보면, 연속형 변수와 범주형 변수가 있다.
그래서 이 2가지를 항상 어떻게 처리해야할 지는 어느 정도 범위가 정해져 있지만, 적절한 변수 선택이나 도메인 지식이 없을 때 파생변수를 어떻게 만드는지가 항상 이슈다.
PCA 전략
이 글에서는 PCA 전략을 사용해서 처리하는 방법이 나온다.
알고보니 대부분 AutoML 프레임워크에서는 PCA를 많이 사용한다고 한다. 물론 PCA가 좋은 방법인 것은 맞으나, 여러 가지 제약이 있는데, 편하게 사용할 수 있어서 사용하는 것 같다.
예를 들어 이런 차원 축소 기법으로는 AutoEncoder, UMAP, T-SNE 같은 것이 있는데, 속도 면에서도 어느정도 이슈도 있고 배보다 배꼽이 더 클 수 도 있어서 그런 것 같기도 하다.
아무튼 PCA를 사용하면, 고차원의 데이터를 저차원으로 데이터로 압축이 가능하다. 암축을 통해서 숨겨진 패턴을 찾을 수 있고 유의미하지만 영향을 적게 주는 변수를 제거하는 효과가 있다.
일반적인 PCA 기반 기능 전처리 범주형 기능을 처리하기 위해 하나의 인코더만 사용하고 기능 감소를 구현하는 데 최소한 하나의 PCA 알고리즘이 있다.
이 전 처리기 시스템은 AutoML 프레임 워크 (예 : Auto-ML 및 H2O autoML)에 널리 적용된다고 한다.
그리고 Auto-Sklearn에는 PCA 앙상블 구성 요소가 있어 여러 PCA 알고리즘이 서로 다른 파이프 라인에 대한 입력 데이터 세트를 생성할 수 있습니다.
Feature selection strategy:
강건한 automated feature preprocssor를 디자인하기 위해서, OptimalFlow는 대체 전략으로 feature selection을 선택하고 입력 데이터의 범주형 변수에 대처하기 위해 앙상블 인코딩 메커니즘을 도입합니다.
앙상블 인코딩 (SPEE) 시스템을 사용하는이 선택 기반 기능 전처리 앙상블 인코딩 방법을 통해 여러 범주 특성에 대한 AutoML의 적응성을 향상합니다.
PCA 알고리즘 대신 앙상블 기능 선택 알고리즘을 통해 기능 관계 정보 및 분산을 유지합니다.
For the feature selection ensemble component, SPEE is using 3 major algorithms:
- Select K Best Features(SelectKBest) with ANOVA F-value between label/feature or Chi-squared stats of non-negative features approach, etc.
- Recursive Feature Elimination(RFE) with Logistic Regression, SVM, or Decision Tree estimator
- Recursive Feature Elimination and Cross-validated Selection(RFECV) with logistic regression, SVM, or decision tree estimator
결국 2개의 방법이 말하고자 하는 것은 유의미한 변수를 만들기 위해서 PCA 라는 차원 축소 기법을 통해서 만드는 방법이 하나가 있고(비지도 방식), PCA로 하는 것에도 여러 가지 필요하니, 다양한 변수 선택 기법들을 적용하여, 유의미한 변수만 추려보자라는 방법(지도 방식).
즉, 둘 다 유의미한 것을 어떻게 뽑을 지에 대한 고민에서 생각난 프로세스들인 것 같다.
필자도 결국 기존 틀에서 하는 식을 자동으로 한다고 했을 때는, 다음과 같은 방법론 밖에 없을 것 같긴 하다.
하지만 두 방법 다 항상 최적의 변수를 만들어줄 것 같지는 않다.
2가지는 물론 다 좋은 방식이지만, 기존 틀에서 크게 벗어나지는 않는 방법론인 것 같다.
필자도 사실 만든다고 했을 때, 이 안에서 벗어나지 못하고 있긴 하다.
그러나 자동 피처 엔지니어링이라는 개념이 피처 엔지니어랑의 파이프라인 자동화 보다는 NN이 자동으로 피처를 표현할 수 있게 하는 방법론이 더 많은 사람들에게 매력적이지 않을까 싶긴 하다.(물론 학습하는데도 시간이 걸린다는 게 문제지만...)
www.alibabacloud.com/blog/6-top-automl-frameworks-for-machine-learning-applications-may-2019_595317
towardsdatascience.com/feature-preprocessor-in-automated-machine-learning-c3af6f22f015
'분석 Python > Data Preprocessing' 카테고리의 다른 글
[머신러닝][전처리] 변수 이산화(Discretization) 방법 (0) | 2022.07.09 |
---|---|
Target Encoding을 사용하여 범주형 변수 표현하기 (0) | 2020.09.01 |
sklearn ColumnsTransformer 및 변수별로 전처리 적용하는 예시 (0) | 2020.05.02 |
[변수 선택] Boruta 와 Lightgbm(rf)을 사용 (0) | 2020.04.24 |
Data Preprocessing 잡생각 (0) | 2020.04.19 |