파이프라인 및 복합 추정기

Beginner

This tutorial is from open-source community. Access the source code

소개

scikit-learn 에서 파이프라인과 복합 추정기는 여러 개의 변환기와 추정기를 단일 모델로 결합하는 데 사용됩니다. 이는 데이터 처리에 고정된 단계가 있는 경우, 예를 들어 특징 선택, 정규화 및 분류와 같은 경우에 유용합니다. 파이프라인은 공동 매개변수 선택에도 사용될 수 있으며, 교차 검증 중 테스트 데이터의 통계가 학습된 모델에 유출되지 않도록 보장할 수 있습니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

파이프라인 - 추정기 연결

scikit-learn 의 Pipeline 클래스는 여러 추정기를 하나로 연결하는 데 사용됩니다. 이를 통해 데이터에 대해 한 번에 fitpredict를 호출하여 추정기의 전체 시퀀스를 맞출 수 있습니다. 또한 공동 매개변수 선택을 가능하게 하고 교차 검증에서 데이터 누출을 방지하는 데 도움이 됩니다.

파이프라인을 생성하려면 각 단계를 식별하는 문자열 key와 추정기 객체인 value의 쌍 목록을 제공해야 합니다. 아래는 PCA 변환기와 SVM 분류기를 사용하여 파이프라인을 만드는 예입니다.

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA

estimators = [('reduce_dim', PCA()), ('clf', SVC())]
pipe = Pipeline(estimators)

인덱싱 또는 이름으로 파이프라인의 단계에 접근할 수 있습니다.

pipe.steps[0]  ## 인덱스로 접근
pipe[0]  ## 위와 동일
pipe['reduce_dim']  ## 이름으로 접근

또한 make_pipeline 함수를 사용하여 파이프라인을 생성하는 간단한 방법으로 사용할 수 있습니다.

from sklearn.pipeline import make_pipeline
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import Binarizer

make_pipeline(Binarizer(), MultinomialNB())

중첩 매개변수

파이프라인 내 추정기의 매개변수에 접근하려면 <추정기>__<매개변수> 구문을 사용할 수 있습니다. 이는 파이프라인 내 모든 추정기의 매개변수에 대한 그리드 검색을 수행하는 데 유용합니다. 예제는 다음과 같습니다.

pipe.set_params(clf__C=10)

변환기 캐싱

변환기를 맞추는 작업은 계산적으로 비용이 많이 들 수 있습니다. 반복적인 계산을 피하기 위해 파이프라인에서 memory 매개변수를 사용하여 변환기를 캐싱할 수 있습니다. 이 매개변수는 변환기가 캐싱될 디렉토리 또는 joblib.Memory 객체로 설정할 수 있습니다. 예제는 다음과 같습니다.

from sklearn.decomposition import PCA
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from tempfile import mkdtemp
from shutil import rmtree

estimators = [('reduce_dim', PCA()), ('clf', SVC())]
cachedir = mkdtemp()
pipe = Pipeline(estimators, memory=cachedir)

## 더 이상 필요하지 않을 때 캐시 디렉토리를 지웁니다.
rmtree(cachedir)

변환된 대상 회귀 분석기 (TransformedTargetRegressor)

TransformedTargetRegressor 클래스는 회귀 모델을 맞추기 전에 회귀 문제에서 대상 변수를 변환하는 데 사용됩니다. 대상 변수에 로그를 취하는 것과 같이 대상 변수에 변환을 적용하려는 경우 유용합니다. 예측은 역변환을 통해 원래 공간으로 매핑됩니다. 선형 회귀 모델과 사분위수 변환기를 사용하여 TransformedTargetRegressor를 사용하는 예는 다음과 같습니다.

import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.compose import TransformedTargetRegressor
from sklearn.preprocessing import QuantileTransformer
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

X, y = fetch_california_housing(return_X_y=True)
transformer = QuantileTransformer(output_distribution='normal')
regressor = LinearRegression()
regr = TransformedTargetRegressor(regressor=regressor, transformer=transformer)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
regr.fit(X_train, y_train)
regr.score(X_test, y_test)

FeatureUnion - 복합 특징 공간

FeatureUnion 클래스는 여러 변환기 객체를 결합하여 출력을 결합하는 새로운 변환기로 결합하는 데 사용됩니다. 텍스트, 부동 소수점 및 날짜를 별도로 전처리하는 것과 같이 데이터의 서로 다른 특징에 서로 다른 변환을 적용하려는 경우 유용합니다. 변환기는 병렬로 적용되며, 출력하는 특징 행렬은 큰 행렬에 나란히 연결됩니다. 예제는 다음과 같습니다.

from sklearn.pipeline import FeatureUnion
from sklearn.decomposition import PCA
from sklearn.decomposition import KernelPCA

estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]
combined = FeatureUnion(estimators)

요약

파이프라인과 복합 추정기는 scikit-learn 에서 변환기와 추정기를 단일 모델로 결합하는 강력한 도구입니다. 편의성, 매개변수 선택 및 데이터 안전성을 제공합니다. 파이프라인은 추정기 체이닝, 중첩 매개변수 및 변환기 캐싱을 허용합니다. TransformedTargetRegressorFeatureUnion과 같은 복합 추정기는 각각 변환 및 특징 결합을 제공합니다. 이러한 개념은 이질적인 데이터를 효과적으로 전처리하고 처리하는 복잡한 머신 러닝 모델을 구축하는 데 필수적입니다.