티스토리 뷰

여러가지 알고리즘 및 처리공정을 하나로 연결하기 - 파이프라인

파이프라인에 대해서 알아봅시다! 사용할 데이터셋은 다음과 같습니다.

load_breast_cancer

사이킷런에서 제공하는 이진분류데이터셋으로 y는 0과 1입니다

Classes2
Samples per class212(M),357(B)
Samples total569
Dimensionality30
Featuresreal, positive

최솟값, 최댓값을 찾아 데이터의 스케일을 바꾸고 SVM을 훈련시켜 평가해보겠습니다

sklearn.pipeline.Pipeline(steps, memory=None)

이번에는 같은 모델을 파이프라인으로 재구성해보겠습니다.

  • 파이프라인의 목적
    to assemble several steps that can be cross-validated together while setting different parameters
    데이터변환(전처리)와 모델을 연결하여 코드를 줄이고 재사용성을 높이기위함

위에서는 스케일러를 불러오고, fit, transform 한 후 모델학습을 하는 일련의 작업이 있었지만 파이프라인을 사용하면 단순히 어떤 스케일러를 쓰고 모델을 쓸 것인지만 쓰면됩니다. 훨씬 편하죠! 여기서 테스트점수는 실행할때마다 바뀝니다.

 

 

 

레이블 정리

갯수타입내용
단일열이진분류, 단 하나의 feature는 2개의 Class중 반드시 하나를 가진다.
0 or 1
단일열실수회귀, 단 하나의 값으로 예측하면 된다.
예) 텍스트를 보고 나이를 판단
여러열이진분류, 각 label 들은 2개의 Class에서 하나를 가진다.
여러 팀들에 대한 선호도 : 00001000
여러열실수회귀, 각 feature들은 연속적인 값들을 가지며 여러개를 예측해야한다.
건강검진을 수행한후, 여러가지 검사결과에 대한 예측
여러열.분류, 각 데이터들이 여러가지의 카테고리에 속할 수 있다.

모형 최적화

  • 모형최적화를 위해 데이터 전처리와 매개변수 선택하겠습니다.
  • 절차상, 머신러닝 모델을 만든 뒤 최적화 과정을 진행합니다.
  • 이런 모델을 제공해주는 sklearn의 하이퍼 파라미터 튜닝 도구는 아래와 같습니다.

validation_curve : 단일 하이퍼 파라미터 최적화

GridSearchCV : 그리드를 이용한 복수 하이퍼 파라미터 최적화
ParameterGrid : 복수 하이퍼 파라미터 최적화

sklearn.model_selection.GridSearchCV(estimator, param_grid)

  • param_grid : dict or list of dictionaries
    이번에는 그리드 서치로 해보겠습니다.
    그리드 서치는 매개변수 탐색 방법으로 지정된 매개변수의 모든 조합을 고려하여 최적의 매개변수를 택합니다.
    fit 과 predict 시 쓰인 X_train과 X_test는 위에서 미리 스케일링시킨 데이터입니다.

 

그러나 여기에는 큰 문제점이 있습니다. 그리드 서치는 훈련폴드와 검증폴드를 나누는데 ★스케일링은 훈련폴드에만★ 적용되어야합니다. 그러나 그리드 서치 수행 전 이미 스케일링을 시켰기때문에 검증폴드에도 전처리과정이 적용되었습니다. 그럼 이러한 오류를 일으키지 않으려면 어떻게 해야할까요?

그리드 서치에 파이프라인 적용하기

그리드 서치를 이후에 전처리를 하면됩니다. 아래코드를 보면 그리드 서치 수행시(grid.fit) 파이프라인을 불러오면서 그제서야 전처리를 하죠. 교차 검증의 각 분할에 스케일러가 훈련폴드에만 매번 적용되고 검증 폴드에는 영향을 미치지않습니다!

+) 파이프라인용 매개변수 그리드는 단계 이름과 매겨변수 이름을 __로 연결합니다

그냥 파이프라인으로 실행했을때와 최적의 매개변수를 찾은 뒤 실행했을 때의 차이가 꽤 있네요.

sklearn.pipeline.make_pipeline(*steps, **kwargs)

이번에는 조금 더 간편하게 파이프라인을 만들어봅시다. make_pipeline은 따로 튜플로 단계를 쓸 필요가 없습니다. 그냥 모델만 써줘도 자동으로 class 이름을 소문자로하여 생성해줍니다.

 

 

 

파이프 라인(스케일링, 로지스틱 회귀) + 하이퍼 파라미터

전처리기 2개에 모델 1개를 가지는 파이프라인

스케일조정, 다항식 특성 선택, 릿지 회귀의 세 단계로 구성된 파이프라인을 구현했습니다.

 

 

 

시각화

  1. 데이터프레임으로 변환후 seaborn사용
  2. mglearn 사용

 

ridge__alpha 0.001 0.01 0.1 1.0 10.0 100.0
polynomialfeatures__degree
1 0.722189 0.722192 0.722216 0.722410 0.721702 0.692022
2 0.756721 0.762969 0.784703 0.826684 0.855482 0.826077
3 -29.591460 -12.134137 -2.686031 -0.253970 0.692706 0.839140

 

 

 

 

아래는 다항식 특성이 없는 그리드 서치입니다. 다항 특성이 없는 경우 성능이 낮아진 것을 볼 수 있습니다.

알고리즘 선택을 위한 그리드 서치

여러가지 알고리즘에 따른 매개변수값을 지정하며, 알고리즘 선택까지 가능하게 한다.

 

undefined

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함