본문 바로가기

Learning/Measuring

평가지표

반응형

a. Macro & micro average

image

macro average

  • 클래스 별 f1 score에 가중치를 주지 않습니다.
  • 클래스의 크기에 상관 없이 모든 클래스를 같은 비중으로 다룹니다.
  • image
    • (학교의 각 반 성적)

micro average

  • 모든 클래스의 FP, FN, TP, TN의 총 수를 센 후 precision, recall, f1 score를 수치로 계산합니다.
  • 전체적인 성능을 나타냅니다.
  • image
    • (전체 학생들의 성적)
  • 각 샘플을 똑같이 간주한다면 micro average, 각 클래스를 동일한 비중으로 고려하면 macro average 사

03. Edit distance

두 문자열의 유사도를 판단합니다. 문자열 A를 B로 바꾸기 위해 필요한 연산의 최소 횟수를 계산합니다.

  • 비교할 두 문자가 같으면 : cost(i,j) = cost(i-1, j-1)
  • 비교할 두 문자가 다르면 : cost(i,j) = 1 + min( cost(i-1,j),cost(i,j-1),cost(i-1,j-1) )
def _edit_dist_init(len1, len2):
A = []
for i in range(len1):
    A.append([0] * len2)

# (i,0), (0,j) 채우기
for i in range(len1):
    A[i][0] = i
for j in range(len2):
    A[0][j] = j

return A   

def _edit_dist_step(A, i, j, s1, s2, transpositions=False):  
    c1 = s1[i-1]  
    c2 = s2[j-1]

    a = A[i-1][j] + 1 # s1에서 skip
    b = A[i][j-1] + 1 # s2에서 skip
    c = A[i-1][j-1] + (c1!=c2) # 대체
    d = c+1 # X select

    if transpositions and i>1 and j>1:
        if s1[i-2] == c2 and s2[j-2] == c1:
            d = A[j-2][j-2] + 1

        A[i][j] = min(a,b,c,d)


def edit_distance(s1, s2, transpositions=False):  
    len1 = len(s1)  
    len2 = len(s2)  
    lev = _edit_dist_init(len1 + 1, len2 + 1)


for i in range(len1):
    for j in range(len2):
        _edit_dist_step(lev, i+1, j+1, s1, s2, transpositions=transpositions)
return lev[len1][len2]

04. jaccard distance

두 개의 객체를 집합으로 간주하여 유사성을 측정합니다.

 

def jacc_sim(query, document):  
a = set(query).intersection(set(document))  
b = set(query).union(set(document))  
return len(a)/len(b)

05. smith waterman distance

보통 DNA 서열 검출을 위해 사용합니다.

반응형

'Learning > Measuring' 카테고리의 다른 글

F1 score  (0) 2020.10.11
mAP  (0) 2020.04.12