1

私は、ユーザーが特定の主題に関するファイルをアップロードできるようにすることで貢献できる Web サイトを運営しています。現在、私の評価システムは可能な限り最悪です (ファイルのダウンロード数)。これは品質管理の点で非常に不正確であるだけでなく、新しいコンテンツがすぐにトップにリストされるのを妨げます. これが、ユーザーが各アイテムに上/下投票できるように評価システムを変更したい理由です。しかし、これはそのようなアイテムの人気を示す唯一の要因ではありません。古いコンテンツの評価を時間の経過とともに低下させたいと考えています。ダウンロード数を考慮に入れることもできるかもしれませんが、非常に低い割合です。

だから、私の質問は次のとおりです。

  1. 毎日 1 件の新しいアップロードがあると仮定した場合、どの式を提案しますか?
  2. これを php/mysql 環境でどのように実装しますか?

私の問題は、現在downloads、データベース内の行で自分のものを単純に並べ替えていることです。外部 (php) で計算された係数でクエリをソートするにはどうすればよいですか? または、誰かがブラウザでサイトを呼び出すたびに、テーブルの新しい行を評価係数で更新する必要がありますか?

(私はネイティブスピーカーではありませんので、間違いがあればご容赦ください)

4

2 に答える 2

2

私はphpやmysqlに精通していませんが、評価システムに関しては、時間内に物事を湿らせたい場合は、指数関数的減衰を考慮しましたか?頭のてっぺんから、私はおそらく次のようなことをするでしょう

$rating = $downloads * exp(-1*$elapsedTime)

ここでそれを読むことができます http://en.wikipedia.org/wiki/Exponential_decay。たぶん、あなたが結果を弱め始める前に、1週間か1ヶ月か何かの遅れで構築するか、人々は彼らのアップロードをすぐに格下げするでしょう。

于 2012-07-27T18:06:10.690 に答える
1

まず、いずれにせよ、テーブルに少なくとも 1 つの列を追加する必要があります。最善の方法は、、、、を含む別のテーブルを用意するidことupvotesですdownvotesdatetime

投稿(またはアップロード、コメントなど)の鮮度を考慮したい場合、実際の最良の方法は重力パラメーターを使用したウィルソンスコアだと思います。

PHP での Wilson スコアの実装を始めるには、このを確認してください。

次に、これを読んで他のソリューションの長所と短所を理解し、SQL を直接使用する必要があります。
注意:重力は SQL コードでは明示的に詳細に記述されていませんが、PHP コードのおかげで動作させることができるはずです。

より単純でありながら不完全でないものが必要な場合は、Bayesian Averageで確認できます。IMDBは、ベイジアン推定を使用して上位 250を計算します。

独自の統計モデルを実装すると、最初は想像もしていなかった欠点が生じるだけです (平均からかけ離れている、反対票が賛成票よりも重要である、衰退が速すぎるなど)。

最後に、ファイルをアップロードするユーザーではなく、アップロードを直接評価することについて話している。ユーザーに対して同じことをしたい場合は、アップロードの評価からの結果でベイジアン推定を使用する方が簡単です。

主題を乾かすために、StackOverflow だけで読むべきことがたくさんあります。

あなたの旅はここから始まります...

于 2012-07-27T19:16:40.870 に答える