丁勇
(云南師范大學 文理學院,云南 昆明 650228)
隨著各類網絡軟件的開發,促進了信息數量的大幅增加。為了在大量網絡信息中獲取自己所需的內容,需要對這些信息進行快速處理,從中提煉出滿足自身需求的信息數據,這就要求開發更加高效的信息服務技術。如果因為信息量過大而導致信息收集困難時,便會出現“信息過載”的問題,反而降低了信息利用率[1-3]。為了滿足人們的信息收集需求,通常會在智能設備上安裝搜索引擎進行信息檢索,從而有效克服信息過載的情況,能夠實現對互聯網信息的快速收集、分類,并將這些數據存入到網頁中,便于用戶進行查詢,之后根據用戶的實際搜索請求將結果傳輸至終端界面[4-5]。由于搜索引擎可以對大量的數據信息先做好分類,此時用戶只需將搜索信息的關鍵字輸入后便可以從系統中檢索出精確匹配詞條的內容,并根據匹配度的高低顯示搜索結果,確保用戶可以更加高效地查詢到所需的信息內容。而進行實際應用的過程中,搜索引擎檢索信息量大,因此還需用戶花費較多時間進行信息篩選[6-7]。
隨機離散馬爾可夫決策過程(MDP)是一種動態規劃的方法,此方法類似于強化學習試錯迭代過程,雖然只通過強化學習的方式對馬爾可夫決策過程進行求解,仍然使其成為當前強化學習理論的一個重要框架[8-11]。Yin設計了Q-learning,促進了強化學習方式的進一步推廣[12]。采用Q-learning可以實現在無回報函數與狀態轉換函數的條件下也能夠求解得到最佳的動作策略[13]。本文在前人研究的基礎上,設計了一種包含了時間影響因素的SVDPP算法,并把該關系映射至馬爾可夫決策過程,再把時間影響添加至推薦算法SVDPP模型內,由此獲得包含了時間戳參數的RL-TSVDPP優化模型。

從原始數據集中提取的部分數據如表1所示。

表1 原始數據集部分數據
其中,最后一列屬于時間戳,對其格式進行適當轉換可以獲得日期結果,例如可以將20101216182630轉變為2010-12-16,18:26:30的時間參數,而以數字形式則更加便于對比。根據時間戳對用戶-電影-評分實施排序并對各用戶評價后的電影數量(count)進行統計得到ActionTemp表。
RL-TSVDPP算法包含了訓練和預測2個部分。對于訓練部分應通過強化學習算法來訓練經過預處理的數據集,通過計算獎懲函數獲得相應的獎懲表,實現對Q表內容的更新得到Q-table。結合之前用戶對電影作出的評分從Q-table內確定相應的Q值,再利用Q值完成SVDPP模型的訓練過程。
進行預測時,利用包含時間信息參數的RL-TSVDPP算法模型計算出預測評分,由此得到的算法預測模型為式(1)。
(1)
式中,bu(t)、qT、bi(t)、p(t)都是考慮時間影響條件下的訓練參數。
先通過預處理得到的數據計算出獎懲值,并將其表示成獎懲表,之后對數據進行更新,由此得到Q-table。同時結合用戶前兩次給出的電影評分從Q-table內獲取相應的Q值,再利用此Q值訓練SVDPP模型。

(2)
按照和梯度反向的方式進行移動,實現參數修正的過程為式(3)。
bu←bu+γ·(eui-λ·bu)
bi←bi+γ·(eui-λ·bi)
pu←pu+γ·(eui·qi-λ·pu)
qi←qi+γ·(eui·pu-λ·qi)
(3)
采用RL-TSVDPP算法進行處理時把Q-table的Q值代入式(4)。
(4)
其中,Q(s,a)表示用戶u觀察電影i前t-1和t-2時的電影評分,在t=1和t=2的條件下,以Q表平均值作為st-2,at-2取值。同時利用時間影響對SVDPP算法進行訓練并優化,由此獲得融合時間戳數據。
利用之前訓練獲得的bu(t)、bi(t)、qT對模型進行預測,由此獲得融合時間戳預測評分。
實現RL-TSVDPP算法的偽代碼如下。
輸入:用戶數量N;用戶評過分的電影數量M;學習率α;折扣因子γ。
1.對Q-table進行初始化,對任意s∈S,a∈A;
2.從數據中獲取初始狀態s,動作a;
3.foreachepisodei=1:Ndo
4.fork=1:Mido
5.根據式(1)計算獎懲函數;
6.將計算出的獎賞值更新Q-table;
7.endfor8.endfor
9.將Q-table用于式(3)訓練參數;
10.預測模型計算預測評分。
為驗證本文設計的優化算法有效性,進行實驗時除預測SVDPP模型獲得RL-TSVDPP模型之外,還設置了對照組實驗,同時訓練了SVD模型并構建RL-TSVD預測模型。考慮這2種模型都是按照用戶-電影-評分-時間的方式獲得Q-table,無需采用推薦算法,因此進行計算時通過獎懲函數得到的獎懲表和更新得到的Q-table是相同的,獎懲表和Q-table結果分別如表2、表3所示。

表2 基于訓練集得到的獎懲表

表3 基于訓練集更新后的Q-table
為了便于用戶更直觀進行觀察,本文對表2中的數據進行作圖形成三維結構,可以明顯看到Q-table數據在整個空間中保持基本恒定的狀態,只發生了小幅的起伏變化,表明時間戳參數確實會影響到預測結果,如圖1所示。

圖1 RL-TSVDPP算法Q-table三維圖
接著,把Q-table數據引入SVDPP訓練模型中計算出bu(t)、qT(t)、bi(t)、p,由此實現在預測模型中通過融合時間戳參數進行用戶評分預測。對實驗結果計算出評價指標的均方根誤差,同時對比前期計算得到的RL-TSVD模型,獲得結果如表4所示。

表4 RL-TSVDPP算法與已有SVDPP的RMSE對比
對表4進行分析可知,由于RL-TSVD與RL-TSVDPP 2個模型中包含了時間效應參數,與原模型相比,可以更加準確預測出用戶的評分,依次提升0.017和0.022。采用SVDPP預測評分方法優化馬爾科夫過程,相對于以Q-learning算法進行優化的RL-SVDPP算法,RL-SVDPP算法利用先處理數據集分析時間因素的影響,之后通過推薦模型訓練參數對用戶電影評分進行預測可以獲得更高的準確率。
在MovieLens1M數據集中總共存在6 050個用戶針對3 960個影片給出的約1億條評分,訓練集占比達到80%,采用分布式方法處理訓練集時應先通過用戶ID進行數據集排序,之后分割排序得到的數據集,各子節點按照用戶ID數據對分割得到的數據進行處理,在本研究中根據用戶ID類型分割數據集,先根據用戶ID對數據實施排序,再以分段方式傳輸至各主機,通過每個子節點對數據進行時間戳排序,同時計算得到各用戶已經作出評分的電影數量,之后對此類電影重新設置編號,根據時間的先后順序構建編號-評分索引,再匯總上述結果并進行后續計算,具體的處理過程如圖2所示。

圖2 數據預處理分布式框架
Data表示原Movielens的數據集,D1、D2、D3是根據ID段號進行分割得到的數據集,d1、d2、d3是根據時間戳進行排序獲得的數據集,data是合并d1、d2、d3獲得的數據集。
對分布式計算數據集先進行預處理,獲得按照時間戳順序對用戶、電影、評分進行排序的結果,利用上述處理得到的數據作為后續計算過程的參數,該過程需消耗18 h的時間,相對于未分布式處理前的情況,縮短了近2 h,可以節省近10%時間,由此表明可以通過分布式數據預處理的方法來顯著提高計算效率。對程序耗時進行分析發現,存在以多重for循環情況,其中,以雙重for循環所需的耗時為n平方,以三重for循環進行處理時耗時為n三次方,隨著n的增大,形成了更長的n平方耗時。
本文設計了一種包含了時間影響因素的SVDPP算法,并把該關系映射至馬爾可夫決策過程,再把時間影響添加至推薦算法SVDPP模型內,由此獲得包含了時間戳參數的RL-TSVDPP優化模型。通過測試發現。
1)RL-SVDPP算法利用先處理數據集分析時間因素的影響,通過推薦模型訓練參數對用戶電影評分進行預測可以獲得更高的準確率。
2)通過分布式數據預處理的方法來顯著提高計算效率,為SVDPP模型添加時間影響因素是完全可行的,將此類影響因素加入用戶預測評分可以有效提升推薦準確性。