Machine Learning/[Kaggle Course] ML (+ 딥러닝, 컴퓨터비전)

[Kaggle Courses] UnderFitting vs OverFitting

WakaraNai 2020. 9. 27. 15:10
728x90
반응형

1. OverFitting -> deep tree

너무 세세하게 분류 기준을 세우니, 분류 집단 수가 너무 많아져, 정확도가 떨어짐

 

2. UnderFitting -> shallow tree

분류 기준을 너무 적게 잡으니, 분류 집단 수가 너무 적어서, 정확도가 떨어짐.

 

 

 

3. 각 모델의 예측 정확성 비교하기

MAE와 max_leaf_nodes의 값을 비교.

  • max_leaf_nodes 입력인수: 최대 leaf의 수.
    • leaf가 너무 많으면(node가 많아지면) overfitting -> model이 너무 sensible해짐
    • leaft가 너무 적으면 underfitting
    • 이상적인 트리 사이즈란? MAE가 최소가 되는 트리 사이즈
# for-loop을 이용해서 최대 leaf(node) 수를 통하여 이상적인 트리 사이즈를 찾자
for max_leaf_nodes in [5, 50, 500, 5000]:
	my_mae = get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y)
    	print("Max leaf nodes: %d  \t\t Mean Absolute Error:  %d" % (max_leaf_nodes, my_mae))

 

4. Coding it

1. Compare Different Tree Sizes

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

scores = {leaf_size: get_mae(leaf_size, train_X, train_y, val_X, val_y) for leaf_size in candidate_max_leaf_nodes}
best_tree_size = min(scores, key=scores.get)
# key parameter:: 각 원소마다 적용할 함수

2. Fit Model Using All Data (X, y)

final_model = DecisionTreeRegressor(max_leaf_nodes = best_tree_size, random_state = 0)
final_model.fit(X, y)
728x90
반응형