1. ホーム
  2. sorting

5つ星の評価でソートする良い方法は何ですか?

2023-11-14 10:02:28

質問

私は、5つ星システムを使用して、顧客の評価によって製品の束を並べ替えようとしています。私がこれを設定しているサイトは、多くの評価を持っておらず、新しい製品を追加し続けているので、通常、評価の数が少ないいくつかの製品を持っています。

平均星評価を使ってみましたが、評価の数が少ないと、このアルゴリズムは失敗します。

例:5つ星の評価が3つある製品は、5つ星の評価が100つあり、2つ星の評価が2つある製品よりもよく表示されるでしょう。

2番目の製品の方が、評価数が多いため、統計的に信頼性が高く、上位に表示されるはずでは?

どのように解決するのですか?

2015 年以前は、インターネット ムービー データベース (IMDb) は、ランキングに使用する数式を公示していました。 トップ 250 の映画リストを公開していました。引用すると

Top Rated 250 Titles の計算式では、以下のようになります。 真のベイズ推定値 :

weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C

のところ。

  • R = 映画の平均(平均値)
  • v = 映画の投票数
  • m = トップ250に掲載されるために必要な最低投票数(現在は25000票)
  • C = レポート全体の平均得票数 (現在は 7.0)

上位250位までは、一般投票者からの投票のみが考慮されます。

そんなに難しいことではありません。計算式は

rating = (v / (v + m)) * R +
         (m / (v + m)) * C;

というように数学的に単純化することができます。

rating = (R * v + C * m) / (v + m);

変数は

  • R - アイテム自身の評価です。R はアイテムの投票数の平均値です。(例えば、あるアイテムに投票がない場合、そのRは0です。誰かがそれに5つの星をつけた場合、Rは5になります。他の誰かが星を1つ付けたら、R は 3 になり、その平均は [1, 5] . といった具合です)。
  • C - 平均的なアイテムの評価です。現在のものを含む、データベース内のすべてのアイテムの R を見つけて、それらの平均を取ります; これが C です。 (データベース内に 4 つのアイテムがあり、それらの評価が [2, 3, 5, 5] . C はそれらの数値の平均である 3.75 となります)。
  • v - ある項目に対する投票数です。(別の例を挙げると、5人がある項目に投票した場合、vは5です)。
  • m - 調整可能なパラメータです。レーティングに適用される "smoothing" の量は、m に関連する投票数 (v) に基づいています。また、IMDb の m の説明を "リストに載せるために必要な最小の投票数" として誤解しないでください - このシステムは m より少ない投票数のアイテムをランキングすることが完全に可能です。

この式が行うことは、平均を計算する前に、それぞれ C の値を持つ m 個の架空の票を追加することだけです。最初のうちは、データが十分でない (すなわち、投票数が m よりも劇的に少ない) ので、空白は平均的なデータで埋められることになります。しかし、投票が蓄積されると、やがて架空の票は本物の票にかき消されるようになります。

このシステムでは、投票によって評価が乱高下することはありません。むしろ、ある方向に少し揺さぶられるだけなのです。

投票がゼロのときは、虚数票だけが存在し、そのすべてがCである。したがって、各項目の評価はCで始まる。

こちらもご覧ください。

  • A デモ . クリック "解決"。
  • 別の 説明 をご覧ください。
  • An 説明 同様のベイズ星評価システムの説明。