혼자 공부하는 머신러닝 + 딥러닝 05-2 확인 문제

손지호·2023년 8월 5일
1

1. 훈련 세트를 여러 개의 폴드로 나누고 폴드 1개는 평가 용도로, 나머지 폴드는 훈련 용도로 사용합니다. 그다음 모든 폴드를 평가 용도로 사용하게끔 폴드 개수만큼 이 과정을 반복합니다. 이런 평가 방법을 무어이라고 부르나요?

① 교차 검증
② 반복 검증
③ 교차 평가
④ 반복 평가

2. 다음 중 교차 검증을 수행하지 않는 함수나 클래스는 무엇인가요?

① cross_validate()
② GridSearchCV
③ RandomizedSearchCV
④ train_test_split

마지막 RandomizedSearchCV 예제에서 DecisionTreeClassifier 클래스에 splitter='random' 매개변수를 추가하고 다시 훈련해 보세요. splitter 매개변수의 기본값은 'best'로 각 노드에서 최선의 분할을 찾습니다. 'random'이면 무작위로 분할한 다음 가장 좋은 것을 고릅니다. 왜 이런 옵션이 필요한지는 다음 절에서 알 수 있습니다. 테스트 세트에서 성능이 올라갔나요? 내려갔나요?








<풀이>

1. 답 ① 교차 검증은 훈련 세트를 여러 개의 폴드로 나누고 하나의 폴드를 검증 세트로 두고 나머지 폴드를 훈련 세트로 사용. 이러 ㄴ방식으로 모든 폴드에 대해 반복한다.


2. 답 ④ train_test_split은 데이터를 훈련 세트와 테스트로 분할.

① cross_validate()는 주어진 모델과 훈련 세트를 사용하여 기본 5-폴드 교차 검증을 수행.
② GridSearchCV와 ③ RandomizedSearchCV는 하이퍼파라미터 튜닝을 수행하면서 최상의 모델을 고르기 위해 교차 검증을 수행.


결정 트리의 노드를 랜덤하게 분할하기 때문에 100번의 반복에서 최적의 매개변수 조합을 찾지 못함. 평균 검증 점수와 테스트 세트의 점수가 모두 조금 낮다.

gs = RandomizedSearchCV(DecisionTreeClassifier(splitter='random', 				random_state=42), params, n_iter=100, n_jobs=-1, random_state=42)
	gs.fit(train_input, train_target)

print(gs.best_params_)
print(np.max(gs.cv_results_['mean_test_score']))

dt = gs.best_estimator_
print(dt.score(test_input, test_target))
>>> {'max_depth': 43, 'min_impurity_decrease': 0.00011407982271508446, 'min_samples_leaf': 19, 'min_samples_split': 18}
	0.8458726956392981
	0.786923076923077
profile
초보 중의 초보. 열심히 하고자 하는 햄스터!

0개의 댓글