F1score - BD-SEARCH/MLtutorial GitHub Wiki
01. precision, recall, accuracy
a.์ ์
- TT : ์ค์ ์ ๋ต T, ์คํ ๊ฒฐ๊ณผ T (a)
- TF : ์ค์ ์ ๋ต T, ์คํ ๊ฒฐ๊ณผ F (b)
- FT : ์ค์ ์ ๋ต F, ์คํ ๊ฒฐ๊ณผ T (c)
- FF : ์ค์ ์ ๋ต F, ์คํ ๊ฒฐ๊ณผ F (d)
b.precision
- a/(a+c)
- ์คํ ๊ฒฐ๊ณผ True๋ผ๊ณ ํ๋จ๋ ๊ฒ ์ค์ ์ค์ ์ ๋ต์ด True์ธ ๊ฒ
c.recall
- a/(a+b)
- ์ค์ ์ ๋ต์ด True์ธ ๊ฒ ์ค์ ์คํ ๊ฒฐ๊ณผ๊ฐ True์ธ ๊ฒ
d.accuracy
- (a+d)/(a+b+c+d)
- ์ ์ฒด ๊ฒฐ๊ณผ ์ค์์ ์ ๋ต์ธ ๊ฒ
02. F-measure
- precision๊ณผ recall์ ๋ํ ํ๊ท ์ ๊ฐ์ค์น๋ฅผ ์ฃผ๋ ๊ฒ
a. Macro & micro average
- macro average
- ํด๋์ค ๋ณ f1 score์ ๊ฐ์ค์น๋ฅผ ์ฃผ์ง ์๋๋ค.
- ํด๋์ค์ ํฌ๊ธฐ์ ์๊ด ์์ด ๋ชจ๋ ํด๋์ค๋ฅผ ๊ฐ์ ๋น์ค์ผ๋ก ๋ค๋ฃฌ๋ค
-
- (ํ๊ต์ ๊ฐ ๋ฐ ์ฑ์ )
- micro average
- ๋ชจ๋ ํด๋์ค์ FP, FN, TP, TN์ ์ด ์๋ฅผ ์ผ ํ precision, recall, f1 score๋ฅผ ์์น๋ก ๊ณ์ฐ
- ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ ๋ํ๋ธ๋ค
-
- (์ ์ฒด ํ์๋ค์ ์ฑ์ )
- ๊ฐ ์ํ์ ๋๊ฐ์ด ๊ฐ์ฃผํ๋ค๋ฉด 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 ์์ด ๊ฒ์ถ์ ์ํด ์ฌ์ฉ