답변:
매우 흥미로운 질문 (+1). 현재 기능 엔지니어링을 위한 포괄적 인 기능을 제공하는 소프트웨어 도구는 알지 못하지만 그와 관련하여 다양한 옵션이 있습니다. 현재, 내가 아는 한, 기능 기술은 여전히 크게이다 힘든 및 수동 과정 (즉, 볼 이 블로그 게시물을 ). 기능 엔지니어링 주제 도메인에 대해 말하면 Jason Brownlee 의이 훌륭한 기사 는 주제에 대한 포괄적 인 개요를 제공합니다.
오라일리 미디어 (O'Reilly Media Inc.)의 최고 데이터 과학자이자 데이터 콘텐츠 전략 담당 이사 인 벤 로리 카 (Ben Lorica)는 최신 (2014 년 6 월 현재) 접근 방식, 방법, 툴 및 스타트 업을 설명 하는 매우 훌륭한 기사를 작성 했습니다. 면적 자동화 (그는 그것을 넣어, 또는 간소화 기능 공학).
벤이 언급 한 일부 신생 기업 을 간략히 살펴 보았으며 특히이 질문의 주제와 관련하여 Skytree 의 제품 은 매우 인상적입니다. 그런 말을하는 데, 그들의 주장 중 일부는 나에게 정말 의심스러운 소리 (즉, "스카이 트리 최대 오픈 소스 옵션에 비해 150 배에 의한 기계 학습 방법을 속도" ). 상용 데이터 과학 및 머신 러닝 오퍼링에 대해 계속 이야기하면서 Microsoft의 솔루션, 특히 Azure Machine Learning Studio 를 언급해야합니다 . 이 웹 기반 제품은 매우 강력하고 우아하며 일부 기능 엔지니어링 기능 (FEF)을 제공합니다. 간단한 FEF의 예는 이 멋진 비디오를 참조하십시오 .
질문으로 돌아가서, 피처 엔지니어링 자동화에 적용 할 수있는 가장 간단한 방법은 해당 IDE 를 사용하는 것 입니다. 당신 (나 역시)는 데이터 과학 백엔드로 R 언어에 관심이 있기 때문에, 나는 RStudio라는 다른 유사한 오픈 소스 IDE,뿐만 아니라, 확인하는 것이 좋습니다 것입니다 RKWard . RKWard와 RStudio의 장점 중 하나는 IDE 용 플러그인 작성 을 지원 하므로 데이터 과학자가 기능 엔지니어링을 자동화하고 R 기반 데이터 분석을 간소화 할 수 있다는 것입니다.
마지막으로, 기능 엔지니어링 솔루션의 다른 측면에서 일부 연구 프로젝트를 찾을 수 있습니다 . 두 개의 가장 주목할만한 스탠포드 대학의 것으로 보인다 콜럼버스 프로젝트 에 자세히 설명, 해당 연구 논문 및 세뇌 에 설명 이 논문 .
Featuretools 는 자동화 된 기능 엔지니어링을 위해 최근에 릴리스 된 Python 라이브러리입니다. 그것은 2015 MIT에서 처음 개발되고 Kaggle의 공개 데이터 과학 경쟁에서 테스트 된 Deep Feature Synthesis 라는 알고리즘을 기반으로합니다 .
일반적인 데이터 과학 프로세스에 어떻게 적용되는지 살펴 보겠습니다.
이 라이브러리의 목적은 전문가가 더 나은 머신 러닝 모델을 더 빨리 구축 할 수 있도록 도와 줄뿐만 아니라 데이터 과학 프로세스가 배우려는 사람들에게 덜 위협적이지 않도록하는 것입니다. 이벤트 중심 또는 관계형 데이터가있는 경우이를 확인하는 것이 좋습니다.
면책 조항 : 나는 프로젝트의 개발자 중 하나입니다.
피처 엔지니어링은 기계 학습의 핵심이며 다소 힘들고 시간이 많이 걸립니다. 인간을 루프에서 벗어나기 위해 기능 엔지니어링을 자동화하려는 다양한 시도가있었습니다. 분류 문제에 대해이를 수행하는 특정 구현은 auto-sklearn 입니다. 후드 아래에서 SMAC 라는 최적화 절차를 사용 하여 적절한 변환 및 알고리즘 세트 (및 알고리즘 매개 변수)를 선택합니다.
Trifacta는 데이터 변환 도구를 매우 쉽게 사용할 수 있습니다. 변환 / 기능 엔지니어링 맵을 설정할 수있는 매우 직관적 인 GUI가 있습니다. 합리적인 규모의 문제에 사용할 수있는 무료 평가판도 있습니다.
Scikit-learn 은 최근 기능 엔지니어링의 여러 측면을 다루는 새로운 변압기를 출시했습니다. 예를 들면 다음과 같습니다.
숫자 및 범주 형 변수의 평균, 중앙값 및 임의의 값 대치를 포함 하여 SimpleImputer
( http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html )을 사용하여 여러 가지 누락 된 데이터 대치 기술을 수행 할 수 있습니다. .
Bayes, random forest 및 기타 (R의 MICE, Amelia 및 MissForest와 같은) 여러 추정기를 사용하여 IterativeImputer
( https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer .html # sklearn.impute.IterativeImputer )
OneHotEncoder()
Scikit-learn에서 범주 하나의 핫 인코딩을 수행 할 수 있습니다
을 사용하여 범주 형 변수를 숫자로 인코딩 할 수 있습니다 LabelEncoder
.
PowerTransformer
( http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html )을 사용하여 Yeo-Johnson 변수 변환을 수행 할 수 있습니다.
KBinsDiscretiser
( https://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretization.html )을 사용하여 이산화를 수행 할 수 있습니다.
Scikit-learn에는 잠재적으로 다른 기능 엔지니어링 변압기가 있으며 개발자는 라이브러리를 매우 정기적으로 업데이트합니다.
잘 알려진 Scikit-learn 라이브러리의 대안으로 feature-engine 이라는 최근에 새로 출시 된 오픈 소스 라이브러리가 있습니다 . 기능 엔진을 사용하면 다음을 수행 할 수 있습니다.
github 저장소 및 문서에 대한 자세한 내용 ( https://feature-engine.readthedocs.io/en/latest/ )
면책 조항 : 기능 엔진을 만들고 오픈 소스로 만들었습니다.
또 다른 오픈 소스 파이썬 패키지는 다양한 유형의 범주 형 변수 인코딩을 허용합니다 : https://contrib.scikit-learn.org/categorical-encoding/
마지막으로 기능 도구 는 트랜잭션 데이터를위한 훌륭한 오픈 소스 라이브러리입니다.
Azure Machine Learning 플랫폼 확인을 고려해야 합니다. 온라인 상태이며 무료 계정으로 사용할 수 있습니다.
Azure ML은 그래픽 사용자 인터페이스에서 모듈을 사용하여 워크 플로를 제공합니다. 이들 중 다수는 데이터 Munging과 관련이 있으며 데이터를 쉽게 정리할 수 있습니다. GUI에서 할 수없는 것이 있다면, 사용자 정의 R 또는 Python 스크립트를 실행하여 데이터를 조작 할 수있는 모듈을 추가하면됩니다.
그것의 좋은 부분은 언제든지 쉽게 데이터를 시각화 dataframe.describe()
하고 R 과 같은 간단한 통계를 확인할 수 있다는 것 입니다.
Amazon Machine Learning 은 기능 엔지니어링에 사용하는 도구입니다.
Amazon AWS 서비스가 많은 약속과 표준을 보여 주었으므로 Amazon ML을 확실히 믿고 데이터 과학자의 워크 플로우를보다 간단하게 만들 수있는 전망과 약속이 있습니다. 그러나 현재로서는 여전히 작습니다.
그러나 기능 엔지니어링 도구를 요청했을 때이 기능 중 하나입니다.
Amazon ML 사용 / 사용에 관한 몇 가지 FAQ 입니다.