2010-06-09 21 views
3

我有一些網頁在網站上,我必須創建一個基於「流行度」/「活動」的排序人氣的公式? (基於「喜歡它」,「評論」,「意見」)

我有使用有:

  • 欣賞到網頁頁面上進行
  • 評論(有在底部的形式,其中的用途可以做出評論)到「喜歡」圖標
  • 取得
  • 點擊

是否有什麼標準的流行公式是什麼? (如果沒有意見也很好)

(起初我以爲的看法+ 10 *評論+ 10 * likeit)

+0

你如何評價積極評價VS負面評論? 「喜歡」與評論一樣重要嗎? – 2010-06-09 07:20:43

+0

我們不評估正面與負面評論。是否「喜歡」與評論一樣重要是我拋出的東西。我非常靈活。 (也許「最活躍」可能比「最受歡迎」更好) – paullb 2010-06-09 07:25:00

回答

2

有這個沒有標準公式(怎麼可能有?)

你有什麼看起來像一個相當正常的解決方案,並可能會工作得很好。當然,你應該玩弄10年代來找到適合你需求的價值。

根據您的要求,您可能還需要添加一個時間因素(即-X每週點數),以便舊的頁面不太受歡迎。或者,您可以將您的「網頁瀏覽量」更改爲「上個月的網頁瀏覽量」。再次,這取決於你的需求,它可能不相關。

2

你可以做這樣的事情是什麼YouTube那樣 - 只是有它每類最大數排序。例如 - 最受歡迎,最受歡迎的評論。在每個類別中,不同的頁面可能首先出現,儘管排名可能是相關的。如果你只需要一個排名,那麼你將不得不提出一個類型的公式,最好通過分析你已經擁有的一堆數據並根據經驗確定什麼應該計算爲好/壞,然後向後擬合一個適合你的決定的等式。

你甚至可以嘗試一種機器學習方法來「學習」如何在你的示例公式中將這些數字組合起來的好權重。手動操作也可能不會太難。

+0

感謝這個想法,您提出的選項已經是結果列表中的選項。最終的「整體流行度」是我想要在這裏得到的。 – paullb 2010-06-09 08:12:03

0

我會評價超過'喜歡它的內容如果邀請討論。如果只是陳述事實,評論等數量似乎可以(雖然10是有點太多,我認爲...)

訪問是否考慮到用戶花費在某種程度上的時間?您也可以使用它,因爲2秒視圖意味着少於3分鐘。

1

我用,

(C*comments + L*likeit)*100/views 

,你必須使用C和L這取決於你是多麼尊重每個屬性。 我使用C = 1和L = 1。

這給你產生積極行爲的視圖的百分比,使 百分比更高的項目成爲最受歡迎的項目。 我喜歡這個,因爲它可以使新產品開始非常受歡迎,首先展示並獲得更多的觀點,從而不再流行(或更多),直到穩定。

無論如何, 我希望它有幫助。 PS:它會在沒有「* 100」的情況下工作,但我喜歡百分比。

1

居然有一個公認的最好的方式來計算的:
http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

您可能需要插入前,請結合「喜歡」和「意見」爲單一的分數,分配自己的加權係數與每個,作爲「正面投票」價值進入公式。

從上面的鏈接:

得分=下界威爾遜的得分置信區間爲 伯努利參數

我們需要積極的收視率的比例與 平衡少數的不確定性的觀察。幸運的是,這個數學計算是在1927年由Edwin B. Wilson制定的。我們想要 問的是:鑑於我的收視率,有95%的機會認爲正面收視率的「真實」比例至少是什麼? Wilson給出了 的答案。只考慮正面和負面的評級(即不是 5星級的規模),下正面評級 的比例勢必由下式給出: enter image description here

(使用減號的地方說加/減,計算下界。) 這裏觀察到陽性評分的分數,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 

pos爲正評分數量,n是 的評分的總數量,以及置信度是指統計學置信水平: 挑0.95有95%的機會,你的下限是正確的,0.975 有97.5%的機會等等。這個函數的Z分數從來沒有 的變化,所以如果你沒有一個統計軟件包方便或如果 性能是一個問題你總是可以在這裏爲硬編碼一個值。 (使用1.96 0.95的置信水平)。

同樣的公式作爲一個SQL查詢:

SELECT widget_id, ((positive + 1.9208)/(positive + negative) - 
        1.96 * SQRT((positive * negative)/(positive + negative) + 0.9604)/
          (positive + negative))/(1 + 3.8416/(positive + negative)) 
     AS ci_lower_bound FROM widgets WHERE positive + negative > 0 
     ORDER BY ci_lower_bound DESC;