Python Scikit-Learn 워크플로우
활성화
- 키워드 트리거: 작업이 실질적으로 scikit-learn 모델 선택,
KFold,StratifiedKFold,GroupKFold,TimeSeriesSplit,cross_validate,GridSearchCV,RandomizedSearchCV, 학습/검증 곡선, PCA,sklearn.inspection,ColumnTransformer또는Pipeline을 포함하는 경우. - 의도 트리거: 사용자가 누출(leakage) 없이 scikit-learn 모델을 분할, 전처리, 튜닝, 진단 또는 해석하는 방법을 묻는 경우.
- 공개: 적용 가능한 작업을 시작할 때 한 번, 간략하게 명시:
$python-sklearn-workflow 사용 중 - 이 작업이 scikit-learn 평가 또는 전처리를 포함하기 때문입니다. - 종료: 분할, 교차 검증, 전처리, 탐색 및 진단 계약이 확정되면 이 기술 적용을 중단합니다.
- 트리거하지 않음: 의존성 업데이트, 분할/튜닝이 이미 고정된 상태의 실험 추적, 이미 학습된 추정기에 대한 일반
predict호출, 이미 계산된 예측값으로부터의 보고용 플롯, 단독 추정기 API 질문, 딥러닝 파이프라인, 또는 우연한 import만으로는 충분하지 않습니다. 플롯은 작업이 점수 계산, 평가 설계, 진단 방법론 또는 모델 검사를 변경할 때만 여기에 속합니다.
평가 단위부터 시작하세요
분할기를 선택하기 전에 훈련과 평가 사이에서 독립적으로 유지되어야 하는 것이 무엇인지 파악하세요:
- 개별 IID 관측치;
- 희귀 결과가 있는 클래스 레이블;
- 사용자, 환자, 장치, 세션, 위치 또는 기타 그룹;
- 시간 순서의 미래 관측치; 또는
- 클래스 균형과 겹치지 않는 그룹의 조합.
선호하는 기본 백분율이 아닌, 해당 단위로부터 테스트 세트와 교차 검증 전략을 선택하세요. 분할기 및 탐색 선택에 대해서는 references/model-selection-guide.md를 참조하십시오.
전처리를 폴드 내부에서 유지하세요
- 스케일러, 대체기, 인코더, 특성 선택기, PCA 또는 기타 학습 기반 변환을 적용하기 전에 최종 테스트 세트를 분리하세요.
- 학습 기반 전처리와 추정기를
Pipeline에 넣어 각 교차 검증 폴드가 변환을 훈련 파티션에서만 학습하도록 하십시오. - 숫자형, 범주형, 텍스트 또는 기타 열 하위 집합에 서로 다른 변환이 필요한 경우
ColumnTransformer를 사용하십시오. preprocess__numeric__scaler또는model__C와 같은 파이프라인 이름을 통해 중첩된 매개변수를 탐색하세요.cross_val_score,cross_validate, 그리드 탐색 또는 무작위 탐색 전에 전체 데이터셋을 수동으로 전처리하지 마십시오.
PCA, 검사 및 이질적 열에 대해서는 references/preprocessing-inspection.md를 참조하십시오.
평가 및 탐색 도구를 신중하게 선택하세요
- 단일 지표와 간단한 폴드 점수에는
cross_val_score를 사용하십시오. - 여러 지표, 훈련 점수, 적합/점수 시간 또는 반환된 추정기가 실제로 필요한 경우
cross_validate를 사용하십시오. - 작고 분리된 타당한 매개변수 그리드에 대해 포괄적 조합이 계산 예산에 맞을 경우
GridSearchCV를 사용하십시오. - 더 큰 공간, 분포 또는 고정된 후보 예산에는
RandomizedSearchCV를 사용하십시오.n_iter와 매개변수 분포를 신중하게 설정하십시오. - 모델 비교 전반에 걸쳐 동일한 교차 검증 의미론과 점수 계약을 유지하십시오. 분할기가 필요로 하는 경우 그룹/메타데이터를 올바르게 전달하십시오.
- 모델 선택이 모든 개발 폴드를 소비하는 경우, 손대지 않은 테스트 세트를 보존하거나 적절한 중첩 평가를 사용하십시오.
질문에 답하기 위해 곡선 및 검사 추가
learning_curve를 사용하여 더 많은 훈련 데이터가 훈련/검증 차이를 줄일 가능성이 있는지 또는 두 점수가 모두 평탄화되었는지 질문하십시오.validation_curve를 사용하여 하나의 하이퍼파라미터에 대한 훈련/검증 동작을 검사하십시오. 이는 다중 매개변수 탐색이나 최종 테스트를 대체하지 않습니다.sklearn.inspection.permutation_importance를 사용하여 적합된 모델의 점수가 특성에 의존하는 정도를 측정하십시오. 모델이 유용한 예측 성능을 가지고 있음을 확인한 후, 가능하면 보류된 데이터에서 사용하십시오.- 부분 의존도 또는 ICE는 해당 가정과 특성 분포가 결과를 해석 가능하게 할 때만 사용하십시오.
- 검사 플롯을 기계적으로 추가하지 마십시오. 먼저 디버깅, 신뢰성 또는 해석 가능성 질문을 정의하십시오.
필수 출력
독립적인 평가 단위, 보류 비율 근거, 선택된 교차 검증 분할기 및 점수 계산 방식, 전처리/PCA 배치, 그리드 또는 무작위 탐색 예산, 학습/검증 곡선이 구체적인 질문에 답하는지 여부, 검사 방법 및 데이터셋, 누출 제어 방식, 그리고 최종 손대지 않은 평가 경로를 명시하십시오.