Training and Testing data
- train : 학습
- validation : 학습 중간에 검증 (여러번)
- test : 모델 평가 (단 한번만)
교차 검증 Cross Validation
- problem : 데이터를 train, test set으로 나눠도 고정된 학습 데이터로 평가하다 보면 테스트 데이터에만 최적의 성능을 발휘하도록 편향되게 모델을 유도하는 경향이 생겨 과적합(overfitting)이 될 수 있다.
- 이렇게 되면 결국 다른 테스트용 데이터가 들어올 경우에는 성능이 저하된다.
- solution : 데이터 편중을 막기 위해, 교차 검증하기!
- (본 고사(test)를 치르기 전에 모의고사(valid set)으로 검증하듯이)
K-fold Cross Validation
- k 개의 데이터 폴드 세트를 만들어서 k번만큼 각 폴드 세트에 학습과 검증 평가를 반복 수행하는 방법
- k=5일 때 K폴드 평가 결과는 '5번 학습/검증해서 구한 결과의 평균'
Stratified K Fold
- 불균형한 분포도의 label(클래스) 데이터 집합을 위한 K 폴드 방식 (한 데이터 집합이 특이하게 많거나 적어서 값의 분포가 skew 되는 것)
- 원본 데이터와 유사한 레이블 값의 분포를 학습&테스트 세트에도 유지하는 게 중요함
cross_val_score() : 교차 검증을 간편하게!
- sklearn API 중 kfold를 더 편하게 해주는 것
- 1 폴드 세트를 결정하고 2_ for 루프로 학습/테스트 데이터의 인덱스 추출 3 반복 학습, 예측 수행, 얘측 성능 반환
cross_val_score(model, iris.data, iris.target)
hyperparameter tuning : 최적의 파라미터를 찾는 것
- 하이퍼 파라미터:머신러닝 알고리즘별로 최적의 학습을 위해 직접 입력하는 파라미터들을 통칭, 하이퍼 파라미터를 통해 머신러닝 알고리즘의 성능을 튜닝할 수 있다.이 값을 조정해 알고리즘의 예측 성능을 개선할 수 있다
GridSearchCV
- 교차 검증과 최적 hyper-parameter tuning 한번에 할 수 있게 해주는 API
- 최적의 파라미터를 도출할 수 있게 해주는 API (파라미터를 순차적으로 입력해서 테스트함)
- 데이터 세트를 cross-validation을 위한 학습/테스트 세트로 자동으로 분할한 뒤에 하이퍼 파라미터 그리드에 기술된 모든 파라미터를 순차적으로 적용해 최적의 파라미터를 찾을 수 있게 해준다
- 단점 : 순차적이기 때문에 수행 시간이 상대적으로 길 수 있다
GridSearch CV 주요 파라미터 :
- Estimator: classifier, regressor, pipeline이 사용된다
- Param_grid: key + 리스트 값을 가지는 딕셔너리가 주어지며 estimator 의 튜닝을 위해 파라미터명과 사용될 여러 파라미터 값을 지정함.
- Scoring: 예측 성능을 측정할 평가 방법을 지정. 보통은 scikitlearn의 성능 평가 지표를 지정하는 문자열 (예:정확도의 경우 ' accuracy')로 지정하나 별도의 성능 평가 지표 함수도 지정할 수 있음.
- Cv: 교차 검증을 위해 분할되는 학습/테스트 세트의 개수를 지정
- Refit: 디폴트가 true이며 true로 생성시 가장 최적의 하이퍼 파라미터를 찾은 뒤 입력된 estimator객체를 해당 하이퍼 파라미터로 재학습
'Data Science' 카테고리의 다른 글
머신러닝 평가 지표 (Machine Learning Metrics ) (0) | 2023.08.31 |
---|---|
머신러닝 임계값 Threshold, ROC, AUC (0) | 2023.08.09 |
데이터분석 머신러닝 개념, 종류 (0) | 2023.07.27 |
[HTML/DJANGO 웹개발 기초] GET, POST 방식 차이 예시 (0) | 2023.07.05 |
[Python] 반응형 웹사이트 크롤링 예제 (웹툰, 쇼핑몰) (0) | 2023.06.29 |