2012-05-16 58 views
0

我的問題是更多的數學。網站上有一個帖子。用戶可以喜歡並且不喜歡它。並且在帖子下面寫着例如-5不喜歡和+23喜歡。這些值的基礎我想和範圍0-10或(-10-0和0-10)的評級。如何正確使用?如何計算評分?

+0

你究竟想要什麼?請提供一些代碼。 – sarwar026

+0

定義「正確」。 – zmccord

回答

4

這可能不會回答你的問題,因爲你需要[-10,10]之間的評分,但是this blog post描述了給積分和消極評分(在你的情況下,喜歡和不喜歡)評分的最佳方式。

  • (正評級)的簡單方法 - (負面評價),或
  • (正評級)/(總收視率)

不會放棄最佳的效果。

相反,他採用了一種名爲二項式比例置信區間方法。

博客文章的相關部分被複制如下:

正確的解決方案:得分=下界威爾遜的得分置信區間伯努利參數

說什麼:我們需要以平衡正面評級的比例與少量觀察的不確定性。幸運的是,這個數學在1927年由埃德溫·B·威爾遜解決。我們要問的是:鑑於我有收視率,有95%的機會,積極收視的「真實」分數至少是什麼?威爾遜給出了答案。只考慮正面和負面的評級(即不是一家5星級的規模),正面評級的比例下限由下式給出:

formula http://www.evanmiller.org/rating-equation.png

(使用減號的地方說加/減去計算下限)。這裏p是正面評級的觀察分數,zα/ 2是標準正態分佈的(1-α/ 2)分位數,n是評級總數。

在這裏,它是用Ruby再次從博客文章中實現的。

require 'statistics2' 

def ci_lower_bound(pos, n, confidence) 
    if n == 0 
     return 0 
    end 
    z = Statistics2.pnormaldist(1-(1-confidence)/2) 
    phat = 1.0*pos/n 
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n) 
end 
+0

Thanx,有用的鏈接,但它有點難以計算))) – jumancy

+0

有一個Ruby和SQL的實現,所以也許你可以從那裏工作。 – vinaykola

+1

這很棒,我做到了)) – jumancy

2

這聽起來像你想要的東西基本上是個喜歡/不喜歡。我會做0到10,而不是-10到10,因爲這可能會讓人困惑。所以在0到10的範圍內,0將是「全部不喜歡」,而10將是「全部喜歡」

total_votes = num_likes + num_dislikes; 
rating = round(10*num_likes/total_votes); 

而這就是基本上它。

2

這是Shepherd的答案的延伸。

total_votes = num_likes + num_dislikes; 
rating = round(10*num_likes/total_votes); 

這取決於您的應用程序的訪問者數量。比方說,如果你期望大約100個用戶評價你的應用程序。當第一個用戶點擊不喜歡時,我們會根據上述方法將其評爲0。但這在邏輯上是不正確的,因爲我們的樣本非常小,因此它爲零。同樣只有一個積極的 - 我們的應用程序獲得10分。

更好的辦法是給分子和分母添加一個常數值。假設我們的應用程序擁有100位訪問者,則可以安全地假設直到我們得到10次起落時,我們不應該走極端(既不是0也不是10)。所以每個好惡都加5。

num_likes = num_likes + 5; 
num_dislikes = num_dislikes + 5; 
total_votes = num_likes + num_dislikes; 
rating = round(10*(num_likes)/(total_votes)); 
+0

如果不喜歡比喜歡更多,那麼怎麼辦?對於前者,如果我們有8個不喜歡,2個喜歡,我們得到3.5這個表單。這樣對嗎? – jumancy