원자력발전소 상태 판단 경진대회

log loss를 줄이는 모형 적합 방향

2020.02.05 01:30 6,052 Views

안녕하세요, 세아아부지입니다.



형편없는 실력이라 리더보드에서는 찾기 어렵지만, log loss에 대해서 정보를 나눠보려고 합니다.


내용이 길고 말이 복잡하지만 관심있으신분들이 계실 것 같아서 글을 써봅니다.




-----------------------------------



이미 잘 설명된 것처럼 log loss는 '1'인 애를 얼마만큼 '1에 가까운 확률'로 잘 예측했는지를 측정합니다.


반대로 말하면 '1'인 애를 '0에 가까운 확률'로 예측했을 때 큰 손실을 입도록 되어있죠.



일반적으로 관심변수 y는 이진형일 때가 많습니다.


0, 1 둘 중 하나고,  그럼 어떤 모형을 쓰던지 상관없이 예측된 확률이 정확히 0이나 1이 되긴 어렵습니다.


그런데 이번처럼 y가 꽤 많은 수준을 가질 때는 (모형에 따라) 예측된 확률이 0이 나올 때가 많습니다.




예를 들어 어떤 하나의 관측치에 대해


  • 첫번째 수준 A일 확률 P(y=A)= 0.99,
  • 두번째 수준 B일 확률 P(y=B)= 0.01,
  • 나머지 수준에 대한 확률이 모두 0,  P(y=C) = P(y=D) = ... = 0

일 때를 생각해보면



실제 이 관측치의 y가 A일 때의 log loss = -log(0.99) = 0.01


실제 이 관측치의 y가 B일 때의 log loss = -log(0.01) = 4.61


인데요, 문제는 실제 이 관측치의 y가 C,.... 일 때 입니다.




예측된 확률이 0이기 때문에 log loss = -log(0) 이 무한대가 나옵니다.


그래서 보통 log loss를 계산할 때는 이 경우의 loss를 정해둘 때가 많습니다.




예를 들어 실제 예측 확률은 0이지만, log loss를 계산할 때는 1e-15, 10의 15승 분의 1을 집어넣고 무한대 대신


-log(1e-15) = 34.5


의 손실을 먹이는 거죠.




-------------------------------------------------



지금의 이 대회에서도 이 경우에 지정된 loss가 있을겁니다. -log(1e-15)일지 혹은 다른 얼마일지는 모르죠.


그럼 어떻게 하면 log loss를 줄일 수 있을까요?



당연히 좋은 모형이 만들어지면 log loss는 작을 수 밖에 없습니다.



그런데 아무리 좋은 모형이라고 해도 실수를 할 수 밖에 없고,


어떤 하나의 관측치에 대한 확률을 0으로 예측해서 틀리게되면 34.5라는 큰 손실을 얻을 수 밖에 없습니다.



100개 중에 97개를 확률 1로 정확히 맞혀도 3개를 확률 0으로 틀리면 log loss의 합은 100이 넘습니다.



-log(1e-15) *3 = 103.6



진짜 아깝죠.






만약 본인의 예측값에 0이 많다면 0 대신 꽤 작은 숫자를 넣어보면 log loss가 좋아 질겁니다.


예를 들어 200개의 수준이 있고


  • A일 확률 P(y=A) =1
  • 나머지 확률 P(y=B) = P(y=C)  = ...= 0


으로 예측된 것을


A일 확률이 0.98, 나머지 199개를 0.0001로 강제로 바꿔보면 log loss가 조금 줄어들 가능성이 있습니다.




위에서처럼 100개의 test 관측치에 대해 동일한 작업을 했다쳐볼게요.



100개 중에 97개를 확률 0.98로 맞히고, 나머지 3개를 확률 0.0001로 틀렸다면 log loss의 합은



-log(0.98)*97 -log(0.0001)*3 = 29.6



으로 100보다 훨씬 줄어듭니다.



-----------------------------------------------------



결론은 아무리 자신있어도 겸손한 확률이 log loss를 낮출 가능성이 높다입니다.


확률을 100%, 0%로 단정 짓는 모형보다 99.99%, 0.01%로 예측하는것이 더 낫다는 것인데요,



일반적으로 모형이 복잡할 수록 과적합이 이뤄지고 확률이 100%, 0%로 극단적인 결과들이 나옵니다.





앞의 예시처럼 직접 확률에 손을 댈 수도 있겠지만,


본인이 만든 모형보다 살짝 덜 복잡한 모형을 만들어서 제출해보시는 것도 괜찮은 시도가 될 거에요.



당연히 모형에 따라서, 혹은 log loss를 기준으로 parameter 튜닝과정을 거쳤다면 결과나 영향은 다를 수 있습니다.





1주 남았네요. 저는 글렀습니다. 먼저 가세요.

로그인이 필요합니다
0 / 1000
당쇠
2020.02.05 08:54

감사합니다. 잘 배웠습니다.

safe원자ya
2020.02.07 07:46

감사합니다!

Tokiri
2020.04.26 07:10

이해하는데 도움이 많이 되었습니다. 감사합니다!