陸國浩
基于群體化的開源軟件推薦問題研究
陸國浩
(沙洲職業(yè)工學院,江蘇 張家港 215600)
利用因子分解機(Factorization Machines,F(xiàn)M)模型,提出了一種在群體參與平臺上對開源軟件的推薦方法。通過抽取開源軟件的文字、代碼和標簽等特征信息加入模型中訓練,以機器學習的結果完成推薦。利用碼云網(wǎng)站實例分析開發(fā)者對開源軟件的行為,建立開發(fā)者對開源軟件感興趣評級,并生成使用者與開源軟件的關系矩陣作為學習目標。實驗表明,與傳統(tǒng)的推薦方法協(xié)同過濾相比,所提出的方法在平均精確均值(Mean Average Precision, MAP)、召回率(Recall)與F1分數(shù)(F1 Score)三個評估下都有較優(yōu)秀的表現(xiàn)。
開源軟件;因子分解機;軟件推薦;群體化平臺
近年來,推薦系統(tǒng)領域的研究取得了很大程度的進步。目前的推薦方法大多基于使用者間的信任關系與交互活動進行。中小企業(yè)在提高自身的信息化能力時,對開源軟件有顯著的需求。提高開源軟件的有效推薦、獲得更合適的開源軟件對中小企業(yè)的信息化發(fā)展具有十分重要的意義。
開源軟件一般在群體化網(wǎng)絡平臺上,如:Github、SourceForge、Gitee、OpenHub等,使用者開始在群體化平臺上與其他使用者共同實作或是分享想法,以實現(xiàn)共同的工作目標。在碼云上,這些共同的目標通常通過共同完成某個開源軟件版本來實現(xiàn)。通過提出使用者產生的文檔與源碼(Source code)中擷取特征[1],并將這些背景特征整合到傳統(tǒng)的協(xié)同過濾(Collaborative Filtering)和基于內容(Content-based)推薦方法中,完成對開源軟件的推薦。
推薦系統(tǒng)已經(jīng)被廣泛使用在商業(yè)中。在推薦模型框架中,協(xié)同過濾是最受歡迎的模型之一。協(xié)同過濾模型會過濾沒有意義且不重要的信息,并保留下相似且有意義的模式來預測使用者行為與喜好。近年來,機器學習的技術提供了有潛力的方式來執(zhí)行推薦,除了協(xié)同過濾與基于內容過濾的方法,還有將兩種方法結合的混合式方法。通過因子分解機(Factorization Machines)方法,物品或使用者之間的相似性通常透過物品和使用者表示的特征向量來測量,這種混合式推薦方法更適合于開源軟件的推薦[2]。
1.1.1 協(xié)同過濾
協(xié)同過濾的方法是收集大量有關使用者的行為,基于類似的使用者去預測其他使用者可能也感興趣的信息。這種方法基于使用者過去感興趣或是偏好,去假設未來的使用者在類似事物上的行為表現(xiàn)。許多演算法用于推測推薦系統(tǒng)中使用者與物品之間的關系。例如,k個相近的鄰居(k-nearest neighbor)。協(xié)同過濾優(yōu)點在于,即使不了解音樂的內容,依然可以向使用者推薦播放清單。概念是先由群體化平臺上,使用者與物品之間的喜好關系建立起社群網(wǎng)絡圖,再將網(wǎng)絡圖由使用者與物品的矩陣表示,最后尋找與被推薦使用者擁有相同喜好的使用者,并將此使用者在被推薦對象沒有的喜好來進行推薦。
1.1.2 基于內容過濾
基于內容過濾主要是透過物品的內容資訊來進行推薦?;趦热葸^濾目標,是嘗試依照使用者過去感興趣的物品去推薦使用者也可能感興趣的新物品,概念類似協(xié)同過濾。但在過程中,我們擷取物品中有用且具有參考價值的特征(如:文字信息等),轉換成向量空間的特征表示形式。然后,透過對物品的評分來建立出一個經(jīng)使用者產生的物品列表。通過這些特征向量的信息去尋找有相似特征的物品,將這樣的新物品視為使用者可能感興趣的物品進行推薦。
1.1.3 混合型機器學習算法
基于文字內容過濾的方法是基于使用者或物品個別信息,它缺乏考慮其他使用者過去的使用經(jīng)驗,因此缺乏對于物品質量、風格、觀點與類似使用經(jīng)驗使用者的交互影響。另外,它缺少使用者的個性評估。為了解決以上這些缺點,透過結合了協(xié)同過濾的方法得到了改善,因而衍生出了混合模式的算法[3]。
實驗表明,更進一步探究使用者與使用者(User-User)、物品與物品(Item-Item)甚至是使用者對物品(User-Item)的交互關系,透過協(xié)同過濾的方式,建立起使用者與使用者經(jīng)由物品建立起來的復雜關系,加上基于內容過濾的概念,從中擷取出重要且具有影響力的特征加入模型訓練當中,使得最終推薦結果有更卓越的表現(xiàn)。
大多最近的混合模式算法的研究,都是將協(xié)同過濾與基于內容過濾的方法相結合。協(xié)同過濾的目的是過濾涉及多人和數(shù)據(jù)源之間的協(xié)作的信息或模式(Patterns)。因子分解機是目前最先進的方法之一。該算法已經(jīng)成為推薦系統(tǒng)中主流的技術,因為它不僅能夠模擬協(xié)同過濾的方法,且更能夠方便地將輔助信息加入模型中學習。
在分解機器中,有一個是記錄使用者與物品之間的類別或級別(在我們的方法中,定義為感興趣的程度)的關系矩陣。由于大多群體化平臺上的數(shù)據(jù)稀疏導致沒有評級。為了克服這個問題,分解機產生一個交互矩陣來表示未知的等級。例如,使用者A聽了音樂X,但沒有聽音樂Y,交互矩陣可以模擬所有使用者和所有物品之間的等級。然后,分解機可以記住使用者A對音樂Y感興趣。根據(jù)這個框架,可以由使用者與物品的關系矩陣來表示社群網(wǎng)絡。我們將評級視為使用者和物品之間的關系。例如,如果使用者A喜歡或共享來自使用者B的音樂,則在使用者與物品的關系矩陣中記錄。換句話說,這意味著使用者B透過該音樂影響了使用者A,我們認為交互矩陣模擬的價值是在于潛在的影響力。
許多研究試圖從各式各樣的資訊(例如:位置或天氣)來模擬使用者行為?,F(xiàn)今有大多數(shù)基于矩陣因子分解(Matrix Factorization)的技術,它將使用者對物品的矩陣擴散成張量形式({使用者,物品,上下文}三元組成)用于上下文推薦[4]。本文嘗試透過使用者生成的文字信息與在群體參與平臺上的互動關系建模。為此,采用基于矩陣因子分解的演算法,分解機器作為學習框架,它可以從異質的來源中提取大量的特征[1]。例如,從群體參與平臺上,物品在協(xié)作平臺上的被定義領域特征和相關文字特征信息。分解機器已被證明是近年來各種推薦任務下最靈活且具有競爭力的模型。
分解機器(FM)可以透過各種類的特征來達到一般分解模型的效果。它能夠學習特征之間所有的交互權重,一般來說的分解機器可定義為式(1):
式中為目標函數(shù),為全局偏差,是特征值的權重,模擬每對特征值之間的交互作用。
協(xié)同過濾是推薦系統(tǒng)常被采用的技術。在我們的工作中,保有協(xié)同過濾的優(yōu)勢與基于分解模型結合。由于分解機器具有良好的輸入特征建模框架,可以直接從使用者和項目中提取出信息,這種方式具有過濾類似的概念,可以容易嵌入到特征向量中。
在開源社區(qū)網(wǎng)站碼云(Gitee)上,本文通過開源軟件(Repository)的信息建立使用者與軟件之間的關系矩陣,并將這個關系矩陣當作模型訓練時的目標值。在Gitee網(wǎng)站上,選擇用于模擬的軟件信息,通過四項內容表現(xiàn)。
Star:使用者可以對開源軟件進行類似點贊的行為。
Watch:使用者可以對開源軟件點擊關注。
Fork:使用者可以對開源軟件分支到自己的空間進行修改或編輯。
Contribute:使用者可以對開源軟件上傳自己修改的程序片斷,并通過軟件原作者認可成為貢獻者。
使用者除了點擊Star、Fork或是Watch這些較能夠表示使用者對物品感興趣以外,在社群平臺上的協(xié)作關系也能夠表示使用者對物品(Repository)某種程度上的感興趣,在我們的框架中額外考慮到這種使用者透過物品的協(xié)作關系來表達某種程度上的喜好。將這樣的資訊加入我們的模型,增加資訊的豐富度,以幫助模型的學習。將使用者感興趣的程度定義如下:
當F(i,j)為使用者i對j物品的感興趣程序,s,w,f,c分別為star,watch,fork,contribute的布爾值(對物品j有無此行為),另外β,γ,δ,ε分別為四個類別的權重。使用者與物品的關系如圖1。
(1)一般的文字特征信息
主要是介紹自己的README.md文件。把這些使用者生成的文字特征加入模型中學習,對軟件推薦是有幫助的。但是在gitee網(wǎng)站上的文字信息比較沒有規(guī)律性。必須要對文件進行前置處理,如采用正規(guī)表達式法(Regular Expression)、去除停用字(Stopword)和字根還原(Stemming)等方法。再通過詞頻(Term Frequency,TF)和逆向文件頻率(Inverse Document Frequency,IDF),計算TF-IDF權重來做為單個詞的分數(shù),定義為tf(t,d)×idf(t,d)。TF-IDF權重是一種用于信息檢索(Information Retrieval)和文本挖掘(Text Mining)中常用的加權技術。TF-IDF權重常被搜索引擎應用,作為文本與使用者之間相關度的評級。
圖1 使用者與物品關系圖
(2)源代碼特征信息
在gitee網(wǎng)站中,主要是分享源代碼。源代碼也有著標準的格式與限制,相比一般文字來說更為嚴謹。如,可以分析源代碼中引用的函數(shù)庫片段,作為特征信息。
采用三種常用的評估推薦結果比較的方法。前k個平均精確均值(Mean Average Precision, MAP)、召回率(Recall)和F1分數(shù)(F1 score)[6]。對每個開發(fā)者,令P(k)為前k個精確度(Precision@k):
當o(p)=i,表示物品i在o列表中被排序在第p個位置,γu i表示開發(fā)者u對開源軟件產品i是否感興趣(是為1,否為0)。前k個平均精確均值如式(5):
其中,U表示開發(fā)者的集合。k個平均精確均值越高,表示在推薦精度上有更好的表現(xiàn)。
召回率是在評估推薦出來的實例中,是真正屬于開發(fā)者感興趣或是喜歡的數(shù)量。計算公式如式(6):
高召回率則表示推薦出來的是開發(fā)者真實喜歡或感興趣的實例。
F1分數(shù),是在統(tǒng)計分析中二進制分類(Binary Classification)的精確度測量,通過精確度和召回率來計算得到。它是精確度和召回率的平均值,如式(7):
式中,0≤F1≤1,0為最差,1為最好。
在實驗中,通過對矩陣分解時的隱向量維度k來觀察不同參數(shù)下實驗評估分數(shù)。初始設定實驗的六種參數(shù)為2n,當n=1,2, …,6(即k=2,4,8,16,32,64)時,實驗對象分別有一般FM、FM+文字特征、FM+源代碼、FM+文字特征+源代碼的表現(xiàn)。
表1 實驗結果
因為在Gitee中,對文字特征部分是沒有限制的,可能出現(xiàn)廣告或圖片等內容,這樣使得文字特征部分有很多無效信息,實驗結果也說明了只有比較嚴謹?shù)脑创a對軟件的推薦才更為有效。
在參數(shù)k的敏感度實驗中,實驗發(fā)現(xiàn)隨著參數(shù)k的增加,對有特性的FM評估結果有所提升。尤其在k=32時,較為明顯。MAP、Recall、F1 score評估方法都有類似提升曲線,圖2為F1 score評估的關系曲線圖。
圖2 隱向量維度k與F1 score評估曲線圖
本文提出了一種在群體參與平臺上針對開源軟件的推薦方法,把協(xié)同過濾的優(yōu)勢和基于FM模型相結合。通過文字特性、源代碼內容等特征向量,對MAP、Recall、F1 score分析,有利于提升開源軟件的推薦結果。這將為開源軟件的推廣和使用提供借鑒。
[1] Rendle S. Factorization Machines with libFM[J]. ACM Transactions on Intelligent Systems and Technology, 2012, 3 (3):1-22.
[2] Yin G, Wang T, Wang H, et al. OSSEAN: Mining Crowd Wisdom in Open Source Communities[J]. Frontiers of Computer Science, 2018 (10): 923-938.
[3] Llerena L, Rodriguez N, Castro J W, et al. Adapting Usability Techniques for Application in Open Source Software: A Multiple Case Study[J]. Information and Software Technology, 2018 (11): 12.
[4] 尹剛, 王濤, 劉冰珣. 面向開源生態(tài)的軟件數(shù)據(jù)挖掘技術研究綜述[J]. 軟件學報, 2018 (8):2258-2271.
[5] 羅子展. 開源軟件社區(qū)開發(fā)者推薦的研究[D]. 長沙: 國防科學技術大學, 2015: 19-23.
[6] 廖志芳, 李斯江. GitHub開源軟件開發(fā)過程中關鍵用戶行為分析[J]. 小型微型計算機系統(tǒng), 2019, 40 (1): 164-168.
Research on Recommendation of Open Source Software Based on Crowd Participation
Lu Guohao
( Shazhou Professional Institute of Technology, Zhangjiagang 215600, Jiangsu, China )
In this paper, a recommending method for open source software on the platform of Crowd Participation is proposed by means of Factorization Machines. The text, code and tags of open source software are extracted and trained in the model, and then the training results of the model are recommended. The behavior of developers on the code cloud platform is used to establish the developers’ interest ratings for open source software, and to generate the user-to-open source software relationship matrix as a learning goal. Experiments show that compared with the traditional collaborative filtering recommending methods, a better performance is realized under the Mean Average Precision, Recall and F1 Score.
open source software; Factorization Machines; software recommendation; Crowd Participation platform
TP391.3
A
1009-8429(2019)02-0016-05
2019-02-20
2017年江蘇省高校哲學社會科學研究基金項目(2017SJB1441)
陸國浩(1979-),男,沙洲職業(yè)工學院電子信息工程系講師。