🏁 λ¨Έμ‹ λŸ¬λ‹ | λ”₯λŸ¬λ‹/μΆ”μ²œμ‹œμŠ€ν…œ

[K-Data x λŸ¬λ‹μŠ€ν‘Όμ¦ˆ] 1-3. μΆ”μ²œ μ‹œμŠ€ν…œμ˜ 평가 μ§€ν‘œ, Offline Test, Online A/B Test

xod22 2022. 1. 13. 23:21
728x90

# Offline Test

- μƒˆλ‘œμš΄ μΆ”μ²œ λͺ¨λΈμ„ κ²€μ¦ν•˜κΈ° μœ„ν•΄ κ°€μž₯ λ¨Όμ € ν•„μš”ν•œ 단계

- μœ μ €λ‘œλΆ€ν„° μˆ˜μ§‘ν•œ 데이터λ₯Ό Train/Valid/Test둜 λ‚˜λˆ„μ–΄ λͺ¨λΈμ˜ μ„±λŠ₯을 평가

=> μΆ”μ²œλͺ¨λΈμ„ κ³ λ„ν™”μ‹œν‚¬ 수 μžˆλ‹€

# Online A/B Test

- μΆ”μ²œμ‹œμŠ€ν…œμ˜ λ³€κ²½ μ „ν›„μ˜ μ„±λŠ₯을 λΉ„κ΅ν•˜λŠ” 것이 x

- λ™μ‹œμ— λŒ€μ‘°κ΅°(A)와 μ‹€ν—˜κ΅°(B)의 μ„±λŠ₯을 평가 (단, κ°™μ€μ‹œκ°„ 및 같은 ν™˜κ²½μ—μ„œ 평가해야함)

- μ‹€μ œ μ„œλΉ„μŠ€λ₯Ό 톡해 μ–»μ–΄μ§€λŠ” κ²°κ³Όλ₯Ό 톡해 μ΅œμ’… μ˜μ‚¬κ²°μ •

=> μ‹œκ°„λ³„λ‘œ μœ μ˜λ―Έν•œ 차이λ₯Ό κΎΈμ€€νžˆ λ‚˜νƒ€λ‚΄λŠ”μ§€


# μΆ”μ²œ μ‹œμŠ€ν…œ 별 ν‰κ°€μ§€ν‘œ

1) λž­ν‚Ή(Ranking)  => 주둜 NDCG@k / Recall@k

: μœ μ €μ—κ²Œ μ ν•©ν•œ μ•„μ΄ν…œ Top K개λ₯Ό μΆ”μ²œ

μœ μ €μ˜ μ•„μ΄ν…œμ— λŒ€ν•œ μ„ ν˜Έλ„λ₯Ό ꡬ할 ν•„μš” 없이 μ†ŒλΉ„μžκ°€ μ„ ν˜Έν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” Top Kλ₯Ό μ„ μ •ν•˜λŠ” 것.

-> ν‰κ°€μ§€ν‘œ : Precision@K, Recall@k, MAP@K, nDCG@K

[β‘  Precision@k]

- Precisionμ΄λž€?

True Positive(TP) : μ‹€μ œ Trueλ₯Ό True라고 예츑 / False Positive : True라고 μ˜ˆμΈ‘ν–ˆμ§€λ§Œ μ‹€μ œλŠ” False

: True라고 μ˜ˆμΈ‘ν•œ 것듀 κ°€μš΄λ° μ‹€μ œ True의 λΉ„μœ¨

 

-> Precision을 Precision@k둜 ν™•μž₯!

-> κ·Έλ ‡λ‹€λ©΄ Precision@kλŠ”?

: μΆ”μ²œν•œ K개 μ•„μ΄ν…œ κ°€μš΄λ°(μ˜ˆμΈ‘ν•œ K개의 μ•„μ΄ν…œ κ°€μš΄λ°) μ‹€μ œ μœ μ €κ°€ κ΄€μ‹¬μžˆλŠ” μ•„μ΄ν…œμ˜ λΉ„μœ¨

 

예) μš°λ¦¬κ°€ μΆ”μ²œν•œ μ•„μ΄ν…œ 개수 : K=5

μΆ”μ²œν•œ μ•„μ΄ν…œ 쀑 μœ μ €κ°€ κ΄€μ‹¬μžˆλŠ” μ•„μ΄ν…œ 개수 : 2

Precision@5 = 2/5

[β‘‘ Recall@k]

- Recallμ΄λž€?

False Negative : μ‹€μ œλ‘œ Trueμ§€λ§Œ False라고 예츑

: 전체 Trueκ°€μš΄λ° True라고 μ˜ˆμΈ‘ν•œ λΉ„μœ¨

 

-> Recall을 Recall@k둜 ν™•μž₯!

-> κ·Έλ ‡λ‹€λ©΄ Recall@kλŠ”?

: μœ μ €κ°€ κ΄€μ‹¬μžˆλŠ” 전체 μ•„μ΄ν…œ(μ‹€μ œλ‘œ κ΄€μ‹¬μžˆλŠ” μ•„μ΄ν…œ) κ°€μš΄λ° μš°λ¦¬κ°€ μΆ”μ²œν•œ μ•„μ΄ν…œμ˜ λΉ„μœ¨(κ΄€μ‹¬μžˆλ‹€κ³  예츑 μ„±κ³΅ν•œ?)

 

예) μš°λ¦¬κ°€ μΆ”μ²œν•œ μ•„μ΄ν…œ 개수 : K=5

μΆ”μ²œν•œ μ•„μ΄ν…œ 쀑 μœ μ €κ°€ κ΄€μ‹¬μžˆλŠ” μ•„μ΄ν…œ 개수 : 2

μœ μ €κ°€ κ΄€μ‹¬μžˆλŠ” μ•„μ΄ν…œμ˜ 전체 개수 : 3

Recall@5 = 2/3

[β‘’ MAP@k]

: Mean Average Precision @k

 

- Average Precison(AP@k) μ΄λž€?

Precision@1λΆ€ν„° Precision@kκΉŒμ§€μ˜ 평균값을 μ˜λ―Έν•¨!

즉 μΆ”μ²œμ„ 1개 보여쀬을 λ•Œ, 2개 λ³΄μ—¬μ€¬μ„λ•Œ ... k개 λ³΄μ—¬μ€¬μ„λ•Œ κΉŒμ§€ Precision의 평균값이닀!!

=> relevantν•œ μ•„μ΄ν…œμ„ 더 높은 μˆœμœ„μ— μΆ”μ²œν•  경우 각각의 Precision값이 λ†’μ•„μ§€λ‹ˆκΉŒ~ μ €μ ˆλ‘œ μ μˆ˜κ°€ μƒμŠΉν•˜κ²Œλ¨~!


- Mean Average Precision(MAP@k)μ΄λž€?

: Average Precision(AP@k)을 ν™•μž₯ν•œ κ²ƒμœΌλ‘œ 

λͺ¨λ“  μœ μ €μ— λŒ€ν•œ Average Precisionκ°’μ˜ 평균이닀..! 즉 μΆ”μ²œμ‹œμŠ€ν…œμ˜ μ„±λŠ₯

 

[β‘£ NDCG@k]

: MAP@k처럼 μΆ”μ²œ μˆœμ„œμ— κ°€μ€‘μΉ˜λ₯Ό 더 많이 두어 μ„±λŠ₯을 ν‰κ°€ν•˜λ©° 1에 κ°€κΉŒμšΈμˆ˜λ‘ μ’‹λ‹€!

 

MAP@k와 NDCG@k의 λ‹€λ₯Έμ  

 

MAP@kλŠ” μœ μ €κ°€ 관심이 μžˆλƒ!의 μ—¬λΆ€λ₯Ό binary(0/1둜 평가)

NDCG@kλŠ” 관련도값을 μ‚¬μš© ! 

-> κ΄€λ ¨λ„κ°’μ΄λž€.. 첫번째둜 λ§žμ·„μ„ λ•Œ 5점 ..λ‘λ²ˆμ§Έλ‘œ λ§žμ·„μ„ λ•Œ 4점...μ΄λŸ°μ‹μœΌλ‘œ κ°€μ€‘μΉ˜λ₯Ό 두어 점수λ₯Ό λ§€κΈ΄λ‹€λŠ” 것!

[β‘€ Hit Rate@k]

- νŠΉμ • μœ μ €κ°€ μ„ ν˜Έν•˜κ±°λ‚˜ ν΄λ¦­ν–ˆλ˜ λͺ¨λ“  Item을 κ°€μ Έμ˜΄!

- κ·Έ μ•„μ΄ν…œλ“€ κ°€μš΄λ° ν•˜λ‚˜μ˜ μ•„μ΄ν…œλ§Œ μ œκ±°ν•¨

- ν•˜λ‚˜μ˜ μ•„μ΄ν…œμ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μ•„μ΄ν…œμ„ κ°€μ§€κ³  μΆ”μ²œ λͺ¨λΈμ„ ν•™μŠ΅ν•œ 뒀에 Top K μΆ”μ²œ 리슀트λ₯Ό μΆ”μΆœ

- Top K μΆ”μ²œ 리슀트 κ°€μš΄λ° μ•žμ„œ μ œκ±°ν•œ ν•˜λ‚˜μ˜ μ•„μ΄ν…œμ΄ λ“€μ–΄μžˆλ‹€λ©΄ Hit(True) / λ“€μ–΄μžˆμ§€ μ•Šλ‹€λ©΄ Hitκ°€ μ•„λ‹ˆλ‹€(False)

 

=> Hit Rate 계산!

=> number of hit user / number of user

 


2) 예츑(Prediction)

: μœ μ €μ˜ μ•„μ΄ν…œμ— λŒ€ν•œ μ„ ν˜Έλ„λ₯Ό μ •ν™•ν•˜κ²Œ μ˜ˆμΈ‘ν•˜λŠ” 것

μ—¬κΈ°μ„œ Explicit Feedback은 μ² μˆ˜κ°€ 아이언맨에 λŒ€ν•΄ 내릴 평점값을 μ˜ˆμΈ‘ν•˜λŠ” 것

Implicit Feedback은 μ˜ν¬κ°€ 아이폰12λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜ ꡬ맀할 ν™•λ₯ κ°’을 예츑

-> ν‰κ°€μ§€ν‘œ : MAE, RMSE, AUC

[MAE&RMSE]

: μ‹€μ œκ°’κ³Ό μ˜ˆμΈ‘κ°’μ˜ 차이λ₯Ό ν•˜λ‚˜μ˜ μ„±λŠ₯μ§€ν‘œλ‘œ ν‘œν˜„ => 값이 μž‘μ„μˆ˜λ‘ μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯이 μ’‹μŒ ! 

 

λŒ€λΆ€λΆ„μ˜ λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ—μ„œ RMSE값을 많이 μ‚¬μš©

 

- MAE(Mean Absolute Error)

- RMSE(Root Mean Square Error)

계산 μ˜ˆμ‹œ ) 

errorλŠ” μ‹€μ œκ°’κ³Ό μ˜ˆμΈ‘κ°’μ˜ 차이!

MAE = (2 + 3 + 1 + 0) / 4 = 1.5

RMSE = sqrt((4 + 9 + 1 + 0) / 4) = 1/87

 


 

μš©μ–΄κ°€ λ§Žμ•„μ„œ 처음 곡뢀할 λ•ŒλŠ” ν—·κ°ˆλ¦¬λŠ” 뢀뢄이 λ§Žμ•˜λŠ”λ°

μ΄λ ‡κ²Œ 정리해놓고 λ‚˜λ‹ˆκΉŒ 훨씬 이해가 μ‰¬μ›Œμ§€λ„€μš”!

λ§Žμ€ 도움이 λ˜μ…¨κΈΈ 바라며..!

 

μ˜€λŠ˜λ„ 끝
728x90