머신러닝(Machine leanring)

(4) 머신러닝(Machine learning)이란? - Model Validation [Hellfer]

Hellfer 2024. 7. 19. 10:38
728x90

https://www.kaggle.com/code/dansbecker/model-validation

 

Model Validation

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

위의 글을 보고 참고하여 작성하였습니다.

 

모델 검증은 머신러닝 모델이 새로운 데이터에 대해 얼마나 잘 일반화될 수 있는지를 평가하는 과정입니다.

 

이는 모델이 훈련 데이터에 대해 과적합되지 않도록 하며, 실제 적용 시 좋은 성능을 발휘할 수 있도록 하기 위한 중요한 단계입니다.

 

일반적으로 훈련 데이터와 검증 데이터를 사용합니다.

 

검증 데이터(Validation Data) : 모델을 평가하는 데 사용되며, 모델이 학습하지 않은 데이터로 일반화 성능을 평가하는 데 사용합니다.

 


 

대부분의 응용 분야에서 모델 품질과 관련된 척도는 예측 정확도입니다.

 

예측 정확도를 측정할 때 훈련 데이터를 사용하여 모델의 예측을 평가하는 실수를 범합니다.

 

10,000개의 주택에 대한 예측 주택 가격과 실제 주택 가격을 비교하면 정확한 예측과 부정확한 예측이 혼합되어 있습니다.

 

10,000개의 예측값과 실제값을 비교하는 것은 의미가 없으며 이를 하나의 측정항목으로 요약해야 합니다.

 


 

모델 품질을 요약하는 측정항목은 많지만 평균 절대 오차(MAE)라고 하는 측정항목부터 계산해 보겠습니다.

 

평균 절대 오차(MAE)는 예측 값과 실제값 차이를 절댓값으로 변환한 후, 절대 오차들의 평균을 구하는 방법입니다.

 

 

 

1. 예를 들어 주택 가격이 $150,000이고 그 가격이 $100,000일 것이라고 예측했다면 오류는 $50,000입니다.

 

2. 오류 $50,000의 절댓값은 $50,000입니다.

 

3. 오류의 절댓값을 모두 더한 후, 전체 데이터수(n)로 나누어 줍니다.

 

- 평균 절대 오차(MAE) 값이 작을수록 예측이 실제 값에 더 가깝다는 것을 의미합니다.

 


 

절대 평균 오차(MAE)를 계산하는 방법은 다음과 같습니다.

 

from sklearn.metrics import mean_absolute_error

# 실제 주택 가격 (y)와 예측에 사용할 데이터(X)
# X와 y는 이미 정의되어 있습니다.
# 예: X는 특성 데이터, y는 실제 주택 가격

# 모델로 예측값을 생성합니다.
predicted_home_prices = melbourne_model_predict(X)

mean_absolute_error(y, predicted_home_prices)

 

434.71594577146544

 

 


 

표본 내의 문제점

- 모델을 구축하고 평가할 때 단일 주택 샘플을 사용하면, 특정 데이터 패턴('녹색 문이 있는 집은 비싸다')을 과대평가할 수 있습니다.

- 이 패턴은 훈련 데이터에만 해당할 수 있어서, 새로운 데이터에 적용할 때 부정확한 예측을 보여줄 수 있습니다.

 

→ 따라서, 모델 구축 과정에서 일부 데이터를 제외하고 이를 검증 데이터로 사용하여 모델의 성능을 측정합니다.

 

from sklearn.model_selection import train_test_split

# 데이터를 훈련 데이터와 검증 데이터로 분할합니다
# random_state 인수를 사용하여 동일한 분할을 보장합니다.
train_X, val_x, train_y, val_y = train_test_split(X, y, random_state = 0)

# 모델 정의
melbourne_model = DecisionTreeRegressor()

# 모델 학습
melbourne_model.fit(train_X, train_y)

# 검증데이터로 가격 예측
val_predictions = melbourne_model.predict(X,y)
print(mean_absolute_error(val_y, val_predictions))

 

265806.91478373145

 

- 검증 데이터의 실제 값(val_y)과 예측 값(val_predictions)을 비교하여 평균 절대 오차(MAE)를 제공합니다.

- MAE 값을 출력하여 모델의 성능을 평가합니다.

 

 

728x90