ML · Collaborative Filtering

Modelių palyginimas

SVD vs NCF — du rekomendacijų algoritmai

MODELIAI
SVD

Truncated Singular Value Decomposition — matricos faktorizacijos metodas. User-Item matricą skaido į latentinius faktorius (50 komponentų). Kiekvienas žaidimas ir vartotojas gauna 50d vektorių, reprezentuojantį paslėptus interesus. Rekomendacijos skaičiuojamos pagal kosinusinį panašumą tarp žaidimų vektorių.

TruncatedSVD scipy sparse log(1+hours) žanro boost +20% 50 komponentų
NCF

Neural Collaborative Filtering — gilus neuroninis tinklas. Vartotojas ir žaidimas koduojami į 64d embeddings, sujungiami ir perduodami per MLP su 3 sluoksniais. Modelis mokosi sudėtingų nelinijinių priklausomybių tarp vartotojų ir žaidimų. Treniruotas 20 epochų su BCELoss.

PyTorch Embedding 64d MLP 3 sluoksniai BCELoss Adam optimizer
METRIKOS — Precision@10 ir Recall@10
Metrikos dar neskaičiuotos. Paleisk src/04_recommend.py.
📊 Kaip interpretuoti

Precision@10 — iš 10 rekomenduotų žaidimų, kiek procentų iš tikrųjų tinka vartotojui. Pvz. 0.30 reiškia kad 3 iš 10 rekomendacijų yra tinkamos.

Recall@10 — kiek procentų visų tinkamų žaidimų pavyko rasti tarp 10 rekomendacijų. Mažas Recall@10 normalus — sunku rasti visus tinkamus žaidimus iš tūkstančių.

SVD paprastai geresnis kai duomenys reti (sparse), nes nereikalauja daug treniravimo. NCF gali būti geresnis su tankiais duomenimis ir sudėtingomis priklausomybėmis.

APIBRĖŽIMAI
Precision@K

Tikslumas — iš K rekomenduotų žaidimų, kiek yra relevantiški. Relevantiškumas apibrėžiamas: du žaidimai laikomi panašiais, jei juos abu žaidė ≥10 bendrų vartotojų.

Precision@K = |relevantiški ∩ rekomenduoti| / K

Recall@K

Pilnumas — iš visų relevantiškų žaidimų, kiek pavyko rasti tarp K rekomendacijų. Visada mažas skaičius, nes relevantiškų žaidimų gali būti šimtai.

Recall@K = |relevantiški ∩ rekomenduoti| / |visi relevantiški|