0

私はこのデータを持っています:

Game 1: 7.0/10.0, Reviewed: 1000 times
Game 2: 7.5/10.0, Reviewed: 3000 times
Game 3: 8.9/10.0, Reviewed: 140,000 times
Game 4: 10.0/10.0 Reviewed: 5 times
.
.
. 

このデータを操作して、各評価がレビューされた回数を反映するようにしたいと考えています。

たとえば、ゲーム 3 はゲーム 4 よりも少し重くする必要があります。また、ゲーム 2 の 7 はゲーム 1 の 7 よりも重み付けする必要があります。

このスケーリングを行う適切な機能はありますか? そんな風に

ScaledGameRating = OldGameRating * (何らかの指数関数?)

4

3 に答える 3

1

単純に平均スコアを正規化し (つまり、スコア間隔の中間点である 5 を引いて)、レビュー数を掛けてみてはどうでしょうか? これは、レビューの数に応じて、肯定的または否定的なスコアに重みを付けます。

このアプローチを使用すると、4 つのゲームで次の値が得られます。

Game 1:     2,000  (7-5)*1000
Game 2:     7,500  (7.5-5)*3000
Game 3:   546,000  (8.9-5)*140000
Game 4:        25  (10-5)*5

正規化は、否定的なレビューが多いゲームでうまく機能します。これは、否定的なレビュー (<5) が多いゲームは、肯定的なレビュー (>5) が少ないゲームに勝てないためです。正規化せずに絶対スコアを使用すると、そうはなりません。

于 2012-12-06T04:57:45.993 に答える
0

この問題に対する私の見方は異なります。レビュー数が少ないかどうかを考慮すると、残りのレビューは不明であり、1から10の間のどこかにある可能性があります。したがって、欠落している範囲全体にランダムな分布を行い、最大レビュー母集団全体の平均を見つけることができます。

max_freq = max(rating, key = itemgetter(1))[-1]
>>> for r,f in rating:
    missing = max_freq - f
    actual_rating = r
    if missing:
        actual_rating = sum(randint(1,10) for e in range(missing))/ (10.0*missing)
    print "Original Rating {}, Scaled Rating {}".format(r, actual_rating)


Original Rating 0.7, Scaled Rating 0.550225179856
Original Rating 0.75, Scaled Rating 0.550952554745
Original Rating 0.89, Scaled Rating 0.89
Original Rating 1, Scaled Rating 0.54975249116)


Original Rating 0.7, Scaled Rating 0.550576978417
Original Rating 0.75, Scaled Rating 0.549582481752
Original Rating 0.89, Scaled Rating 0.89
Original Rating 1, Scaled Rating 0.550458230651
于 2012-12-06T05:34:45.847 に答える
0

できるよ :

総レビューを検索

10 点満点中の評価の場合、ゲーム x 評価を取得できます
: ( (ゲーム x レビュー回数) / (総レビュー数) ) * 10

10 点満点中の評価が表示されます。これは、現在の総ゲーム数でレビューされた特定のゲームの重量です。

于 2012-12-06T05:00:58.477 に答える