이 글에서는 인공지능의 성능을 평가하는 다양한 방법 중 하나인 k-fold cross Validation(k개의 fold를 이용한 교차검증법)에 대해 알아보도록 하겠습니다.
목차 1. k-fold cross Validation (k-폴드 교차검증)이란? 2. 이 방법의 장점과 활용 상황 3. 사용 시 주의점과 한계점
이 글에서는 인공지능의 성능을 평가하는 다양한 방법 중 하나인 k-fold cross Validation(k개의 fold를 이용한 교차검증법)에 대해 알아보도록 하겠습니다.
목차 1. k-fold cross Validation (k-폴드 교차검증)이란? 2. 이 방법의 장점과 활용 상황 3. 사용 시 주의점과 한계점
1. k-fold cross Validation(k-fold 교차 검증)이란?
기계학습에서의 모델평가, 모델선택, 알고리즘선택
k-fold cross validation이란 통계를 이용하여 인공지능 모델의 성능을 평가하는 방법 중 하나인데, k-폴드 교차 검증(k-fold cross Vaildation)을 이해하기 위해서는 머신러닝이나 딥러닝에서 (학습에 사용하는) 데이터를 어떻게 나누어 활용하는지 알아야 합니다.
먼저 이 부분부터 확인해 볼게요.딥러닝(or 머신러닝)에서는요.
https://towardsdatascience.com/train-test-split-and-cross-validation-in-python-80b61beca4b6
학습 데이터 전체를 이하의 3종류로 분류하고 학습을 진행합니다.
1. Traing data(모델 훈련용 데이터)2. Validation dataor development data(훈련 과정 시험용 데이터)3. Testing data(모델 성능 테스트용 데이터)을 나누는 이유를 설명하자면, 아래의 예처럼 수학 능력 시험을 준비하는 과정이라고 생각하면 이해하기 쉽습니다.
Training data는 수능을 준비하느라 풀문제 Validation(=development)data는 중간 중간으로 제 기량을 알아보기 위한 모의 시험 문제 Testing data는 실제 수능 문제입니다
Traing data는 인공 지능 모델을 학습시킬 때 사용하는 데이터에서 Validation(=development)data는 훈련 과정 중에 잘못된 부분이나 개선해야 할 부분이 알게 중간에서 모델의 성능을 체크하는데 사용되는 데이터이며, Testing data는 인공 지능 모델을 학습(=훈련하는 과정을 마친 뒤 최종적으로 모델의 성능을 평가하기 위해서 사용되는 데이터입니다.
하지만 이렇게 나누면 Test data를 학습 과정에서 사용할 수 없다는 문제가 생기고 전체 데이터를 어떻게 test, development, training data로 나누느냐에 따라 모델의 성능이 좌우되는 문제가 생깁니다.
이러한 문제를 해결하기 위해 고안된 방법이 k-fold cross vaildation(k-fold 교차 검증법)입니다.
아래 그림과 함께 설명하겠습니다.
https://scikit-learn.org/stable/modules/cross_validation.html
(위 그림은 k=5에 설정하고 5-fold cross vaildation(5개 폴드의 교차 검증 법)을 제시한 자료입니다.
)1번째 순서->모든 데이터가 k개의 fold로 나누고, 각각의 폴더에 index(고유 번호)을 부여합니다.
이때 k-1개의 fold는 Trainingfold(훈련용 데이터), 1개의 fold는 Testfold(모델 테스트용 데이터)에 설정하고 학습을 진행하게 됩니다.
위의 그림은 k=5에 설정하고 있으므로 Fold1~Fold5이 만들어지고 4개의 fold는 trainingfold로 1개의 fold는 Testfold입니다.
++만약 총 데이터의 개수가 100장이면 5개의 fold에는 각각 20개의 데이터가 들어가게 됩니다.
(위 그림은 k=5로 설정하고 5-fold cross vaildation(5개의 폴드로 이루어진 교차검증법)을 나타낸 자료입니다.
) 첫 번째 순서–> 전체 데이터를 k 개의 fold 로 나누어 각각의 폴더에 index(고유번호)를 부여합니다.
이때 k-1개의 fold는 Trainingfold(훈련용 데이터), 1개의 fold는 Testfold(모델 테스트용 데이터)로 설정하여 학습을 진행하게 됩니다.
위 그림은 k=5로 설정되어 있기 때문에 Fold 1~Fold 5가 만들어지고 4개의 fold는 training fold가 되고 1개의 fold는 Test fold가 되는 것입니다.
++ 만약 총 데이터 개수가 100개라면 5개의 fold에는 각각 20개의 데이터가 들어가게 됩니다.
기계학습에서의 모델평가, 모델선택, 알고리즘선택기계학습에서의 모델평가, 모델선택, 알고리즘선택2. 이 방법의 장점과 활용하는 상황 k-fold cross vaildation(k-폴드 교차검증법)을 사용하면 Test data와 Vaildation data(=development data)를 모델의 훈련과정에 사용할 수 있게 되므로 데이터가 부족한 상황에서 효율적으로 활용할 수 있는 장점을 가지고 있습니다.
또한https://towardsdatascience.com/train-test-split-and-cross-validation-in-python-80b61beca4b6기존 방식에서 모델의 성능을 평가할 때 사용되는 Validation(=development)데이터+Testing데이터가 고정적인데 k-fold cross vaildation(k-fold교차 검증 법)에서는 모델의 성능 평가 데이터가 가변적으로 변화하기 때문에 더 일반화된 성능을 얻을 수 있다는 이점이 있습니다.
–>이 방법에서는, Test fold와 Vaildatio fold는 같은 의미입니다.
일반화된(Robust)성능은 실제 현실 상황에서 일어나는 다양한 데이터에 보다 유연하게 적용할 수 있다는 뜻이다.
개발자에게 주어진 데이터는 대부분 현실적인 상황에서 일어나는 여러가지 타입의 데이터를 대변할 수 없어 고생하고 개발한 인공 지능이(개발자가 갖고 있는)한정된 데이터에 대해서 높은 성능을 갖고 있어도 실제 상황에서 벌어지는 다양한 데이터에 대해서 낮은 성능을 나타내는 것이 많아 일반화된 성능은 매우 중요한 요소이다.
3. 사용할 때의 주의점 k-fold Cross vaildation(k개의 폴드를 이용한 교차 검증 법)은 전체 데이터를 k개의 폴드로 분할하고 학습을 진행시키는 평가하는 방식이어서 각각의 폴드가 균형 있게 데이터를 가지는 것이 중요합니다.
–>정답/오답 데이터가 골고루 fold에 분배되지 않으면 일반화된 학습 성능과 거리가 멀어지는 문제가 생기는 예를 들어)전체 데이터를 랜덤으로 분할한 결과 fold1에 정답 데이터가 집중하고 있는 상황이라는 단점을 극복하기 위해서,”Stratified K-fold Cross Validation”라는 방법이 탄생한 것도 있습니다.
–>다음은 다양한 Cross Vaildation의 종류를 설명했던 다른 블로그 글입니다.
참고하세요!
https://blog.naver.com/winddori2002/221850530979[바람돌이/머신러닝] 교차검증(CV), Cross Validation, K-fold, Time Series 등 CV종류 및 이론 안녕하세요. 오늘은 머신러닝에서 정말 많이 쓰이는 교차검증(Cross Validation)에 대해 정리하겠습니다.
blog.naver.com또 k회 학습하고 산출한 성능 평가 값을 합계하고 평균을 내는 방식이어서 개별 성능 평가 값이 무시되기도 합니다.
이것은 설명 가능성이 중요한 의료 인공 지능 같은 분야에서 큰 문제로 작용할 가능성이 있는 문제입니다.
예를 들면)1~4번째 학습시의 성능(예측 정밀도)이 각각 90%, 90%, 90%, 90%로 5번째 학습시의 성능이 20%로 90%+90%+90%+20%=380%, 380%/5=76%에서 모델의 성능치가 76%로 산출됐다고 생각합시다.
인공 지능 알고리즘의 개발자는 상기의 성능치를 보고인공 지능 모델의 성능이 좋다고 판단할 수도 있었지만 이는 매우 위험한 판단이 되기도 합니다.
왜냐하면 의료 인공 지능과 같은 분야는 인공 지능의 판단을 기준으로 환자를 판단하거나 대처하는 경우가 생길 수도 있기 때문입니다.
만약 5번째 학습 성능 20%(fold1~4=Trainingfold, fold5=Testfold)이 환자의 생명과 직결된 정보라면…?이런 일이 발생할 가능성도 있으므로 평균치에 의한 성능 평가는 항상 조심해야 할 점입니다.
이상으로 개발한 인공지능 모델의 성능값을 평가하는 방법 중 하나인 k-fold cross Validation(k개의 fold를 이용한 교차검증법)에 대한 글을 마치도록 하겠습니다…!
긴 글 읽어주셔서 감사합니다.
궁금하신 점 있으시면 언제든 댓글로 물어보세요!