원문코드입니다.
def train_set_check( identifier, test_ratio ):
return crc32( np.int64( identifier )) & 0xffffffff < test_ratio * 2 ** 32
편의상 "test_ratio * 2 ** 32"를 "test_ratio" 라고 칭하겠습니다.
전체 데이터셋이 추가 혹은 수정 되더라도 crc값을 이용해서 기존 테스트셋에 사용되었던 데이터는 여전히 테스트셋으로만 배분되게끔 한다는 내용입니다.
궁금한 부분은 crc32() 의 리턴값이 랜덤..하진 않겠지만 쉽게 예측하기 힘든 32비트 숫자일텐데, 막연하게 "test_ratio"보다 작은지 아닌지로 판단해서 테스트셋을 나누는 게 바람직한지 입니다.
과장해서 예를 들자면, 주어진 데이터의 crc32() 리턴값이 모조리 "test_ratio"보다 큰 값이라면 테스트셋에는 아무런 데이터도 배분되지 않을테니까요.
그런데 막상 저렇게 해보니 테스트셋에 정확하게 test_ratio만큼 배분이 되더군요 신기하게도;;
제가 모르는 crc기법의 특성이 있는 걸까요..?
ps. 어떻게 검색을 하다가 여기까지 흘러왔는데, 지금까지 제가 봐왔던 상당수의 딥러닝/머신러닝 서적을 작가님께서 다 번역을 하셨더군요. 심지어 아직 못 본 책도 한 무더기..
정말 잘 보고 있습니다. 감사합니다.