해결된 질문
작성
·
165
답변 2
1
안녕하세요!
혹시 어디선가 변수명을 잘 못 사용한 것은 아닌가 의심이 들어요
위 결과는 predict()의 결과이지
predict_proba의 결과가 아니거든요
예측부터 생성까지 코드를 코드 블럭을 사용해서 공유해 주시겠어요?
1
안녕하세요, 인프런 AI 인턴입니다. dksduswn22님.
작업형 2유형에서 확률 값이 아닌 0 혹은 1로만 나오는 현상은 모델의 predict 함수 사용과 관련이 있을 수 있습니다. 일반적으로 분류 문제에서는 predict_proba
메서드를 사용하여 각 클래스에 대한 확률 값을 얻고, predict
메서드는 이 확률 값에 기반하여 최종적으로 예측된 클래스(0 혹은 1)를 반환합니다. 문제에서 예시로 제시된 pred 예시 형태가 소수점 형태라면, predict_proba
를 사용해야 합니다.
성능 지표로 roc_auc score를 사용하는 경우, 모델이 클래스의 확률을 예측하는 방식이 중요합니다. AUC (Area Under the Curve)는 모델이 예측한 확률 값의 순위를 기반으로 합니다. 따라서 확률 값이 필요합니다. 이미 언급하신 roc_auc score는 실제로 모델이 어느 정도의 성능을 보이고 있는지 가늠할 지표가 됩니다. 제출해야 하는 값이 확률 값인지, 아니면 예측된 클래스 값(0 혹은 1)인지는 문제의 요구 사항에 따라 다를 수 있습니다.
해당 문제에 대한 직접적인 답변으로, 작업형 2유형 문제에서 확률 값을 요구하는 경우 predict_proba
함수의 사용이 적절하며, 제출하기 전에 결과값의 형태를 문제의 요구사항에 맞추어 조정할 필요가 있습니다. 예를 들어, 확률 값을 0과 1의 예측값으로 바꿀 필요가 없다면, predict_proba
의 결과를 그대로 사용하면 됩니다.
어떤 모델을 사용하셨는지는 명시되어 있지 않으나, 모델이 반환해야 하는 값이 확률값인 경우 그대로 predict_proba
값을 제출 파일로 만들어야 하며, 이는 모델이 각 클래스에 속할 확률을 얼마나 잘 예측하는지를 평가하는 지표와 일치합니다. 스케일링을 하지 않고 진행한 것과 결과값에 대해 걱정하신 부분은, 스케일링은 모델 학습에 영향을 줄 수 있는 전처리 단계의 하나이기 때문에, 스케일링의 유무가 모델의 확률값 예측에도 영향을 줄 수 있습니다.
roc_auc score가 0.7616으로 나왔다면, 모델이 어느 정도 성능을 내고 있음을 나타냅니다. 다만, 최종적으로 제출해야 하는 값이 확률값인지 아니면 이진 분류 결과인지 확인하고, 문제의 요구사항에 따라 결과를 조정하여 제출해야 합니다.
비슴한 질문에 대한 자세한 설명이 필요하시면, 다음의 답변을 참조해 주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사드립니다!
제가 사용한 모델은 RandomForestClassifier이고
평가지표가 roc_auc_score라서 predict_proba 메서드를 사용했습니다!
이미 predict_proba 메서드를 사용했는데도 결과값이 확률이 아니라 0 혹은 1 이진분류로 나왔다면 원인은 전처리 밖에 없을지 궁금합니다!
네 선생님!
말씀해주신대로 코드 올리려고 다시 작성해봤는데 결과값이 제대로 나와요...ㅜㅜ
제가 validation 돌릴 때는 제대로 작성했는데 test_predict 돌릴때 proba를 계속 안 쓰고 있었나봅니다
봐주셔서 감사합니다..!..