2

http://www.evanmiller.org/how-not-to-sort-by-average-rating.htmlで説明されているウィルソン スコアの式を使用して、評価されたアイテムを並べ替えています。ただし、アイテムの反対票が 1 (賛成票が 0) の場合、反対票が 1000 (賛成票が 0) のアイテムと同じスコア (スコア 0) が返されます。

この欠点を克服するために、負のウィルソンスコアを許可するか、誰かが提案する別の解決策を提案したいと思います。

いずれにせよ、この方程式/関数を変更する方法がわかりません:

def ci_lower_bound(pos, n, confidence):
    if n==0: return 0

    z = 1.96
    phat = 1.0*pos/n

    score = (phat + z*z/(2*n) - z*math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
    return score

ここposで、 は肯定的な評価の数、nは評価の総数confidence、統計的信頼度を表します。

4

2 に答える 2

1

論理的には、スコアリング システムは次の状況に対処する必要があります。

+------------+---------+------------+--------------- -+
| | ポジティブ | ネガティブ | 投票はありますか? | | ウィルソンスコア? | |
+------------+---------+------------+--------------- -+
| | ん | ん | ん | Y, = 0 |
| | よ | よ | よ | よ |
| | よ | ん | よ | よ |
| | ん | よ | よ | ん |
+------------+---------+------------+--------------- -+

お気づきのように、不足している項目は、賛成票が 0 票で、反対票が 0 票を超える場合です。

その時点で正のスコアと負のスコアの両方があるので、負の数の平方根は複素数であることを思い出して、自分の考えに従って、これに対処するために負のウィルソン スコアを作成してみませんか。

複雑さを回避するには、否定的な投票が肯定的であると仮定します。次に、マイナスのスコアが付けられたアイテムの「好き」度を計算し、これに -1 を掛けて、嫌い度を計算します。

import math

def ci_lower_bound(pos, n, neg=0):

    if n == 0:
        return 0

    # Cannot calculate the square-root of a negative number
    if pos == 0:
        votes, use_neg = neg, True
    else:
        votes, use_neg = pos, False


    # Confidence
    z = 1.96

    phat = 1.0 * votes / n

    # Calculate how confident we are that this is bad or good.
    score = (phat + z*z/(2*n) - z * math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)

    # This relationship is defined above.
    # Multiply by -1 to return a negative confidence.
    if use_neg:
        return -1 * score

    return score
于 2012-04-21T14:09:34.900 に答える
1

(wilsonscore, -negative_votes)Python がタプルをソートする方法により、いつでも tuple でソートできます。wilsonscore が同一の場合を除いて、Python は、negative_votes を考慮しません。見る:

>>> sorted([(0,-4000),(1,-4000),(0,-1),(1,-1)])
[(0, -4000), (0, -1), (1, -4000), (1, -1)]

長所: 問題に対する単純な解決策であり、関数を変更する必要はなく、コードを変更する必要はほとんどありません (タプルはソート時に「自然」に動作するため)。

短所: 反対票を追跡する必要があります。

于 2012-04-21T12:26:05.427 に答える