ML,DL
Underfitting & Overfitting
BKM
2021. 8. 26. 16:38
참고 : https://www.kaggle.com/dansbecker/underfitting-and-overfitting
Underfitting and Overfitting
Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources
www.kaggle.com
Overfitting / Underfitting 이란?
- 모든 집(House)을 위의 그림 처럼 Decision-Tree를 사용해서 분류한다고 하자. 이때, 한개의 기준(가지; branch)으로 나누어 지면 2가지의 경우의 수(잎; leaf)가 생기게 된다. 이를 반복해서 10개의 기준으로 전체 데이터를 나눈다고 가정하면, 무려 \(2^{10}\)의 경우의 수가 파생된다.
- 이렇게 되면 각각의 경우는 매우 세분화되어 실제 사용되는 데이터(Actual Data; Train Data) 중에서 각 조건에 해당되는 을 꽤 정확하게 분류/예측할 수 있겠지만 새로 생겨난 데이터(Validation Data; Test Data)에 대한 예측 성능에 대한 신뢰도는 현저히 떨어지게 된다.
- 이처럼 기존 데이터에 너무나도 자세하게 맞춰져있어 새로운 데이터에 대한 분류/예측 성능이 떨어지는 문제를 'Over-Fitting'이라고 한다.
- 그 반대로, Train Data에 대해 충분히 학습시키지 못하고 데이터의 특징을 명확히 구분짓지 못해서 분류/예측 자체가 의미없게 되어버리는 경우를 'Under-Fitting'이라고 한다.
So,
- 우리의 과제는 Over-fitting과 Under-fitting의 사이에서 만족할 만한 분류/예측력을 도출할 수 있을 만한 'Sweet-Spot'을 찾는 것이다.
예제
- DecisionTreeRegressor에서 'max_leaf_nodes' 파라미터 값을 통한 Tree(Decision Tree)의 Depth조절
cf) 여기서 'Depth'란, Tree가 얼마나 가지를 뻗치는 지에 대한 정도를 의미한다.
from sklearn.metrics import mean_absolute_error
from sklearn.tree import DecisionTreeRegressor
def get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y):
model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes, random_state=0)
model.fit(train_X, train_y)
preds_val = model.predict(val_X)
mae = mean_absolute_error(val_y, preds_val)
return(mae)
# compare MAE with differing values of max_leaf_nodes
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))
- max_leaf_nodes값을 각각 5, 50, 500, 5000으로 줬을 때, 각각의 MAE값을 비교할 수 있다.
# Output
Max leaf nodes: 5 Mean Absolute Error: 347380
Max leaf nodes: 50 Mean Absolute Error: 258171
Max leaf nodes: 500 Mean Absolute Error: 243495
Max leaf nodes: 5000 Mean Absolute Error: 254983
- MAE를 비교 했을 때,
max_leaf_nodes = 5 > max_leaf_nodes = 50 > max_leaf_nodes = 5000 > max_leaf_nodes = 500
'500'인 경우 MAE가 가장 작음을 확인 할 수 있다. 즉, 500개의 잎(경우의 수)를 가질 때의 MAE가 가장 작다.