지금 수통, 회귀 떼고나서 머신러닝 공부중에 있습니다.
머신러닝에서 보면 train data와 test data가 나뉘는데.. 궁금한 점이 있습니다.
회귀분석이라고 가정하겠습니다.
만약 저한테 10만개의 데이터가 있다고 치면, 8:2로 나눈다는게
8만개로 모델을 적합시키고, 2만개로 성능 테스트를 한다는 말인가요?
그 8만개로 모델을 적합시킨다는 말이, 제가 회귀분석 이론에서 배운 Beta_1 = Sxy / Sxx 를 구할때 이 train data인 8만개만 이용해서 모델을 만든다는 소리인가요..?
여기서 만들어진 모델을 이제 2만개에 error율을 구하는게 성능 테스트라고 보면 되는건가요..??
적합시킨다의 의미를 잘 모르겠습니다..
그리고 제가 생각하기에는 위 내용이 맞다면 train data를 어떻게 잡느냐에 따라 모델이 바뀔거 같은데... 문제가 되지 않나요?
책에서 읽은 바로는 LOOCV는 1개씩 해서 테스트 하는거라 data를 어떻게 나누냐에 따라 바뀌지 않는다는 장점이 있다고 본 것도 같아요..
너무 쉬운 질문인거 같기도 한데, 제가 이해를 못하는거 같아서 질문 드립니다.
너무 정신없이 글을 써서 글이 이해 안되신다면 댓글로 부탁드려요 ㅠ
감사합니다.
다맞는말임
단순 train test로 나누었을 때 train은 모델 학습에, test는 마지막에 예측률 측정하는 것임 test는 모델 학습에 사용되면 과적합 문제때문에 모델 완성 전까지 사용하면 안되는 최종 시험용 데이터이고 따라서 train 데이터 내부에서 validation 데이터 셋 따로 만들어서 중간 검증을 실시함. 여기서 가장 예측률이 잘 나오도록 하이퍼 파라미터를 튜닝해서 모델을 만든후 test 데이터 셋으로 최종 시험을 하여 perdict 즉 예측률을 측정하는 것 - dc App
다만 데이터 셋이 적은 문제도 있고 validation도 한 데이터 셋으로 하면 그 validation 데이터 셋에 적합하도록 하이퍼파라미터가 튜닝될 수 있으므로 보통 k fold 교차 검증을 많이 사용함 요약하면 train으로 모델 학습후 validation 으로 검증 및 모델의 하이퍼 파라미터 튜닝을 한후 최종적으로 test로 평가하는 것 - dc App
여기까지가 머신러닝의 가장 기초적인 이론 부분 ㅇㅇ 튜토리얼 느낌임 - dc App
더 배우면 train test 어떻게 나누는지도 검증 방법도, 모델마다 하이퍼 파라미터의 종류와 그 특성등 너무 다양해서 찬찬히 배우면 됨 - dc App
적합은 좀 비유하자면 내가 5명의 여성에게 기초 화장을 시켰어 ㅇㅇ 내가 화장을 잘 해줬는지 확인을 하려면 검증을 해야하잖아?? 그렇지만 최종 심사진들한테 바로 보이고 피드백을 받고 나서 화장 수정후 다시 심사받으러 가면 너무 그 심사진에 맞게 화장을 해줬으므로 점수가 높겠지? ㅇㅇ 그럼 점수 높다고 그대로 들고가면 실제로 일반인들에게 보여줬을때 취향에 안 맞을 확률이 커 - dc App
따라서 최종 심사진한테는 절대 미리 보여주고 평가 받으면 안돼 이 심사진이 test 데이터야 근데 검증과 수정작업은 해야 하잖아? 그래서 이 5명 따로따로 1명이 나머지 4명을 평가해서 점수 낸 후에 평균을 내 ㅇㅇ 이러면 5명의 다른 시야에서 평가를 했으니 객관성이 높겠지? 이 평가를 k fold 교차 검증이라고 부르고 이 검증 점수가 가장 높은 화장 법이 최종 모델이야 ㅇㅇ - dc App
이 최종 화장법을 심사진들한테 평가 받고 마찬가지로 점수가 높으면 일반인들한테 사용하라고 주는거지 이게 바로 api 배포고 - dc App
과적합은 처음에 비유한 심사진들한테 너무 잘 맞는 화장법을 냈다가 일반인들한테 몰매 맞는 상황이라 보면 됨 회귀분석에서의 과적합은 모든 점들을 한 줄로 잇는 선을 생각하면 편함 ㅇㅇ 그러면 predict는 100퍼가 나오겠지만 실제로 사용할 경우 오차율이 엄청 커지겠지? - dc App
감사함니다! 그러면 적합시킬때 Sxy/Sxx를 통해 계수를 구한다면 이건 train data로만 하는거 맞나요? 파이썬으로 OLS회귀분석에서의 결과값들이 다 훈련 데이터로 만든 계수인지 궁금합니다
네 따로 validation 데이터에 대한 분리나 언급이 없다면 train으로 학습 후 test로 결과 내서 모델 정확도가 얼마다 결론 내면 됩니다. - dc App
감사랍니다