쭉쭉, 미디엄 글을 옮겨와보쟈
지난 포스팅에서는 회귀모델 평가 지표들에 대해 얘기했었어요! 예측모델에 대해서 말해보았으니 당연히 분류모델 평가 지표들에 대해서도 설명해야겠죠?ㅎㅅㅎ
분류모델 평가지표를 살펴보기 전, 분류모델에 대해 잠깐 설명하고 갈게요! 예측모델은 학습/테스트를 거쳐 연속형 변수를 예측하는 데에 목적을 두고있다면, 분류모델은 말 그대로 어떤 대상에 대해 Positive인지, Negative인지 분류하는 모델이에요! 그래서
전 악필이라고 미리 말씀 드렸습니다….
이런 표를 하나 알고가셔야 합니다! 총 4가지의 경우로 나누어지는데요, 실제도 Positive, 예측도 Positive인 True Positive인, 간단히 TP로 부르는 친구가 있구요, 실제는 Negative인데 Positive로 예측한 False Positive, 간단히 FP로 부르는 친구가 있습니당. 또 실제는 Positive인데 Negative로 예측한 False Negative, 간단히 FN이라고 부르는 친구, 마지막으로 실제도 Negative이고 예측도 Negative인 True Negative, 간단히 TN이라고 부르는 친구가 있습니다! 영어에 수학에..총체적 난국이죠? 하지만 우린 할 수 있어요^_^
여기서 우리는 FP를 1종 오류, FN을 2종 오류라고 해요! 뭔가 익숙하다 싶으시죠? 확률과 통계를 배우신 분이라면 익숙하실거에요! 아마 귀무가설을 기각..어쩌구..하며 배우셨을겁니다!
자, 그럼 조금 가벼운 마음으로 평가 지표를 알아보러 가볼까요?
1. Accuracy
Accuracy는 정확도라고도 합니다! 가장 간단하고 직관적인 지표로, 계산도 정말 쉬워요. 예측을 성공한 True Positive와 True Negative 수를, 전체 예측 수로 나눠주면 돼요! 만약 10번의 예측에서 2번의 TP, 5번의 TN으로 예측을 성공 했다면 0.7의 정확도를 가진다고 말할 수 있겠죠?
그냥 다 더해서 나눠버렷!
하지만 정확도의 한계는, Negative나 Positive만 예측하는 모델에 대해서 신뢰할만한 평가를 할 수 없다는 것에 있어요. 이게 무슨 말인지, 예를 들어볼게요!
경기에 출전한 A라는 선수의 득점 여부에 대해 예측하는 모델을 만든다고 해볼게요. 이 모델은 무조건 ‘득점을 못한다.’ 라는 예측만 할 수 있는 모델이에요. 그런데 이 A라는 선수의 포지션이 사실 골키퍼라서, 사실상 대부분의 경기에서 득점을 할 수 없는 상황인 경우, 이 모델은 굉장히 높은 정확도를 가지게 되겠죠? 만약 이 선수가 득점을 하더라도, Negative만 예측하는 모델이기 때문에 이 경우는 예측하지 못하구요. 이런 한계점을 보완해주기 위한 지표가 다음에 나올 Recall 입니다!
2. Recall
Recall은 재현율이라고 하고, 실제 Positive인데 예측도 Positive인 경우를 실제 Positive인 경우로 나눠준 값이에요!
앞선 A라는 선수의 득점여부에 대해 ‘득점을 못한다.’ 라고 예측하는 모델을 만들었었죠. 이 경우 A라는 선수가 37경기에서 어쩌다보니 2골을 넣었다고 할 때 정확도를 구하면 35/37, 약 0.95가 되겠네요. 하지만 재현율을 구하면, 0이 되겠죠?
하지만 이 재현율도 한계가 있는데요, Positive인 경우만 대상으로 계산하기 때문에 무조건 Positive로 예측하는 모델에 대해서 신뢰할만한 평가를 내릴 수 없다는 점이에요! 또 예를 들어볼까요? 이번엔 손흥민 선수의 선발출장을 예측하는 모델을 만든다고 해볼게요. 그런데 이 모델은 무조건 ‘선발출장 한다.’ 라는 예측만 할 수 있는 모델이에요. 하지만 손흥민 선수는 현재 토트넘의 주축 선수이기 때문에, 당연히 선발출장을 하는 경우가 많겠죠? 이번 시즌을 기준으로 봤을 때 38라운드의 경기 중, 출전하지 않은 경기 1경기와 교체출전 1경기를 제외하고 모두 선발출장을 했는데, 그럼 이 모델은 36/36, 1의 재현율을 갖게됩니다! 굉장히…신뢰할 수가 없죠? 그래서 이런 경우, 알고리즘에 결함이 있음을 나타낼 수 있는 지표가 있습니다!
3. Precision
Precision은 정밀도라고 하고, 재현율을 약간 변형시켜 만든 지표에요!
재현율과는 분모만 약간 다르죠! 재현율은 실제 Positive인데 예측도 Positive인 경우를 실제 Positive인 경우로 나눠준 값이라면, 정밀도는 실제 Positive인데 예측도 Positive인 경우를 Positive로 예측한 모든 경우로 나눠준 값입니다. 앞의 예시를 또 사용해보면, 38경기 중 36경기를 선발출장한 손흥민 선수에 대한 모델의 정밀도는 약 0.95가 됩니다. 여전히 높긴 하지만, 재현율 보다는 조금 하락한 모습을 보이고 있어요. 재현율과 정밀도의 관계를 다시 한 번 표로 확인해볼까요?
실제 값이 Positive인 경우를 대상으로 하는 재현율과, 예측 값이 Positive인 경우를 대상으로 하는 정밀도! 같은듯 다른 두 지표를 이제 아시겠죠 ;) 이렇게 긴밀한 관계를 가지고 있는 두 값은, 반대되는 성질을 가지고 있어서 재현율이 상승하면 정밀도가 하락하고, 정밀도가 상승하면 재현율이 하락하는 모습을 보여줍니다. 그래서 다음으로는 이 두가지 지표를 모두 사용한 F1 score를 알아볼거에요!
4. F1 score
F1 score는 반대되는 성질을 가지고 있는 재현율과 정밀도를 조화평균으로 계산한 지표입니다! 조화평균, 다들 들어보셨겠죠? 조화..난..네가 조화🌸 이거 아닙니다
제 기억에 고등수학(하) 에 나왔던 걸로 기억하는데…맞을까요?
네, 산술기하 평균에서 함께 배우던 조화평균 맞습니다! 물론 모의고사 문제에는 아마 산술기하 평균이 더 많이 나왔을거에요. (feat.수학 강사 짬바)
아무튼, 이 조화평균에 재현율과 정밀도를 넣어서 계산해보면 다음과 같습니다.
재현율 곱하기 정밀도 곱하기 2 한 값을, 재현율 더하기 정밀도 한 값으로 나눠주는 계산이에요! 두 지표를 균형있게 반영하여, 모델의 성능이 좋지 않다는 것을 확인하기 위해서죠. 예를 들어, 재현율이 0.9, 정밀도가 0.1 인 모델이 있을 때, 산술평균으로 구한다면 0.5로 절반 정도는 맞히는 모델인 것 처럼 보이지만, 조화평균으로 구하면 0.18로 좋지 않은 모델이라는 것을 알 수 있어요!
5. ROC곡선, AUC
마지막으로 ROC곡선과 AUC값을 소개하고 마칠게요! 이 친구들은 그림으로 보는게 더 쉬울 것 같으니, 그림을 첨부합니당!
즐거운 그림공부~
ROC곡선은, Receiver Operating Characteristic 의 약자로, 쉽게 말해서 실제 Positive중 Positive로 예측한 비율과, 실제 Negative중 Positive로 예측한 비율의 관계를 그래프로 나타낸 것이에요! 가운데의 정비례 직선 그래프를 기준으로, 이 그래프와 멀어지는 곡선 그래프일수록 좋은 모델이라고 말할 수 있어요.
또 AUC는, Area Under Curve의 약자로, ROC곡선 아래의 면적을 말하는 값이에요. ROC곡선이 직선 그래프에서부터 멀어지면 멀어질 수록 좋은 모델이라고 했기 때문에, AUC도 크면 클수록, 1에 가까우면 가까울수록 좋은 모델이라고 할 수 있습니다! 물론 계산은 컴퓨터가 해줄테지만, 곡선 아래의 면적은 적분을 통해 구해주시면 됩니다 ;)
오늘도 이렇게 총 5개의 분류모델 평가지표를 알아보았는데요, 오늘은 그림도 많고 계산도 어렵지 않아서 비교적 재미있지 않으셨을지, 살짝 기대해봅니다ㅎㅎ
저희 연구팀은 분류모델과 회귀모델을 모두 연구하고 있기 때문에, 앞으로도 더욱 정확한 모델을 만들기 위해 노력할거에요! 오늘도 긴 글 읽으시느라 수고 많으셨고, 금방 또 봐요 우리😉
'Dev > python' 카테고리의 다른 글
싸늘하다...가슴에 성적표가 날아와 꽂힌다...한 경기씩 채점하며 지금까지의 적중률을 계산해봅시다! (0) | 2021.10.27 |
---|---|
안녕하세요? 그 저기 데이터 좀 쓸게요(총총총..KBO 데이터 크롤링 해보기! (0) | 2021.10.27 |
느슨해진 모델링에 긴장감을 주는 APScheduler와 텔레그램봇 (0) | 2021.10.27 |
아무도 궁금해하지 않았지만 설명하는 회귀모델 평가지표들 (0) | 2021.10.27 |
pycaret, 같이 해볼까요? (0) | 2021.10.27 |