最大邊際矩陣分解用於代碼推薦

最大邊際矩陣分解用於代碼推薦

1 引用

Markus Weimer and Alexandros Karatzoglou and Marcel Bruch. Maximum margin matrix factorization for code recommendation. In Proceedings of the 2009 ACM Conference on Recommender Systems, 2009, 309-312.

2 摘要

代碼推薦系統通過推薦基於現有代碼的調用來簡化軟件框架和庫的使用和學習。通常,代碼推薦工具基於相當簡單的基於規則的系統,而推薦系統和協作過濾的許多最新進展主要集中在評級數據上。雖然這些進步中的許多都可以納入到代碼建議中,但設置這個問題本身也帶來了相當大的挑戰。在本文中,我們擴展了最先進的協同過濾技術,即最大邊際矩陣分解(MMMF)到這個有趣的應用領域,並展示瞭如何應對這個問題所帶來的挑戰。為此,我們在 MMMF 模型中引入了兩個新的損失函數。在本文中,當我們關注代碼推薦時,我們的貢獻和我們提出的方法可以在幾乎任何可以表示為二進制交互矩陣的協作環境中使用。我們在 Eclipse 開源項目的實際數據上評估了算法。結果表明,與現有的基於規則的方法相比,該方法有了顯著的改進。

3 技術介紹

我們將矩陣分解方法轉化為二元相互作用數據。為此,我們建立在對最大邊際矩陣分解方法的研究上,並通過引入兩個新的損失函數來擴展它。我們證明了這兩個損失函數允許在推薦系統得到的結果的召回率和精確度之間進行自然的權衡。我們在代碼推薦系統的實際數據上評估了這些算法的改進。

3.1 矩陣分解建模

我們選擇根據從 Eclipse 集成開發環境到 Eclipse 中使用的用戶界面(UI)框架(標準小部件工具包(SWT))的調用來評估我們的系統。數據提取:如上所述,我們對兩種可能的推薦上下文進行了實驗:類和方法。我們使用 Wala toolkit1 從 Eclipse 中的每個方法和類提取對 SWT 的調用。然後將這些調用記錄在稀疏矩陣 Y 中,其中 Y=1 表示在上下文 i 中找到了對 SWT 方法 j 的調用。

圖 1 說明了作為上下文的類 A 的這個過程。在這個類中,調用了四個 SWT 方法。這些調用中的每一個都記錄在對應於類 A 的 Y 行中。該矩陣還顯示了一個假設的類 B,其中僅包含對 SWT 方法的兩個調用。數據特性:我們在 SWT 中發現了 1557 個從 Eclipse 調用的方法。我們在 Eclipse 中找到了 5642 個方法,它們在 SWT 中至少調用了一個方法,在 Eclipse 中找到了 2733 個類。方法數據包含 52895 個調用,對於我們記錄的類數據 41369 個調用。方法上下文的數據顯示相同的長尾分佈。我們觀察到有幾個類調用了很多 SWT,而有許多類只調用了幾個 SWT。Eclipse 中 24%的類只調用一個 SWT 方法,三分之二的類調用的 SWT 方法少於 15 個。這些特性可以歸因於現代面向對象軟件的構建方式,這種方式有利於小組件和小責任。然而,存在更復雜的類,最多使用 130 種不同的方法,除非開發人員具有精確性。對框架的理解他們的應用程序不太可能正常工作。

最大邊際矩陣分解用於代碼推薦

圖 1 從源代碼到二進制向量

3.2 推薦結果評價

為了評估我們的系統,我們模擬了一個開發人員在一個上下文中編寫了一半代碼後向系統尋求幫助的情況。為了評估這個場景,系統通過最小化目標函數(1)來訓練 90%的數據以獲得 M。然後,在剩餘的 10%的數據中,每個上下文顯示一半已知調用。這個表格系統的輸入,然後最小化目標函數(2)以預測每個上下文的附加調用。該推薦系統的輸出通過信息檢索的 F1、精度和召回率進行評價。我們重複這個程序 10 次,對列車數據進行雙隨機抽樣。

圖 2 顯示了每個類的調用數分佈。我們觀察到,我們的邏輯迴歸損失算法在 F1 得分方面表現最好,與軟邊際損失非常匹配。從 F1 得分來看,矩陣分解總體上明顯優於基於規則的方法。然而,這兩種損失函數表現出不同的性能特徵。對於 logistic 迴歸損失,召回率和準確率顯著下降,而軟邊際損失函數的表現更為均衡。注意,精確性和召回率對正權重的值敏感。因此,通過調整該值可以很容易地在兩個度量之間實現所需的平衡。

最大邊際矩陣分解用於代碼推薦

圖 2 Eclipse 中每個類調用 SWT 的次數直方圖

圖 3 描述了具有軟邊際損失的系統的性能度量和權重參數之間的關係。正如預期的那樣,精確性的值隨著正權重的增加而減小,而召回行為則相反。因此,權重參數提供了一種調整系統性能的方法。

最大邊際矩陣分解用於代碼推薦

圖 2 MMMF 的精確度,召回率和 F1

1.4 本文主要貢獻

本文的貢獻如下:通過引入兩個新的損失函數,我們證明了 MMMF 作為最近協作過濾研究的熱點之一,可以成功地用於代碼推薦任務。一個明顯的未來方向是將該方法應用於更傳統的推薦系統設置。此外,我們將調查在多框架設置中,不僅應為 UI 框架提供建議,還應同時為多個併發使用的框架提供建議。另一個有趣的問題是,從用戶的角度來看,方法或類上下文是否表現得更好。這兩種情況下的預測性能實際上是相同的。最後,該領域提供了豐富的特徵集,可以集成到混合推薦方法中。因此具有良好的結構特徵。類、控件和其他層次結構從特徵層次結構的角度提供了一個值得研究的領域。

致謝

感謝國家重點研發計劃課題:基於協同編程現場的智能實時質量提升方法與技術(2018YFB1003901)和國家自然科學基金項目:基於可理解信息融合的人機協同移動應用測試研究(61802171)支持!

本文由南京大學軟件學院 2018 級碩士段定翻譯轉述。


分享到:


相關文章: