1.1_用戶偏好的計算

計算用戶偏好,也即計算前文所述的這些系數。

假設用戶歷史評分文件是一個 m 乘 n 的矩陣R,其中 m 表示用戶的個數。R中某些位置的值為空,意味著對應的用戶與物品之間沒產生過聯系。

首先,對某一用戶A,我們需要計算一下他的平均打分值 p ,后面要用。以電影評分為例,即把他所給出的電影評分值累加,再除以他所評價過的電影數目。如果用戶A對應著矩陣R的第一行,則相當于把矩陣R第一行中的非空值進行累加,再除以非空值的數目。(預告:如果物品數非常多,而用戶A評價過的電影數卻很少,即歷史評分文件對應的矩陣R非常稀疏,在這種矩陣計算過程中我們卻不得不把所有物品給遍歷一次,這樣計算量很大,有什么方法對計算過程進行優(yōu)化嗎?)

其次,計算用戶A對某一屬性的系數,例如屬性①。對所有屬性進行遍歷,就可以得到用戶A的偏好了。我們先看一下對一個屬性的系數是如何計算的。

執(zhí)行對某一屬性對應的系數的計算,還是離不開該用戶對物品的評分數據。以電影評分為例,假設屬性①的取值只能為 0 或 1 ,則我們需要篩選出在該用戶評分過的電影中,屬性①取值為 1 的那些電影,假設數目為 k 。則該用戶對于屬性①的系數為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\frac{1}{k} \sum_{i=1}^k (p_{i} -p)

其中,p_{i} 表示該用戶對篩選出的 k 部電影中的第 i 部的評分。

最后,我們遍歷所有用戶,就得到了所有用戶的偏好矩陣 S 了。S 的維度是 m 乘 v ,v 表示所有屬性的數目。

我們可以寫一個函數來實現這篇文章所述的功能。

思考,倘若某些屬性的取值為連續(xù)數值,而不是 0 和 1 ,那么我們該如何計算這些系數呢?

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容