본문 바로가기
DeepLearning Framework & Coding/Microsoft AzureML

[Microsoft AzureML - 15] Cross Validation

by 노마드공학자 2021. 7. 1.

※ 이전글

[Microsoft AzureML - 0] Intro https://limitsinx.tistory.com/113

[Microsoft AzureML - 1] 개발 환경 세팅 https://limitsinx.tistory.com/114

[Microsoft AzureML - 2] 학습할 데이터 불러오기 https://limitsinx.tistory.com/115

[Microsoft AzureML - 3] 데이터 전처리(Data pre-processing) - I https://limitsinx.tistory.com/116

[Microsoft AzureML - 4] 데이터 전처리(Data pre-processing) - II https://limitsinx.tistory.com/117

[Microsoft AzureML - 5] 학습모델 구현 및 검증 https://limitsinx.tistory.com/118

[Microsoft AzureML - 6] 여러 학습모델 동시에 성능비교 https://limitsinx.tistory.com/119

[Microsoft AzureML - 7] Binary Classification with Kaggle https://limitsinx.tistory.com/120

[Microsoft AzureML - 8] 모델 선정과 Hyper Parameter 자동튜닝 https://limitsinx.tistory.com/121

[Microsoft AzureML - 9] 학습데이터 CSV로 Export하기 https://limitsinx.tistory.com/122

[Microsoft AzureML - 10] 데이터 Feature Engineering https://limitsinx.tistory.com/123

[Microsoft AzureML - 11] 이미지 데이터학습 with Neural Network https://limitsinx.tistory.com/124

[Microsoft AzureML - 12] Train/Test 데이터 구분하기 https://limitsinx.tistory.com/125

[Microsoft AzureML - 13] Kaggle 사용법 https://limitsinx.tistory.com/126

[Microsoft AzureML - 14] Titanic Dataset 학습하기 https://limitsinx.tistory.com/127

 


Cross Validation

 

AzureML에서 Cross Validation을 할수있는 방법에 대해 포스팅해보고자 합니다.

일단, Cross Validation이란 되게 간단한 개념인데요

 

예를들어, [1 2 3 4 5 6] 이라는 6개의 데이터를 가지고 있다고 했을때,

[1 2 3]으로도 학습시켜보고, [3 4 5]로도 학습시켜보고, [1 4 6]으로도 학습시켜보고... 이런식으로

 

데이터의 전체 총량은 변하지 않지만, 선택하는 데이터의 갯수와 종류들을 바꿔가면서 여러가지로 테스트해보는것을 의미합니다.

 

그럼 Cross Validation을 왜 해줄까요??

 

바로 "Overfitting/Underfitting"을 확인하기 위함입니다.

 

예를들어, [1 2 3]데이터로 학습해서 검증했을때는 정확도가 아주 괜찮게 나왔지만, [4 5 6]으로 해보니 정말 안좋은 성능의 시스템이 나올수있죠?? 

 

이런경우를 방지하기 위해, 특정 데이터셋에만 과도하게 적합하도록 학습되지 않았는지..를 평가하기위해 Cross Validation을 진행해줍니다.

 

 

AzureML Studio에서 Cross Validation은 [Split Data]블록의 Random Seed 변경을 통해 진행할 수 있습니다.

 

이제까지는 Random Seed를 한번도 바꾸지 않고 진행했는데요

 

Random Seed는 정수값으로만 넣을수있으며

 

Random하는 알고리즘이 각 정수별로 정해져있습니다!

 

즉, [1 2 3 4 5 6]을

 

Random seed = 0 : [1 2 3 4 5 6]

                   = 1 : [2 5 6 1 3 4]

                   = 2 : [3 1 4 5 6 2]

....

 

이런식으로, 정해져있기에 예를들어서 AzureML Block Diagram을 동일하게 짜고, Random seed를 1로 동일하게 넣으면 제가짜나, 옆의 친구가짜나 똑같은 알고리즘으로 Random하게 섞어주기에 결과값이 똑같이 나오게됩니다 :)

 

이렇게 여러가지 Random Seed로 검증해보았을때 Accuracy가 큰폭으로 변화하지 않는다면 Fitting에 의한 문제점은 없는것이라고 보셔도 됩니다.

 

댓글