상세 컨텐츠

본문 제목

[패스트 캠퍼스] 10개 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 (실습3)

데이터 과학

by Taeyoon.Kim.DS 2023. 11. 30. 22:26

본문

https://colab.research.google.com/drive/1-FEQbWuXnlZg2LTs9-p8fTy-07Qx1H2b#scrollTo=MB65yTX3a1Vf

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

Discord 질문사항

가장 높은 roc_auc_score를 가진 ML with Feature Selection (No Sampling)을 선택하게 되었는데요. 
1) 실제 현업에서 퇴사 가능성이 높은 직원을 찾아내는 모델을 만들어달라고 요청이 들어온 것이라면, 결과물은 어떤 방식으로 다시 HR팀에 전달할 수 있을까요? Training 단계에서 YES (퇴사자)만 대상으로 진행하지 않고 No (현직자)도 함께 진행을 했기 때문에 1470명이 직원 전체의 숫자라면 해당 모델은 직원 A가 퇴사한 사람인지, 현직자인지만 도출할 수 있어서 HR팀에게 의미가 없지 않을까요? 퇴사자 200여명을 제외한 1200명에 해당 모델을 적용시켜서 누가 퇴사할지 알아본다고 해도, 이미 모델이 학습할 때 1200명에 대한 정보를 바탕으로 No로 인식했기 때문에 데이터의 변동이 없는 한 예측 결과는 No - 퇴사하지 않은 사람이다가 되지 않는지 궁금합니다. 잠깐 생각해봤을 때, YES를 선택한 사람에 대해서만 학습을 하고 (이게 가능한건지도 헷갈리네요) 해당 모델을 No인 사람 (현직자, 즉 아직 퇴사를 하지 않은)에게 예측을 해야, 나머지 1200여명이 그들의 feature를 바탕으로 퇴사를 할 것인지 아닐 것인지에 대해서 알아내는 것이 목적이 아닌가 싶습니다. 

만약 Unseen data, 즉 전체 직원수가 5,000명 정도라서 나머지 3700여명에게 해당 모델을 적용하면 Yes, No가 나오도록 한다면 문제가 없을 것 같다는 생각도 듭니다.
2) 만약 3,700명에 대한 unseen data에 대해서 위의 모델을 적용하고, 결과를 HR팀에 전달한다고 했을 때 코드는 어떻게 되는지 궁금합니다. 
2-1) 완전히 Unseen data에 대해서 적용하므로, 위에 training을 test_size 나누지 않고 전체에 대해서 재훈련하여 정확도를 더 높일 수 있을까요? 위에서 test_size를 0.3으로 나눈 이유는 모델의 성능을 평가하기 위함이니, 평가 후에 best model 을 찾았다면 모델을 나누지 않고 재훈련 하는게 맞을까요? 아니면 70%의 데이터에 학습된 모델을 사용하나요? 
2-2) 만약 70% (1,029명) 의 데이터에 학습된 모델을 그대로 사용한다면, grid_cv_opt1.fit(X_train, y_train)까지는 그대로 가고, 새로운 데이터셋을 불러서 y_prd = grid_cv_opt1.predict_proba(new_dataset)[:-1]으로 하게 되는게 맞나요?
2-3) 만약 100% (1,470명) 의 데이터로 재학습을 한다면 그때에도 그리드 서치가 필요할까요? 100%를 훈련세트로 사용하면 그리드 서치시에 best-params 값들이 변경될까요? 아니면 70%에서 나온 params 값들을 그대로 사용해서 xgb_clf에 넣어야할까요? 

3) roc_auc_score가 0.80이 나왔는데, 현업에서 이 점수를 몇 점까지 용인하는지 궁금합니다. 제가 만든 text 및 image classification 모델의 경우 0.90이상이 나오지 않으면 불안합니다 (제 경우에는 text는 보통 0.95이상, image는 0.90-9.95 사이에 나옵니다). 데이터의 수가 하루에 수만 건인데, 대충 90%의 정확도를 가진다고 치면 수천건이 False Positive이기 때문입니다. 물론 대부분의 비즈니스에서 실무자는 ML 모델의 결과를 참고용으로 사용하지만, ML 모델로부터 추천되어진 결과의 다수가 FP인 경우에는 모델에 대한 신뢰도가 떨어져서 실무자가 불만을 표출하기 때문입니다.

관련글 더보기