sıra tabanlı öneri sistemi, Öneri doğruluğunu değerlendirmek için NDCG'yi kullanır. Bununla birlikte, bazen en yüksek öneriyi değerlendirmek için Doğruluk oranı ve hatırlama oranı kullanılır. NDCG yüksek olduğunda, doğruluk oranı yüksek olduğu anlamına mı geliyor? Ama ben bir ListRankMF algoritması çalıştırıyorum, doğruluk oranı yaklaşık% 8 movelens 100k veri kümesinde çok düşük. NDCG ve doğruluk oranı arasındaki ilişki nedir?Sıra tabanlı öneriler NDCG'yi neden kullanıyor?
cevap
NDCG, öneri sisteminin bazı ilgili sonuçları vermesi ve siparişin verilmesi önemlidir. Örneğin, bir çeviri önermek veya bir banka hesabı önermek. İlgili sonuçları kaçırırsak zararlı değildir, ancak iyi bir kullanıcı deneyimi için onları anlamlı bir sırayla istiyoruz.
Geri çağırma sistemi, öneri sisteminin amacı ilgili tüm sonuçları vermesi ve siparişin önemsiz olması durumunda yararlıdır. Örneğin, potansiyel bir tıbbi tanı veya reçete. İlgili sonuçları kaçırırsak zararlı olabilir, çünkü bu doğru teşhis veya tedavi olabilir. Düzen, doktorun tüm olasılıkları okumasını ve uzman kararlarını nihai karar için kullanmasını beklediğimizden dolayı önemli değildir. Bir hastaya (A'dan E'ye) ve tavsiye etmememiz gereken 5 tane (F'den J'ye) doktor önerebileceğimiz 5 ilaç olduğunu varsayalım. Tavsiye sistemimiz A, B, C, D önerilerini çıkarır.
- NDCG = 1.0
- Hatırlama = Bu durumda 0,8
açıkça hatırlamak Elimizden ilacı tavsiye etmedi çünkü (biz geldiğince yapmadım gösterir: Bu bize aşağıdaki değerlendirmeler verir E), NDCG bizi mükemmel önerilerde bulunduğumuza inandırır.
Kitap önermek yerine, NDCG daha uygun olur. Geri çağırma o kadar bilgilendirici değildir çünkü yüzlerce ilgili kitap olabilir, ancak bir kullanıcının okumak için yüzlerce kitabın bir listesini okumasını bekleyemeyiz. NDCG, en azından mümkün olanın bazı anlamlı alt kümelerini önerdiğimizi söylerdi.
- 1. HTTP neden TCP kullanıyor?
- 2. Neden cURL zlib kullanıyor?
- 3. Oracle neden dizgemi kullanıyor?
- 4. neden wsgiref simple_server kullanıyor?
- 5. C# neden örtülü void kullanıyor?
- 6. Neden history.js setInterval (.., 250) kullanıyor?
- 7. ASP.NET MVC Web Uygulamasında Sıra Tabanlı Arkaplan İşleme
- 8. Bu sıra tabanlı oyunda Reader monadını kullanmak doğru mu?
- 9. android sıra tabanlı çok oyunculu özel davet ekranı
- 10. Sıra &
- 11. SearchManager - özel öneriler ekliyorum
- 12. Neden Flask giriş yöntemi 'GET' kullanıyor?
- 13. PLINQ neden sadece iki iş parçacığı kullanıyor?
- 14. Neden GLib bu işlevlerde 'const' kullanıyor?
- 15. Neden PNG kullanıyor ve JPG kullanmamalıyım?
- 16. GCC ve Clang neden cvtss2sd [memory] kullanıyor?
- 17. Git neden kendi Kod üretecini kullanıyor?
- 18. Tüm tuval örnekleri neden ctx kullanıyor?
- 19. PHP: Neden bazı insanlar başlangıçta '_' ismini kullanıyor?
- 20. Kukla ve Şef Ruby'yi neden kullanıyor?
- 21. Neden sınıf başlatıcısı yalnızca = veya {} kullanıyor?
- 22. MySQL çoğaltması neden beş sertifika kullanıyor?
- 23. Neden Forth, ENDIF yerine THEN ... ifadesini kullanıyor?
- 24. Neden mDNS (Bonjour, Avahi, vb) UDP kullanıyor?
- 25. Kabuk çıktısı neden çıktığında sıklıkla "mixed_characters" kullanıyor?
- 26. Julia neden sütun majör kullanıyor? Bu hızlı
- 27. PyYAML neden jeneratörler nesnelerini oluşturmak için kullanıyor?
- 28. MSVC'nin otomatik vektörleştirmesi neden AVX2 kullanıyor?
- 29. XS subs neden const char * kullanıyor?
- 30. Neden çoğu asyncio örneği loop.run_until_complete() kullanıyor?