모델의예측성능평가및개선

交叉验证은아직훈련하지않은새로운데이터셋에대한머신러닝알고리즘의예측성능을평가하는데사용되는모델평가기법입니다。기존의데이터셋을분할하여,이중일부를사용하여알고리즘을훈련시키고나머지데이터를테스트에사용합니다。

각각의交叉验证라운드에서기존의데이터셋을훈련세트테스트세트로임의분할하게됩니다。이어서훈련세트를사용하여지도학습알고리즘을훈련시키고테스트세트를사용하여성능을평가합니다。이과정을몇차례반복하고,평균交叉验证오차가성능지표로사용됩니다。

왜交叉验证이중요할까요?

모델을훈련시킬때,너무복잡하거나너무단순한알고리즘으로과적합하거나과소적합하지않는것이중요합니다。훈련세트와테스트세트를적절히선택해야이러한위험을줄일수있습니다。그러나학습결과와테스트유효성결과를모두극대화하도록데이터셋을분할하기는어렵습니다。그래서交叉验证을활용하는것입니다。交叉验证은모델에맞는최적의알고리즘을찾을수있도록데이터를다양하게분할하는여러가지기법을제공합니다。

또한交叉验证은아직훈련에사용하지않은테스트데이터셋을사용하여오차를계산함으로써가장성능이우수한모델을선택하도록해줍니다。테스트데이터셋은모델의정확도를계산하고,모델이앞으로데이터를어떻게일반화할지계산하는데도움을줍니다。

널리쓰이는交叉验证기법

交叉验证에사용할수있는기법은많습니다。그중다음과같은기법들이가장널리쓰이고있습니다。

  • k -겹:데이터를대략같은크기로임의선정된k개의등분(또는겹으로도불림)으로분할합니다。이중한등분을제외한나머지등분으로모델을훈련시키고,훈련에사용되지않은남은한등분을사용하여모델을검증합니다。각각의등분이정확히한번씩검증에사용되도록이과정을k회반복합니다。전체k개의분할에대한평균오차는ε로나타냅니다。이는交叉验证에가장널리활용되는기법이지만,모델을반복적으로훈련시켜야되므로실행시간이오래걸릴수있습니다。아래이미지에서이과정을보여줍니다。
  • 홀드아웃:지정된훈련비율과검증비율을사용해데이터를정확2개히로임의분할합니다。이방법은훈련과테스트를단한번만하여,큰데이터셋에대한실행시간을줄여주지만,작은데이터셋에대해보고된오차를해석할때에는주의해야합니다。
  • 리브아웃: k -겹접근방법으로데이터를분할하되,이k때는데이터내전체관측값의개수와같게하고모든데이터는테스트세트로한번사용되게합니다。LOOCV(分析交叉验证)라고도부릅니다。
  • 반복임의부표본추출:몬테카를로방법을사용하여다수의임의데이터분할을생성하여훈련세트와테스트세트로사용하고모든실행결과를집계합니다。이기법은k -겹과유사한방식이지만각각의테스트세트는독립적으로선택됩니다。그래서일부데이터포인트는한번이상테스트에사용될수있습니다。
  • 층화:훈련및테스트세트가응답변수와목표변수에대략적으로동일한클래스비율을갖도록데이터를분할합니다。
  • 재대입:데이터를분할하지않고모든데이터를모델훈련에사용합니다。결과와실제값을비교함으로써오차를평가합니다。이접근방식은성능에대한지나치게낙관적인추정을낳는경우가많기때문에데이터가충분하다면사용하지않는게좋습니다。

交叉验证은훈련과검증이수차례이루어지기때문에계산집약적인작업이될수있습니다。그러나모델을과적합하거나과소적합할위험을감소시키기위해모델개발에서아주중요한단계입니다。모든분할세트가독립적이기때문에이분석을병렬로수행하여과정의속도를높일수있습니다。데이터셋이클경우,홀드아웃또는재대입기법을사용하는것이좋고,k -겹및반복임의부표본추출과같은기법은작은데이터셋에더적합합니다。

MATLAB을사용한交叉验证

MATLAB®은交叉验证과머신러닝을지원합니다。분류학습기앱회귀학습기앱으로이런交叉验证기법중일부를사용할수있습니다。

분류모델을훈련,검증및조정하는분류학습기앱。내역목록을보면다양한분류기유형이있습니다。

회귀모델을훈련,검증및조정하는회귀학습기앱。내역목록을보면다양한회귀모델유형이있습니다。

계산집약적인작업의속도를높이기위해并行计算工具箱™로멀티코어컴퓨터,GPU,클러스터에서병렬연산을수행할수있습니다。

머신러닝문제에交叉验证을사용하는방법에관한더자세한내용은MATLAB과함께사용하는统计和机器学习工具箱™深度学习工具箱™를참조하십시오。

참조:统计和机器学习工具箱,머신러닝,지도학습,특징선택,정규화,선형모델

머신러닝의난점:최적의분류모델선택및과적합방지

机器学习问题问答:所有关于模型验证的问题