[컴퓨터를 이용한 신약개발(CADD)] 예측 모델 검증 방법
이번 글에서는 예측 모델의 예측력을 검증하는 방법에 대해서 소개를 해보고자 합니다. 예측 모델을 검증하는 과정은 모델이 훈련 데이터에 과적합 되어 있는지 평가하기 위한 단계로, 예측 모델을 만드는 과정에서 필수적으로 들어가게 됩니다.
1. 검증을 위한 데이터 분할
예측 모델을 검증하기 위해서 먼저 확보한 데이터를 훈련 데이터(training set), 검증 데이터(validation set), 테스트 데이터(test set)로 나눕니다. 훈련 데이터는 예측 모델을 개발하기 위해 사용이 됩니다. 훈련 과정을 거치면 훈련 데이터에 대해서 작은 에러를 보이는 모델들이 다수 존재하게 되는데, 이 모델들 중에서 실제 예측력이 어떤지를 살펴보기 위해서 검증 데이터를 예측 모델에 적용해보고, 그 중에서 에러가 작은 모델들을 선별할 수 있습니다. 이렇게 선택된 모델들에 대해서 최종적으로 테스트 데이터를 적용해서 예측력을 평가하게 됩니다. 훈련 데이터는 모델의 계수를 잡는데 사용이 되었고, 검증 데이터는 모델을 선택하는데 사용이 되었으니, 모델을 훈련하는데도 사용하지 않고, 선택하는데도 사용하지 않은 테스트 데이터를 이용해서 최종적으로 모델을 평가함으로써 예측 모델의 예측력을 평가해볼 수 있습니다.
QSAR 모델을 개발할 때, 사용되는 표현자의 개수가 증가할수록 즉 모델의 복잡도가 증가할수록 훈련 데이터에 대한 QSAR모델의 오차는 감소합니다. 그러나, 이때 얻어진 모델들에 검증 데이터를 적용해보면, 검증 데이터에 대한 오차가 어느 선까지는 감소하다가 필요 이상의 복잡도가 증가하게 되면, 검증 데이터에 대한 오차는 오히려 증가하게 됩니다. 그래서 모델이 훈련 데이터와 검증 데이터에 대해서 오차가 적을 때 모델을 선택하게 되면, 예측력이 좋은 모델일 가능성이 높습니다.
데이터가 충분히 있는 경우, 데이터를 나눌 때 훈련 데이터를 전체 데이터의 60%, 나머지는 각각 20%씩 할당하는 것으로 추천을 하는 경우도 있지만, 사실 데이터의 양에 대해서 정해진 방법은 없고, 모델 개발자가 여러가지 경우를 시도해보면서 가장 좋은 모델이 얻어지는 경우를 찾으면 됩니다.
2. 내부 검증 방법
데이터가 충분하게 있으면 데이터에서 훈련데이터, 검증 데이터, 테스트 데이터를 나눠서 모델을 만들면 좋을텐데, 데이터 개수가 충분하지 않은 경우에는 내부 검증 방법을 시도해 볼 수 있습니다. 대표적으로 cross validation, leave-one-out, bootstrapping 방법이 많이 사용이 됩니다.
n-fold cross validation (CV)은 주어진 데이터를 n토막 내서 한 토막은 검증용으로 사용하고 나머지 데이터는 모델을 훈련하는 데이터로 사용하는 방법입니다. 그림에서 예를 든 것처럼 3-fold면 데이터를 3토막내서 모델을 검증하고, 5-fold면 5토막을 내서 검증에 사용하게 됩니다.
<그림2. 3-fold cross validation 방법>
Leave-one-out (LOO) 방법은 데이터가 n개 있으면, 1개를 제외한 나머지 데이터로 모델을 만들고 제외시켰던 1개의 데이터로 검증하는 방법입니다.
Bootstrapping방법에서는 n개의 데이터가 있으면, 임의로 n번 데이터를 선택을 합니다. 이때, 중복을 허용해서 데이터를 뽑고, 이 과정에서 중복된 데이터를 포함해서 선택된 데이터는 훈련용 데이터로 사용하고, 선택이 되지 않았던 데이터들만 모아서 검증용 데이터로 사용하는 방법입니다. 샘플링은 20-200번 정도 하는 것을 추천합니다.
<그림4. Bootstrapping 방법>
참고자료
Ravichandran Veerasamy et al., Validation of QSAR models - strategies and importance, International journal of drug design and discovery, Vol.2, Iss 3., Jul, 2011, 511-519