[3] Model Validation

김상완·2024년 3월 30일
0

이 단원에서는 모델 유효성 검사를 사용하여 모델의 품질을 측정하는 방법을 배웁니다.

라고 하네요. 모델 품질을 측정하는 것은 모델을 반복적으로 개선하는 데 있어 핵심이랍니다.

시작합니다.

What is Model Validation

모델 유효성 검사란?
모델 유효성과 관련된 척도는 "Predictive Accuracy(예측 정확도)" 임

많은 경우 예측 정확도 측정 시 학습데이터로 예측, 그 예측을 목표 값과 비교하는 방식을 사용함
일단 이 방식을 사용하려면, 모델 품질을 이해하기 쉬운 방식으로 요약해야 함
10,000 채의 주택에 대한 예측과 실제 주택 가치를 비교하면 좋은 예측과 나쁜 예측이 섞여있을 것
-> 이를 하나의 지표로 요약해야 함

여러 지표가 있지만 다들 잘 아는 평균 절대 오차(Mean Absolute Error, MAE) 라는 지표부터 시작하자~!

각 주택의 예측 오차는 다음과 같다!

error = actual- predicted

집 값이 150,000이고 100,000으로 예측했다면 오차는 얼마죠? 50,000이겠죠?
화난 거 아닙니다.

MAE 를 사용하면 각 오차의 절대값 을 구할 수 있다.
이렇게 하면 각 오차는 양수로 변환된다. 그런 다음 이러한 절대 오류의 평균 을 구한다.
이것이 모델 품질을 측정하는 척도이다.

아래는 MAE를 계산하는 코드이다. 모델은 저번 시간에 했던 멜버른 주택 예측을 그대로 사용

from sklearn.metrics import mean_absolute_error

predicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)


요런 결과가 나오네용

The Problem with "In-Sample" Scores

근데 방금 계산한 측정 값은 "In-Sample" 점수라고 할 수 있음
이건 근데 좀 나쁜 것이다...

만약 대규모 부동산 시장에서 문 색깔이 주택 가격과 무관하다면
그러나 모델 구축에 사용한 데이터 샘플에는 녹색 문을 가진 집이 모두 비싸다면
-> 녹색 문을 가진 집이 비쌀 것으로 예측

이렇게 되면 이 모델은 학습 모델에 대해서는 정확하게 나타나지만, 새로운 데이터에서는 부정확한 모델이 될 것이다.

모델의 실질적 가치는 새로운 데이터에 대한 예측 에서 나오기 떄문에 모델을 구촉하는 데 사용되지 않은 데이터에 대한 성능을 측정한다.

이를 위한 가장 간단한 방법은 모델 구축 과정에서 일부 데이터를 제외한 다음 이러한 데이터를 사용하여 이전에 보지 못한 데이터에 대한 모델의 정확도를 테스트하는 것이다.
이를 Validation Data 라고 한다.

Coding it

와우! 놀랍게도 scikit-learn 라이브러리에는 train_test_split 이라는, 데이터를 두 조각으로 분할하는 함수가 있다. 이 데이터 중 일부는 모델을 맞추기 위한 학습 데이터로 사용하고, 다른 데이터는 mean_absolute_error를 계산하기 위한 검증 데이터로 사용된다.

from sklearn.model_selection import train_test_split

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(val_X)
print(mean_absolute_error(val_y, val_predictions))


이런 결과가 나온다네요~

WOW!

샘플 내 데이터의 MAE는 약 500달러이지만, 표본 외 데이터는 25만 달러가 넘는다.

이것은 거의 정확히 맞는 모델과 대부분의 실제 목적에 사용할 수 없는 모델의 차이이다. 참고로 검증 데이터의 평균 주택 가격은 110만 달러이다. 따라서 새로운 데이터의 오차는 평균 주택 가격의 1/4 정도이다.

profile
Learning like Machine

0개의 댓글