Kaggle/Intro to Machine Learning

5. Underfitting and Overfitting

RiLLa_0511 2023. 8. 4. 14:28
728x90

Overfitting (오버피팅)

 → 모델이 훈련 데이터에 너무 과하게 적합화되어 훈련 데이터의 잡음이나 노이즈까지 학습하여 실제 데이터에서의 성능이 저하되는 현상

 

Underfitting (언더피팅)

 → 모델이 데이터의 다양성과 복잡성을 충분히 반영하지 못하고, 너무 간단한 모델을 사용하여 데이터의 패턴을 제대로 파악하지 못하는 상태

 

☞ 언더피팅과 오버피팅 사이에서 최적의 균형점을 찾아야 함

 

 

● 결정 트리 크기 비교하기

 → 모델이 데이터의 다양성과 복잡성을 충분히 반영하지 못하고, 너무 간단한 모델을 사용하여 데이터의 패턴을 제대로 파악하지 못하는 상태

 → 어떤 크기의 결정 트리가 가장 좋은 성능을 보이는지 확인 후, 최적의 모델 크기를 선택

 

 → 'scores' dictionary : candidate_max_leaf_nodes에 있는 leaf_size 값을 key로, get_mae 함수를 호출하여 얻은 MAE값을 value로 저장 ( leaf_size에 대한 모델의 성능인 MAE가 저장됨)

 

※ Dictionary Comprehension

{Key:Value for 요소 in 입력 Sequence [if 조건식]}

candidate_max_leaf_nodes = [5, 25, 50, 100, 250, 500]

scores = {leaf_size: get_mae(leaf_size, train_X, val_X, train_y, val_y) for leaf_size in candidate_max_leaf_nodes}

best_tree_size = min(scores, key=scores.get)

 

● 모든 데이터를 사용하여 모델 학습시키기

 → 모든 데이터(훈련 데이터와 검증 데이터)를 사용하여 최적의 트리 크기(best_tree_size)를 가진 결정 트리 모델을 다시 학습함

final_model = DecisionTreeRegressor(max_leaf_nodes=best_tree_size, random_state=1) # max_leaf_nodes에 최적의 트리 크기가 설정됨

final_model.fit(X, y) # 모든 데이터 'X'와 그에 해당하는 타겟 값 'y'를 사용하여 최종 모델 학습

'Kaggle > Intro to Machine Learning' 카테고리의 다른 글

6. Random Forests  (0) 2023.08.11
4. Model Validation  (0) 2023.08.03
3. Your First Machine Learning Model  (0) 2023.08.02
2. Basic Data Exploration  (0) 2023.08.02