2

バックグラウンド;

リスナーのフィードバックに基づいてオーディオのスコアを計算する方法を探しています。ユーザーはトラックを聴くたびに、好きかどうか、単純な「はい」または「いいえ」で投票する必要があります。次に、各トラックには、賛成票と反対票の数に基づいてスコアが付けられます。

さらに、各投票の値を 31 日間にわたって一様に減衰させたいので、この時間が経過するとその値は 0 になり、全体の合計スコアには寄与しません。

reddit とハッカー ニュースのランキング アルゴリズムに基づいた多くの議論を見つけましたが、これらは個々の投票自体ではなく、合計スコアを低下させるようです。投票が最初に行われた時期に基づいて、各投票の減衰量は異なります。

誰かが見る資料を手伝ったり、勧めたりできますか?

ありがとう

4

2 に答える 2

1

劣化に対してどのような加速が必要ですか。実装が簡単なため、一般的なのは対数です。好きな場合は 1 点、嫌いな場合は -1 点を付けます。次に、好き嫌いを合計するときに、投票からの日数で割ります。1 日目には、投票の絶対値は 1 になります。2 日目には、1/2 になります。3 日目には 1/3 の価値があり、31 日目には 1/31 (0.03) の価値があります。

対数劣化の問題は、非常に急速に低下することです。log(11-d) を乗算するなど、他の多くの方法を使用できます。d=1 は 1 日目、2 は 2 日目などです。11 日間の劣化のみが許容されます。log(31-d) は 31 日を許容します。log(0) または log(-x) を実行しようとしないことを確認する必要があります。

このモデル全体のもう 1 つの問題は、古い投票しかないものをどのように処理するかということです。好きなものしかないが、すべての好きなものが古い場合はどうなりますか? いいねが全部下がってしまったので、あまりいいねされていないものとして登録します。

于 2013-03-08T20:01:37.910 に答える
1

「はい」= 1.0 および「いいえ」= 0.0 としてモデル化できます。すると、投じてから n 日目の票の値 = (31-n)/31 となります。n > 31 の場合はこれをさらに条件付けしてから、0 に設定します。これがあなたの質問に答えてくれることを願っています。

于 2013-03-08T19:56:46.473 に答える