2011-12-01 26 views
4

我正在寫一個具有聲譽組件的電子商務引擎。我希望用戶能夠查看和評價項目,並能評價評價。排名/聲譽算法

根據「最佳」評論對物品進行分類的最佳算法是什麼?它必須根據獲得最佳評論的人的質量評論數量進行排名。我不知道如何將其轉換爲算法。

例如,我需要能夠將具有低聲譽的多個人的5星級的物品與具有高信譽的幾個人中的3星級的物品進行比較。

爲了增加複雜性,一些用戶可能寫了很多評論,其他人評價高/低,其他用戶可能撰寫了很少評論,但被其他用戶評爲非常高。哪種用戶在這種情況下更有信譽?

+1

大多數網站都認爲單一樂譜本質上太不健全,不透明,這讓我感到困惑。相反,你會看到所有的地方,這些項目有'平均評分'和'票數'。然後由用戶決定是否想要在5票「完美」的項目上賭博,或者是'1000'票選'相當好'的項目。 –

+0

謝謝,托馬斯。顯示兩個值是肯定有用的。但是,我仍然需要對搜索結果的單個列表中的項目進行排序。我是否應該從這兩個值中得出分數並將其用於排序(但不用於顯示)? –

回答

11

如果您知道用戶的聲譽,那麼你可能會使用爲每個用戶UserScorethe one that Stackexchange uses

UserScore = Reputation >= 200 ? 0.233 * ln(Reputation-101) - 0.75 : 0 + 1.5 

然後你找到用戶的分數與明星作爲權總結一個項目的價值:

ItemScore = \sum_i UserScore_i * Weight[Star_i] 

其中i是票指數和Weight被涉及的權重數組的星星。例如,對於5星的投票系統,它可以是[-2 -1 0 1 2]。還有一點需要注意的是,如果您希望只有3顆星的物品來到未評估的物品之前,您可以將3顆星的重量更改爲+eps

您可以根據需要更改200和所有其他常數/權重。

+1

一個變體是對一些明星排名進行加權,因爲一星評價應該排在未被查看的項目之下。 – PengOne

+0

ItemScore是不是平均值?否則,具有50個二星評級的項目的評級將高於具有10個五星評級的項目。 –

+0

@JasonBanico如果我們對它們進行平均,那麼與占主導地位的選民的5星級選手相比,擁有5星級選手的選項更重要。 – petrichor

0

我會盡量回答你的問題:

我認爲,關鍵是要加權出不同信譽的人,比如:

一個人以名譽2的投票是3倍的因爲另一個聲譽較低的人的投票權很重。不同聲望的人之間的關係真的取決於您,您希望總體評級取決於信譽低的人的評分。與聲譽較低的人投票相比,聲譽較高的人的投票權重越高,則由於低聲譽投票而導致整體聲譽變化越小。

因此,每個人都會有一個權重,讓我們說w_i,w_j等....然後在所有的評價將全部的加權平均值:從兩個不同的人總評投票的

例如我並且j =(w_i * r_i)+(w_j * r_j)/(w_i + w_j)

其中r_i,r_j分別是人i和人j的評級。

要獲得每個人的權重的價值,你可以舉例說明那個人的星星數量。

一個很好的資源將是以下頁面: http://en.wikipedia.org/wiki/Weighted_mean