2013-01-16 30 views
0

我有電影的列表,每個以下因素已知計算普及:如何基於一些已知因素

  • 人數是希望看電影的未來
  • 人數已經看過電影
  • 人數已享受的電影是觀看和不喜歡的電影
  • 評論數量上的動畫人
  • 號頁面點擊(直接或從搜索引擎)的電影頁面

的因此,基於以上因素,我正在尋找一種方法來計算普及爲每個電影。在這種情況下是否有任何已知公式或算法來計算流行度值?優選的算法是那些提供更有效的方式來更新每個項目的先前計算的流行度值的算法。

+0

看看netflix的挑戰。分層SVD似乎是解決方案。順便說一句,你只有聚合計數,或者還有個人投票/鏈接/等? – wildplasser

+0

@wildplasser:Netflix的挑戰並不等級電影的普及,它是一個推薦系統 - 它根據他如何排列其他電影以及其他用戶如何排列他們的電影來排列電影對個人的排名。它如何在這裏應用。 :| – amit

+0

@Meysam那麼,有無限的方法來做到這一點,一個簡單的總和可以做到這一點,或者是一個加權總和(給每個組件一個因子)。在做任何特性之前,你應該對每個特性進行規範化(因爲評論的數量可能會大大低於手錶的數量,而且你不希望第一個比第二個小得多)。如果您願意爲電影樣本提供手動評分,則可以使用受監督的機器學習(例如線性迴歸)來解決此問題。 – amit

回答

2

根據每個因素的重要性,基本上有無限的方法來做你的事情。

首先,您需要規範化數據。一種方法是假設每個特徵是distributed normally,並找出每個特徵的標準偏差和平均值。 (你的特徵是觀看電影的人數,喜歡電影的人數,...)。
獲得sd(標準偏差)和mu(平均值)後,您可以使用norm = (value-mu)/sd輕鬆地將每部電影的特徵轉換爲標準格式。

  • 的平均估計器(MU)的簡單平均:sum(x_i)/n
  • 的標準偏差(SD)的估計是sd = sqrt(Sum((x_i - mu)^2)/(n-1))

一旦你歸你的數據,你可以簡單地將該等級定義爲加權和,其中每個特徵將根據其顯着程度得到提升:

a1 * #watched + a2 * #liked + .... 

如果你不知道什麼是體重,但願意手動給一組電影分級,你可以使用監督式學習爲你找到(a1,a2,...,an)linear regression

1

沒有正確的答案,但我認爲我們應該儘量模擬它儘可能接近現實。 讓我們考慮以下幾點: P1=Proportion of people who watched and enjoyed it
P2=Proportion of people who disliked the movie P3=Proportion of people who watched and would like to see again P4=People who will watch it later but haven't seen it yet 的評論數根本分辨不出一部電影有多好,但它可以告訴is.Sure.You如何流行它可以利用的積極的數量和負面評論,如果它可能隔離(可能通過提高票和反對票),或者你可以使用評論數量(C)。

頁面點擊次數通常應該能夠很好地說明電影的受歡迎程度,所以我們應該在我們的算法中給它一個很好的權重。另外,我們應該讓最近的頁面點擊比一年以上的頁面點擊更重要在前三天(N3),上一週(N7),上個月(N30)和上一年(N365)以及其他所有內容(Nrest)中嘗試保留頁面點擊次數。 。

你想出了一個使用我提到的因素的算法。 [嘗試使用Horner規則的加權平均值和變化來快速更新。好運。]