PHP / MySQL - "Top Rated" için algoritması

2 Cevap php

Yani sadece bir yıldız derecelendirme sistemi yaptırdığı ve "En İyi" ürün listelemek için bir algoritma ile gelip çalışıyorum. Basitlik için, burada sütunlar şunlardır:

item_name
average_rating (a decimal from 1 to 5)
num_votes

Ben oy ve oylaması sayısı arasındaki "tatlı nokta" belirlemek için çalışıyorum. Örneğin ...

  • (4.6 / 20 oy) oy alan bir öğe bulunuyor (5.0 / 2 oy) bir öğe daha listesinde yüksek olmalıdır
  • (2.5 / 100 oy) nominal bir öğe (4.5 / 2 oy) var bir madde altında olmalıdır

Yani diğer bir deyişle, num_votes "Top" ne bir faktör oynar.

Herkes bu "tatlı nokta" belirlenmesi oldukça iyi bir algoritma biliyor?

Şimdiden teşekkürler.

2 Cevap

Burada başka, istatistiksel ses iyi bir yoldur: http://www.thebroth.com/blog/118/bayesian-rating

Soru 4.6/20 5,0 / 2 den puan edilecektir ne kadar yüksek olduğunu ...

En az x oy yok dikkate ürün almak için değil bir fikir.

Başka bir fikir "orta" oyu ile doldurmaktır. 10votes az olacaktır karar. 5.0 / 2 2.5 8 sanal oyu ile doldurulmalıdır

5,0 / 2 5.0 ile 2 oy demektir, 8 eklemek 2.5 ile 30/10 alırsınız -> 3.0 ;)

Şimdi, bir öğenin en az olacaktır kaç oy karar vermek zorunda. Zaten asgari oy sahip olanlar için, doğrudan bir Comparation yapılacaktır.

4.5/20 > 4.4/100
5.0/2  < 3.1/20  (as 5.0/2 is, as we calculated, 3.0/10)