王世杰, 高鑫, 許舒翔
(1.國家電網公司西北分部, 陜西 西安 710048;2.國電南瑞科技股份有限公司, 江蘇 南京 211106)
在當前信息數量規模呈現爆發式增長的情況下,如果只采用由單一因素構成的推薦系統進行分析時將難以適應人們對于實際需求的變化,因此無法通過此類推薦系統獲得合適的推薦結果,從而極大增加了選擇的難度[1-5]。為有效提升推薦效率,應綜合考慮多個方面的各類影響因素,實現精度的大幅提升以及全面優化各項評價指標[6]。以上各項信息由多個異構數據共同構成,在這種情況下使用深度學習方法能夠高效提取各類異構數據的低維特征,從中挖掘實際有用的信息,之后再把此類信息融合到傳統推薦系統內,之后再處理以傳統算法無法處理的內容,顯著改善推薦效果[7-9]。綜合運用深度學習方法和傳統算法能夠進一步增強推薦系統運算效能。其中,深度學習方法能夠實現對數據深層次特征的精確分析與提取[10-12]。采用棧式降噪編碼器可以提取得到一些隱藏的信息數據,不過該方法只是單一進行特征參數提取,而沒有充分體現物品各項隱藏特征的相互效果,以上述機械相加的模式并不能獲得更優的綜合效果,導致融合算法效能受到限制[12-13]。
采用交互方式可以使輔助信息達到更高的利用率,由此構建更加完善的評分矩陣,同時設置了評分優化權重,顯著提高物品推薦能力[14-16]。對此算法進行測試發現,可以顯著克服用戶與物品發生冷啟動的情況,從而減小了擬合誤差,使推薦物品獲得更高好評度。
深度協同雙向約束算法(DCBCA)將評分優化權重加入通過自編碼器構建的交互式混合推薦算法,根據評分優化權重對推薦物品實施好評度優化,通過自編碼器構建的交互式混合算法時能夠克服數據稀疏以及避免冷啟動過程。此算法可以協調優化物品與用戶的匹配性,使推薦系統發揮更高的效能。
DCBCA由多個部分組成,包括評分優化、棧式自動編碼器以及概率矩陣分解。整個系統的具體結構,如圖1所示。

圖1 DCBCA的結構示意圖
其中,位于圖1左邊區域是通過自編碼器實現的交互混合算法,同時在右邊區域設置了評分優化權重。
DCBCA的損失函數向量化表示,如式(1)。
DCBCA在運行階段包含了以下各步驟。
(1) 首先輸入用戶和物品對應的評分矩陣、評分數據集,完成數據的初始化之后再將其輸入至各模塊。
(2) 以交互模式訓練自動編碼器與各矩陣的分解模塊。
(3) 在評分數據集E上優化各項模塊參數。
(4) 更新所有隱藏特征,同時建立評分重組矩陣。
(5) 通過評分優化模塊對推薦列表實施優化。
(6) 將得到的推薦列表結果進行輸出。
以DCBCA進行電影推薦的具體流程,如圖2所示。

圖2 算法計算流程
利用數據集逐層訓練SDAE網絡,同時比較輸出層與輸入層中包含的數據,并對網絡的重構誤差進行分析。之后存儲經過訓練得到的權重以及偏置數據,并重新建立訓練得到的網絡編碼,再輸入訓練數據并在最底層生成數據低維特征。
算法交互過程出現于SDAE底部隱藏層中以及利用矩陣分解方法形成的低維矩陣內。
在優化評分的過程中,應結合用戶評分方差對算法實施調整后以達到評分函數優化的效果,先歸一化處理擬合函數輸出結果,在此基礎上根據該數值的權重排序得到的推薦列表,再把結果推薦給用戶,最大程度發揮推薦系統效能。
本文為算法測試構建了從GroupLens網站下載MovieLens數據集,此數據集是通過尼蘇達大學從MovieLens網站進行收集得到,總共包含了1 927部電影以及1 418位用戶,各用戶都對20部以上的電影實施評分并對各項結果進行了記錄。
從不同時間段中爬取得到豆瓣電影評分內容,包含了所有熱門電影評分數據,依次爬取用戶名稱、觀看時間、電影名稱、評分數值與時間。經過重復操作獲得測試數據。
根據R對比測試結果,進行十折交叉驗證并計算平均結果,如圖3所示。

圖3 兩種算法的平均召回率
從圖3中可以看到以二種算法測試數據集得到的R值,其中,橫軸表示推薦數量,縱軸表示R。在上述二個算法中通過自編碼器實現的交互式混合推薦算法達到了最優異表現性能。同時可以發現,當推薦數量K增大后,二個算法都提高了召回率R,對R進行計算時,保持固定的喜歡物品數,因此當用戶推薦數增加后,將以更大概率覆蓋用戶喜歡物品,顯著提高覆蓋數量,獲得更大的R值。根據以上分析可知,利用自編碼器構建交互式混合推薦算法可以獲得更大的R。
對各算法進行測試后發現,當以R指標進行評價時,利用自編碼器構建得到的交互式混合推薦算法與采用自編碼器實現的混合推薦算法可以顯著提高推薦效能。總共選擇二個具有不同稀疏性的數據集進行測試。對于上述二個數據集測試后得到,在自編碼器上建立交互混合推薦算法一方面可以獲得優異推薦性能,同時還具備明顯魯棒性。
在測試階段應先對各項電影信息進行輸入,通過k近鄰模式搜索出相似電影,之后通過棧式自編碼器完成低維特征的提取,接著通過概率矩陣分解的方式完成數據分析,二個模塊之間可以建立信息交互渠道,同時利用兩部分對應的占比分析模塊應實現的任務方向,從而防止發生冷啟動問題,當遇到某一模塊出現缺失信息的情況時也可以通過另一模塊來達到彌補的效果。利用評分優化算法評價二個模塊輸出,同時優化推薦列表,最后利用重組矩陣提供推薦信息。
對算法進行測試的具體流程,如圖4所示。

圖4 測試流程圖
通過DCBCA方法為用戶提供長久推薦信息,測試得到的結果,如表1所示。

表1 DCBCA測試數據
DCBCA依次從物品與用戶二個不同層面優化推薦效能。經對比發現,使用DCBCA方法后,為用戶提供長期推薦的過程中能夠顯著提升物品好評度,此算法可以使平均評分升高0.3,并且獲得更加穩定的用戶評分。對比各算法的標準差可以發現,本文算法可以顯著降低標準差,使用戶評分保持更加穩定的狀態。由此可以推斷,DCBCA可以優化用戶對推薦物品作出的評分,使物品獲得更高好評度。
DCBCA依次選擇MovieLens與豆瓣電影評分二個數據集對精確度P與各評價指標實施了測試,比較了該方法得到的測試結果和通過自編碼器實現的交互式混合推薦算法之間的差異性,由此得到推薦電影數量依然等于5、10、15、20。各K值下上述算法形成的F1值,如表2所示。

表2 兩種算法的F1值
從表2中可以看到二個算法對數據集進行處理得到的F1值,之后評價深度協同雙向約束算法的性能。根據實際測試結果可知,對于各K值來說,以本算法進行處理可以獲得更小的F1。可以發現,評分優化算法會對觀看較多的電影類型產生弱化的效果,會降低推薦精度,導致F1值發生改變。
通過測試可知,采用深度協同雙向約束算法可以改善推薦效果,除了可以提升用戶對推薦物品產生更高的好評度以外,還可以利用交互過程來避免出現冷啟動的情況。經測試可知深度協同雙向約束算法達到了優異魯棒性,有效改善了評分效果。
(1) 利用自編碼器方式構建交互式混合推薦算法使R達到了最大,從而獲得最佳性能。通過自編碼器構建的交互式混合推薦算法除了能夠滿足推薦性能以外還表現出了優異魯棒性。
(2) 使用DCBCA方法后,為用戶提供長期推薦的過程中能夠顯著提升物品好評度。DCBCA可以優化用戶對推薦物品作出的評分,使物品獲得更高好評度。采用深度協同雙向約束算法可以改善推薦效果,除了可以提升用戶對推薦物品產生更高的好評度以外,還可以利用交互過程來避免出現冷啟動的情況。