문장 생성의 성능평가 지표1 - precision and recall, F-score

1. precision and recall

 

translation 후에 생성된 문장이 정확한지 평가할 필요가 있다.

 

기본적으로 단어를 생성하는 방법은 target 각 단어별 실제 정답과의 softmax loss가 최소화되게 만든다.

 

test data에 대해서도 예측된 단어와 정답인 단어의 softmax loss로 분류 정확도를 계산한다.

 

이런 논리에 기반하여 정답문장과 예측문장사이 각 단어별 matching count로 정확도를 평가하는 방법을 생각할 수 있다.

 

 

 

I love you라는 정답문장을 출력해야하는데 oh I love you를 출력했다고한다면 각 matching count=0이니까 정확도는 0%이다.

 

그런데 크게 떨어지는 번역품질이라고 보기 어렵다 나쁘지 않은 번역..

 

그러니까 0%라고 보기 어렵다.. 이거임

 

따라서 번역의 정확도는 전체적인 관점에서 비교할필요가 있다.

 

 

 

precision은 맞춘 단어의 개수를 prediction 문장의 단어 개수로 나눈것이다.

 

recall은 맞춘 단어의 개수를 truth 문장 단어 개수로 나눈 것이다.

 

 

 

 

매칭된 단어 수는 7개이고 정답문장의 단어 수는 10개니까 recall은 7/10이고 번역문장의 단어 수는 9개니까 precision은 7/9이다.

 

precision은 직관적으로 예측 결과가 노출되었을때 그것이 실질적으로 어느정도로 정확한지 느껴지는 정도라고 생각할 수 있다.

 

구글에 키워드 검색하면 나오는 결과가 어느정도 내가 생각한 키워드들이 어느정도 나오면 꽤 만족하는데 그러한 정도가 precision

 

recall은 검색시에 진짜 문서가 얼마나 나왔을까?인데 말로하기 참 어렵다

 

 

 

아비터의 recall은 원하는 유닛을 자기 위치로 가지고오는 것인데

 

가지고와야할 드라군이 10마리있다면 recall이 모두 가져오면 좋지만 반드시 그렇지도 않잖아

 

7마리 가져왔다면 recall이 70%정도다 이거지 느낌적으로는 좋은 예시다...

 

 

2. F-measure

 

precision과 recall은 보면 알겠지만 기준이 다르다.

 

precision은 예측 문장을 기준으로 정확도를 계산하고 싶은 것이고 recall은 실제 정답 문장을 기준으로 정확도를 계산한 것이다.

 

이런 지표를 합쳐서 하나의 지표로 사용하고 싶은데 평균이 가장 단순하다.

 

평균은 산술평균, 기하평균, 조화평균이 있다.

 

산술평균은 두 값의 정확히 중간을 채택하는 것으로 모든 요소의 합을 요소의 수로 나눈 것이다.

 

 

 

 

단순히 산술평균을 구하는 것보다 사실 recall과 precision중 의미있다고 생각하는 부분이 사람마다 다를 것이다.

 

precision을 중시하는 사람이 있을 수 있고 recall을 중시하는 사람이 있을 수도 있고

 

기하평균은 모든 n개의 요소의 곱을 n제곱근 한 것이다. 보통 상승률,하락률 등 비율계산에 자주 쓰인다.

 

조화평균은 구성 성분들의 역수의 산술평균의 역수이다.

 

모든 변량이 양수일 때 산술평균은 기하평균보다 크거나 같고 기하평균은 조화평균보다 크거나 같다.

 

위 사실로부터 기하학적으로 두 점의 내분의 관점에서 본다면

 

 

 

 

F-measure는 recall과 precision의 조화평균으로 정의한다.

 

 

 

단순히 recall과 precision의 산술평균으로 종합적인 지표를 만드는 것보다

 

recall이나 precision중 원하는 부분에 비중을 두어 계산한 평균을 하나의 종합적인 평가지표로 사용하겠다.

 

조화평균은 기하학적으로 그림과같다.

 

수직선상에서 그림이 좀 아쉽다… 조화평균은 왼쪽에 있는게 적절한데

 

 

기하학적으로 F-measure는 recall과 precision중 의미있는 부분에 가중치를 두어 계산하는 것이다.

 

큰 값인 recall의 비중을 줄이고 작은 값인 precision에 비중을 주는 평균…

 

 

 

주의할점은 precision 과 recall은 누가 큰지는 모르기때문에 항상 precision에 비중을 두는 것은 아니다.

 

precision이나 recall 둘중 하나의 값에 더 큰 비중을 둬서 평균을 계산하겠다는 것이 f-measure

 

근데 어느 것에 비중을 의도적으로 줄수있는 것은 아님.. 그러기위해선 다양한 f-score를 쓰겠지?? 아마?

 

 

TAGS.

Comments