0

トレンドのトピックを見つけるために、標準スコアと移動平均を組み合わせて使用​​します。

z-score = ([current trend] - [average historic trends]) / [standard deviation of historic trends]

(どうもありがとう、ニクスズ)

今まで、私は次のようにしています:

いつでも、歴史的な傾向については、24 時間前にさかのぼります。現在、1 月 12 日午後 3 時 45 分があるとします。

current_trend = ヒット数 [1 月 11 日 3:45 - 1 月 12 日 3:45]

history_trends = ヒット数 [1 月 10 日 3:45 - 1 月 11 日 3:45] + ヒット数 [1 月 9 日 3:45 - 1 月 10 日 3:45] + ヒット数 [1 月 8 日 3:45 - 1 月 9 日 3: 45] + ...

しかし、これは本当に適切ですか?いつも0時から始めたほうがいいんじゃない?たとえば、同じデータ (午後 3 時 45 分) の場合は次のようになります。

current_trend = ヒット数 [1 月 11 日 0:00 - 1 月 12 日 0:00]

history_trends = ヒット数 [1 月 10 日 0:00 - 1 月 11 日 0:00] + ヒット数 [1 月 9 日 0:00 - 1 月 10 日 0:00] + ヒット数 [1 月 9 日 0:00 - 1 月 9 日 0:00: 0] + ...

きっと結果は違うと思います。しかし、どのアプローチがより良い結果をもたらすでしょうか?

あなたが私の質問を理解し、私を助けてくれることを願っています。:) 前もって感謝します!

4

1 に答える 1

1

現在の実装で見られる問題は、23 時間前にホットだったトピックが現在のランキングに影響を与えていることだと思います。新しく提案された実装で私が目にする問題は、真夜中にスレートをきれいに拭いているため、昨夜遅くにホットだったトピックが翌朝にはホットに見えないことです (ただし、ホットになるはずです)。

トピックの話題性が年齢とともに減衰する Digg スタイルのアルゴリズムの実装を検討することをお勧めします。これを行うには、過去 24 時間の期間ごとに 1 時間あたりのヒット数をカウントし、各期間スコアをその期間が何時間前に発生したかで割ります。24 ピリオドを合計してスコアを取得します。

辛さ = (スコア 24 / 24) + (スコア 23 / 23) + ... + (スコア 2 / 2) + スコア 1

ここで、score24 は、24 時間前に発生した 1 時間の間にトピックが獲得した「ヒット」の数です (正確なヒット数ではないかもしれませんが、その時間の正規化されたスコアです)。

このように、24 時間前に話題だったトピックは引き続きアルゴリズムでカウントされますが、1 時間前に話題だったトピックほど重くはなりません。

于 2009-06-16T20:10:18.953 に答える