# 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๋ผ๊ณ ์์ธกํ ๊ฒ๋ค ๊ฐ์ด๋ฐ ์ค์ True์ ๋น์จ
-> Precision์ Precision@k๋ก ํ์ฅ!
-> ๊ทธ๋ ๋ค๋ฉด Precision@k๋?
: ์ถ์ฒํ K๊ฐ ์์ดํ ๊ฐ์ด๋ฐ(์์ธกํ K๊ฐ์ ์์ดํ ๊ฐ์ด๋ฐ) ์ค์ ์ ์ ๊ฐ ๊ด์ฌ์๋ ์์ดํ ์ ๋น์จ
์) ์ฐ๋ฆฌ๊ฐ ์ถ์ฒํ ์์ดํ ๊ฐ์ : K=5
์ถ์ฒํ ์์ดํ ์ค ์ ์ ๊ฐ ๊ด์ฌ์๋ ์์ดํ ๊ฐ์ : 2
Precision@5 = 2/5
[โก Recall@k]
- Recall์ด๋?
: ์ ์ฒด 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
์ฉ์ด๊ฐ ๋ง์์ ์ฒ์ ๊ณต๋ถํ ๋๋ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ๋ง์๋๋ฐ
์ด๋ ๊ฒ ์ ๋ฆฌํด๋๊ณ ๋๋๊น ํจ์ฌ ์ดํด๊ฐ ์ฌ์์ง๋ค์!
๋ง์ ๋์์ด ๋์ จ๊ธธ ๋ฐ๋ผ๋ฉฐ..!
์ค๋๋ ๋
