亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于數(shù)據(jù)的GitHub項(xiàng)目個性化混合推薦方法

        2020-11-26 00:36:34何鍇琦馬宇驍劉華虓
        關(guān)鍵詞:用戶方法

        何鍇琦, 馬宇驍, 張 炎, 劉華虓

        (1. 吉林大學(xué) 研究生院, 長春 130012; 2. 美國東北大學(xué) 工程學(xué)院, 美國 波士頓 02115;3. 吉林大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院, 長春 130012)

        GitHub是目前知名的軟件項(xiàng)目托管平臺之一, 在該平臺上開發(fā)人員可通過賬戶共享自己創(chuàng)建(Create)的項(xiàng)目、 派生(Fork)他人的項(xiàng)目或關(guān)注(Watch)其他開發(fā)者的項(xiàng)目. 其提供了搜索功能, 在不提供任何自動建議的情形下允許用戶對平臺中的項(xiàng)目進(jìn)行手動檢索. 傳統(tǒng)的搜索引擎通常側(cè)重于對檢索內(nèi)容的文本匹配, 但對于開源軟件代碼庫的用戶, 搜索合適的項(xiàng)目是一項(xiàng)困難的任務(wù): 一方面, 用戶通常很難用幾個關(guān)鍵詞準(zhǔn)確地描述軟件項(xiàng)目的特征, 導(dǎo)致難以獲得理想結(jié)果,此外, 由于搜索結(jié)果較多, 待選項(xiàng)目的質(zhì)量通常參差不齊, 只能依靠星級等有限評價體系; 另一方面, 由于不同項(xiàng)目的參與難度不同, 會導(dǎo)致缺乏經(jīng)驗(yàn)的新用戶無從下手. 因此, 如何利用數(shù)據(jù)分析方法, 根據(jù)不同用戶的專業(yè)方向和專業(yè)水平的差異, 提供個性化項(xiàng)目推薦方法研究已成為目前的熱門問題[1].

        本文基于內(nèi)存的協(xié)同過濾方法, 提出一種基于數(shù)據(jù)的面向領(lǐng)域入門的GitHub項(xiàng)目個性化混合推薦方法, 通過將基于用戶和基于項(xiàng)目的協(xié)同過濾方法進(jìn)行混合, 并利用倒排表和K均值分類方法, 在一定程度上解決了傳統(tǒng)方法在面對GitHub用戶及項(xiàng)目數(shù)量級較大但交叉度較低的數(shù)據(jù)集時數(shù)據(jù)稀疏和冷啟動問題, 并通過對比實(shí)驗(yàn)驗(yàn)證了本文方法的有效性.

        1 基于內(nèi)存的協(xié)同過濾方法

        協(xié)同過濾方法是一組用于推薦系統(tǒng)設(shè)計和實(shí)現(xiàn)的方法, 具有實(shí)現(xiàn)簡單且推薦結(jié)果準(zhǔn)確的特征. Tapestry[2]作為第一個手動協(xié)作過濾系統(tǒng), 允許用戶通過參考其他用戶的操作查詢信息域中的項(xiàng)目. 文獻(xiàn)[3]提出了自動協(xié)作過濾系統(tǒng)GroupLens, 其能自動定位具有相關(guān)性的信息, 并聚合為目標(biāo)用戶提供建議. 用戶只需執(zhí)行可觀察到的操作, 系統(tǒng)將收集到的信息與其他用戶的相關(guān)操作結(jié)合, 提供個性化的結(jié)果. 協(xié)同過濾技術(shù)中最常見的是基于內(nèi)存的技術(shù), 基于內(nèi)存的技術(shù)使用已有的評價數(shù)據(jù)計算用戶或項(xiàng)目之間的相似度[4], 根據(jù)計算出的相似度值做出推薦, 其又可分為基于用戶的方法和基于項(xiàng)目的方法兩種.

        基于用戶的協(xié)同過濾算法(user-based collaborative filtering)是目前應(yīng)用較多的算法. 該算法通過計算目標(biāo)用戶與鄰居用戶之間的相似性, 根據(jù)鄰居用戶對某個資源的評分, 預(yù)測目標(biāo)用戶的評分, 預(yù)測評分最高的若干項(xiàng)目作為對用戶的推薦呈現(xiàn)給目標(biāo)用戶. 其核心思想是計算用戶間的相似性, 尋找與用戶相似度最高的鄰居. 而基于項(xiàng)目的協(xié)同過濾算法(item-based collaborative filtering)則關(guān)注目標(biāo)用戶評分的項(xiàng)目與其鄰居項(xiàng)目的相似性, 將預(yù)測評分高的若干項(xiàng)目作為對用戶的推薦呈現(xiàn)給目標(biāo)用戶.

        1.1 基于用戶的協(xié)同過濾方法

        對于目標(biāo)用戶u, 基于用戶的協(xié)同過濾方法首先在用戶群中找到與用戶u存在相似性的用戶, 然后通過對其感興趣的項(xiàng)目進(jìn)行篩選, 結(jié)合他們對某一項(xiàng)目r的評分預(yù)測用戶u對該項(xiàng)目的評分, 從而得到用戶u對未知項(xiàng)目的評分排序列表, 進(jìn)而達(dá)到推薦目的. 算法步驟如下.

        1) 將獲取的數(shù)據(jù)集進(jìn)行預(yù)處理, 為不同操作賦予不同的分?jǐn)?shù)權(quán)重, 然后利用處理好的數(shù)據(jù)集構(gòu)建用戶-項(xiàng)目矩陣. 結(jié)果表示為一個m×n的用戶評價矩陣M, 其中m是用戶數(shù),n是項(xiàng)目數(shù),M[i,j]表示第i個用戶對第j個項(xiàng)目的操作; 若用戶未對某個項(xiàng)目進(jìn)行過操作, 則記為0分. 表1為用戶-項(xiàng)目矩陣的一個示例.

        表1 用戶-項(xiàng)目矩陣示例

        2) 得到用戶-項(xiàng)目矩陣后, 要完成對目標(biāo)用戶最近鄰居的查找. 通過計算目標(biāo)用戶與其他用戶之間的相似度, 得到與目標(biāo)用戶最近的鄰居集. 假設(shè)R(u)為用戶u進(jìn)行過操作的項(xiàng)目集合,R(v)為用戶v進(jìn)行過操作的項(xiàng)目集合, 如果將用戶-項(xiàng)目矩陣中的每行記錄視為一個向量, 則在推薦問題中計算u與v的相似度常用Jaccard相似度算法[5]和余弦相似度算法[6], 計算公式分別為

        (1)

        (2)

        Jaccard相似度算法用于計算兩個集合之間的相似程度, 但集合中的元素取值是二元的, 只能是0或1; 而余弦相似度算法在這方面則沒有限制.

        3) 先從已計算完相似度的用戶集中篩選出與目標(biāo)用戶u最相似的k個用戶, 用集合S(u,k)表示, 其中k是預(yù)設(shè)的相似用戶窗口尺寸. 然后提取S中用戶的所有評分項(xiàng)目, 并刪除目標(biāo)用戶u進(jìn)行過評分的項(xiàng)目, 將保留下的項(xiàng)目視為候選項(xiàng)目, 對每個候選項(xiàng)目r, 用戶對其預(yù)測評分(感興趣程度)為

        (3)

        其中RTv,r表示用戶v對項(xiàng)目r的評分. 最后根據(jù)預(yù)測的目標(biāo)用戶評分結(jié)果進(jìn)行排序, 取前N個作為最終的推薦結(jié)果.

        1.2 基于項(xiàng)目的協(xié)同過濾方法

        與基于用戶的協(xié)同過濾方法相反, 基于項(xiàng)目的協(xié)同過濾方法[7]通過計算項(xiàng)目之間的相似度找到最相似的項(xiàng)目, 直接執(zhí)行協(xié)同過濾. 該算法步驟如下:

        1) 對于每個項(xiàng)目, 算法通過使用余弦相似度計算相似度, 得到k個與其最相似的項(xiàng)目,k也稱為鄰居數(shù);

        2) 該算法從k個最相似的項(xiàng)目中刪除待推薦用戶已評分(進(jìn)行過操作)的項(xiàng)目集合R, 即刪除用戶已經(jīng)創(chuàng)建、 派生或關(guān)注的所有存儲庫, 將結(jié)果保存在集合U中;

        3) 計算集合U和集合R中每個項(xiàng)目之間的相似度, 即計算用戶已評分的項(xiàng)目與其k個最相似項(xiàng)目之間的相似度, 結(jié)果是一個按相似度遞減排序的項(xiàng)目列表.

        2 混合推薦方法設(shè)計

        通過對兩種基于內(nèi)存的協(xié)同過濾方法比較可見: 基于用戶的協(xié)同過濾方法具有易實(shí)現(xiàn)、 準(zhǔn)確率高、 移植性強(qiáng)等特點(diǎn), 但隨著用戶量的增加, 推薦過程的計算量呈線性增加, 對于千萬級的用戶和項(xiàng)目, 存在嚴(yán)重的可擴(kuò)展性問題; 而基于項(xiàng)目的協(xié)同過濾方法則可通過建立以項(xiàng)目為基礎(chǔ)的推薦模型, 解決高計算成本的問題, 且在多數(shù)情形下推薦結(jié)果甚至優(yōu)于傳統(tǒng)的基于用戶的協(xié)同過濾方法. 但這兩種方法也存在數(shù)據(jù)稀疏、 高維度、 冷啟動等問題; 此外, 在推薦結(jié)果上, 基于用戶的方法偏向于推薦流行度高的項(xiàng)目, 而基于項(xiàng)目的方法則偏向于推薦更具個性化的項(xiàng)目.

        基于上述分析, 本文將兩種基于內(nèi)存的協(xié)同過濾方法相結(jié)合, 提出一種混合推薦方法, 不僅可動態(tài)計算相似用戶以保證推薦的個性化, 而且只用很小規(guī)模的相似用戶便可得到與基于項(xiàng)目方法相近似的推薦質(zhì)量. 本文混合推薦方法如下:

        1) 利用基于用戶協(xié)同過濾方法中計算用戶相似度的方法, 計算目標(biāo)用戶u與其他所有用戶的相似性, 確定u的鄰居用戶. 可采用兩種方法: 一是預(yù)先確定相似度閾值, 與目標(biāo)用戶相似度大于該閾值的用戶作為其鄰居; 二是預(yù)先確定鄰居數(shù)k, 選擇相似度最高的前k個用戶作為鄰居. 本文使用第二種方法確定目標(biāo)用戶的鄰居.

        2) 根據(jù)上述確定的鄰居用戶, 利用基于項(xiàng)目協(xié)同過濾的方法進(jìn)行預(yù)測評分及項(xiàng)目推薦, 即通過計算項(xiàng)目之間的相似度, 找出與目標(biāo)用戶及其鄰居已評分項(xiàng)目中的相似項(xiàng)目, 并根據(jù)相似度順序進(jìn)行Top-N推薦.

        通過對兩種推薦方法的結(jié)合, 使推薦結(jié)果的流行度與個性化兼?zhèn)? 且降低了推薦成本, 提高了推薦效率.

        2.1 數(shù)據(jù)稀疏性問題

        在協(xié)作過濾技術(shù)中, 通常需要構(gòu)建用戶-項(xiàng)目矩陣, 其中每個條目都是未知值或用戶對項(xiàng)目的評分. 本文在構(gòu)建用戶-項(xiàng)目矩陣中的用戶評分建模時考慮用戶對項(xiàng)目的Create,Fork和Watch三個操作, 并根據(jù)操作中所隱含的用戶與項(xiàng)目的關(guān)聯(lián)程度, 為三種操作指定評分值5,3和1, 即如果開發(fā)人員是該代碼庫的創(chuàng)建者, 則其評分值為5; 如果開發(fā)人員派生了該代碼庫, 則其評分值為3; 如果開發(fā)人員關(guān)注了該代碼庫, 則其評分值為1, 否則為0(未知評分).

        定義1設(shè)U={u1,u2,…,un}是所有用戶的集合,R={R1,R2,…,Rn}是所有項(xiàng)目的集合, 則用戶-項(xiàng)目矩陣(開發(fā)人員-代碼庫矩陣)為Mn×m, 其中,

        圖1 用戶與項(xiàng)目的關(guān)系Fig.1 Relationship between users and items

        圖2 項(xiàng)目-用戶倒排表Fig.2 Inverse table of item-user

        設(shè)相似度矩陣為C[u][v], 令C[u][v]=R(u)∩R(v), 即在倒排表中假設(shè)用戶u和用戶v同時屬于倒排表中K個項(xiàng)目對應(yīng)的用戶列表, 則有C[u][v]=K. 如圖1所示, 只有在項(xiàng)目a對應(yīng)的用戶列表中同時出現(xiàn)了用戶A和用戶B, 則在矩陣中將C[A][B]賦值為1. 綜合圖2的項(xiàng)目-用戶倒排表, 相似度矩陣賦值如圖3所示. 用余弦相似度算法對相似度矩陣進(jìn)行優(yōu)化處理, 可得如圖4所示的相似度矩陣, 從而降低了數(shù)據(jù)的稀疏性.

        圖3 相似度矩陣賦值Fig.3 Similarity matrix assignment

        圖4 余弦相似度計算后的相似度矩陣Fig.4 Similarity matrix after cosine similarity calculation

        2.2 冷啟動問題

        當(dāng)期望以用戶或項(xiàng)目的歷史行為作為研究對象時, 不可避免地會遇到冷啟動問題, 即當(dāng)用戶或項(xiàng)目作為新數(shù)據(jù)進(jìn)入數(shù)據(jù)庫時, 其歷史行為集為空集, 使得研究方法無法應(yīng)用. 在推薦問題上, 冷啟動問題表現(xiàn)為: 對新用戶推薦結(jié)果的合理性和有效性無法得到保障, 以及新項(xiàng)目無法被推薦給用戶. 本文對前者進(jìn)行一定程度的緩解, 將分類結(jié)果作為項(xiàng)目的一個屬性留存, 在系統(tǒng)對領(lǐng)域入門的用戶進(jìn)行推薦時, 將參考該屬性對其做出推薦, 步驟如下:

        1) 將項(xiàng)目的文本信息矢量化, 將其轉(zhuǎn)換為高維度向量, 同時, 利用詞頻-逆文件(TF-IDF)頻率方法, 在矢量化過程中計算各詞語的TF-IDF值, 以便后續(xù)分析與處理;

        2) 按照提前設(shè)置好的類別數(shù)K, 將K均值聚類算法應(yīng)用到步驟1)中的矢量結(jié)果中, 不斷運(yùn)行直至聚類結(jié)束;

        3) 輸出每個項(xiàng)目的所屬類別結(jié)果, 并輸出每個類的關(guān)鍵詞信息.

        本文改進(jìn)方法的思想: 當(dāng)用戶在GitHub中擁有一定量對項(xiàng)目的操作歷史后, 推薦系統(tǒng)可根據(jù)行為歷史對用戶作出推薦; 但當(dāng)用戶行為歷史不足時, 如領(lǐng)域入門的開發(fā)者, 期望通過對其僅有的行為歷史得到一些項(xiàng)目信息, 并為其推薦擁有相似信息的項(xiàng)目, 使推薦結(jié)果盡可能合理、 有效, 從而在一定程度上緩解協(xié)同過濾方法的冷啟動問題.

        本文選取的項(xiàng)目信息是項(xiàng)目文本信息. 在GitHub中項(xiàng)目具有多種文本信息, 如名稱、 簡介、 代碼、 ReadMe文件等, 從中選取最能快速區(qū)分項(xiàng)目間差異的項(xiàng)目名稱、 項(xiàng)目簡介, 并遵循用戶友好的原則, 同時考慮項(xiàng)目的編程語言種類因素. 本文用K均值聚類算法對項(xiàng)目文本信息進(jìn)行分析, 確定其之間的相似關(guān)系. 在將文本信息矢量化的同時, 直接利用詞頻-逆文件頻率方法[8]對矩陣進(jìn)行優(yōu)化.

        3 實(shí) 驗(yàn)

        3.1 數(shù)據(jù)收集

        為方便研究人員對GitHub進(jìn)行研究, 平臺開放了GitHub rest API, 用以提供GitHub的用戶及項(xiàng)目數(shù)據(jù). 但GitHub的數(shù)據(jù)量非常龐大, 且5 000個/h請求的API速率限制使完整下載數(shù)據(jù)幾乎是不可能的. 為鼓勵研究者對GitHub數(shù)據(jù)進(jìn)行更深入地挖掘, Gousios等[9-11]創(chuàng)建了GHTorrent, 本質(zhì)上是GitHub rest API所提供數(shù)據(jù)的一個可伸縮、 可查詢的離線鏡像.

        本文選擇最新的完整數(shù)據(jù)包, 該數(shù)據(jù)包中包含了目前GitHub各類數(shù)據(jù), 包括用戶、 項(xiàng)目、 提交等. 然后將整個數(shù)據(jù)包導(dǎo)入到MySql數(shù)據(jù)庫系統(tǒng)中, 并對其進(jìn)行如下預(yù)處理:

        1) 數(shù)據(jù)集中共有121 725 743個項(xiàng)目, 將其均勻分為50檔, 每檔隨機(jī)抽取100個項(xiàng)目, 共得到5 000個項(xiàng)目;

        2) 從2019-01-01—2019-05-31的相關(guān)數(shù)據(jù)中截取5 000個項(xiàng)目, 對這些項(xiàng)目最近5個月的數(shù)據(jù)進(jìn)行研究;

        3) 從數(shù)據(jù)集中提取出所有對5 000個項(xiàng)目進(jìn)行過創(chuàng)建(Create)、 派生(Fork)或關(guān)注(Watch)操作的用戶;

        4) 對項(xiàng)目和用戶進(jìn)行真實(shí)性和存在性的篩選, 以確保所有項(xiàng)目和用戶是真實(shí)的且未注銷或刪除;

        5) 以用戶的操作量作為篩選條件, 以10作為篩選閾值, 刪除對項(xiàng)目操作數(shù)低于10次的用戶;

        6) 最后將用戶和項(xiàng)目的行為關(guān)系進(jìn)行格式化, 使其能被推薦系統(tǒng)成功讀取.

        經(jīng)過上述預(yù)處理, 本文共獲得10 742名GitHub用戶面向4 879個GitHub項(xiàng)目的創(chuàng)建、 派生和關(guān)注操作數(shù)據(jù)共計195 850條. 此外, 本文還從GHTorrent數(shù)據(jù)集中獲取到實(shí)驗(yàn)所用項(xiàng)目的文本信息, 包括項(xiàng)目名稱、 項(xiàng)目簡介和編程語言等, 并對其進(jìn)行如下預(yù)處理:

        1) 分別得到4 879個候選項(xiàng)目的名稱、 簡介和所用編程語言(占最大比例), 并將三者在文本層面上進(jìn)行連接;

        2) 刪除文本中的標(biāo)點(diǎn)符號、 特殊字符及亂碼等干擾信息;

        3) 將項(xiàng)目編號與對應(yīng)文本進(jìn)行格式化, 使其能被推薦系統(tǒng)成功讀取.

        3.2 參數(shù)設(shè)置

        圖5 K值對數(shù)據(jù)畸變程度的影響Fig.5 Influence of K values on degree of data distortion

        下面通過控制變量對比性實(shí)驗(yàn)的方法對改進(jìn)方法的參數(shù)進(jìn)行優(yōu)化. 首先對混合推薦方法的鄰居用戶數(shù)、 鄰居項(xiàng)目數(shù)和推薦項(xiàng)目數(shù)分別進(jìn)行對比實(shí)驗(yàn). 選取推薦項(xiàng)目數(shù)為5, 鄰居項(xiàng)目數(shù)為15, 取鄰居用戶數(shù)10~20, 觀察精確率和召回率指標(biāo)的變化, 結(jié)果列于表2. 由表2可見, 指標(biāo)隨鄰居用戶數(shù)的增多而提高, 為了兼顧推薦效率、 覆蓋率和流行度等其他變量, 本文將鄰居用戶數(shù)設(shè)為15. 選取推薦項(xiàng)目數(shù)為5, 鄰居用戶數(shù)為15, 取鄰居項(xiàng)目數(shù)10~20, 觀察其各項(xiàng)指標(biāo)變化, 結(jié)果列于表3. 觀察結(jié)果與鄰居用戶數(shù)類似, 因此同理將鄰居項(xiàng)目數(shù)設(shè)為15. 選取鄰居用戶數(shù)為15, 鄰居項(xiàng)目數(shù)為15, 取推薦項(xiàng)目1~11, 觀察其各項(xiàng)指標(biāo)的變化, 結(jié)果列于表4. 由表4可見, 隨著推薦項(xiàng)目數(shù)的增加, 精確率迅速下降, 而召回率迅速提升, 因此本文取均值, 將推薦項(xiàng)目數(shù)設(shè)為5.

        下面對緩解冷啟動問題時K均值聚類算法的K值進(jìn)行優(yōu)化. 將K值取1~10, 并分別計算每個K值對應(yīng)的畸變程度, 即每個類心與其內(nèi)部數(shù)據(jù)成員位置距離平方和的平均值, 若類內(nèi)成員彼此間越緊湊則類的畸變程度越小, 反之, 若類內(nèi)成員彼此間越分散則類的畸變程度越大, 實(shí)驗(yàn)結(jié)果如圖5所示. 由圖5可見, 畸變程度隨聚類數(shù)K的增大而降低, 但若K值過小, 聚類則失去了實(shí)際意義, 無法為用戶推薦個性化強(qiáng)的項(xiàng)目, 因此本文取K=6, 期望能兼顧項(xiàng)目的相似性與獨(dú)特性.

        表2 鄰居用戶數(shù)對精確率和召回率的影響

        表3 鄰居項(xiàng)目數(shù)對精確率和召回率的影響

        表4 推薦項(xiàng)目數(shù)對精確率和召回率的影響

        圖6 不同推薦方法在4個評價指標(biāo)上的對比Fig.6 Comparison of different recommended methods on four evaluation indexes

        3.3 實(shí)驗(yàn)結(jié)果及評價

        將上述參數(shù)應(yīng)用到改進(jìn)后的推薦方法中, 并將改進(jìn)方法與傳統(tǒng)的兩種基于內(nèi)存的協(xié)同過濾方法進(jìn)行對比, 以驗(yàn)證本文方法的可行性. 本文對基于改進(jìn)后的推薦系統(tǒng)進(jìn)行了實(shí)際操作, 針對某個真實(shí)用戶進(jìn)行推薦結(jié)果分析, 使實(shí)驗(yàn)結(jié)果更直觀.

        首先將改進(jìn)方法與傳統(tǒng)方法應(yīng)用到經(jīng)過預(yù)處理的GitHub數(shù)據(jù)集上進(jìn)行評估, 實(shí)驗(yàn)結(jié)果如圖6所示. 由圖6可見: 改進(jìn)方法在精確率和召回率指標(biāo)上均高于兩種傳統(tǒng)方法, 改進(jìn)方法的覆蓋率和流行度指標(biāo)均介于二者之間; 改進(jìn)方法解決了數(shù)據(jù)稀疏性問題, 并在一定程度上緩解了冷啟動問題, 提高了整體推薦性能.

        下面針對實(shí)驗(yàn)數(shù)據(jù)集中的8088號用戶“Ajeo”從推薦系統(tǒng)中獲取的推薦結(jié)果進(jìn)行分析, 其GitHub主頁如圖7所示. “Ajeo”在本文實(shí)驗(yàn)數(shù)據(jù)集中共有14條評分?jǐn)?shù)據(jù), 其中包括派生了自然語言處理課程“oxford-cs-deepnlp-2017/lectures”, 關(guān)注了數(shù)據(jù)科學(xué)手冊“jakevdp/PythonDataScience Handbook”、 著名的自然語言處理工具“google-research/bert”和深度學(xué)習(xí)論文“terryum/awesome-deep-learning-papers”等; 本文推薦系統(tǒng)根據(jù)其項(xiàng)目操作歷史, 為其個性化推薦5個項(xiàng)目, 結(jié)果列于表5.

        圖7 “Ajeo” GitHub主頁Fig.7 GitHub homepage of “Ajeo”

        表5 用戶“Ajeo”獲得的推薦結(jié)果

        由表5可見, 在Top-5推薦列表中, 排在第一位的是一個設(shè)計工具的插件集, 這是計算機(jī)從業(yè)者常用的工具, 具有較高的流行度. 可以合理推測, 與其相似的開發(fā)者可能很多人都在使用這個工具集. 而剩下的4個項(xiàng)目都與他在GitHub上的項(xiàng)目操作歷史緊密相關(guān), 涉及到機(jī)器學(xué)習(xí)、 自然語言處理等內(nèi)容. 通過對用戶“Ajeo”所得推薦結(jié)果的分析, 可認(rèn)為本文推薦系統(tǒng)具有較合理、 有效的推薦能力.

        下面在數(shù)據(jù)集中新加入一名用戶“ILOVEJLU”, 并令其派生一個Android UI庫“wasabeef/awesome-android-ui”, 然后使用推薦系統(tǒng)為其提供推薦結(jié)果, 得到推薦結(jié)果列于表6.

        表6 用戶“ILOVEJLU”獲得的推薦結(jié)果

        由表6可見, 系統(tǒng)提供的推薦結(jié)果在文本信息層面與“ILOVEJLU”的項(xiàng)目操作歷史相似度很高, 因而內(nèi)容上也具有很強(qiáng)的相關(guān)性, 對于新用戶或領(lǐng)域入門的開發(fā)者具有一定的指導(dǎo)意義.

        綜上所述, 針對GitHub平臺現(xiàn)有項(xiàng)目推薦功能的缺陷, 本文提出了一種基于數(shù)據(jù)的GitHub項(xiàng)目個性化混合推薦方法. 首先, 對現(xiàn)有協(xié)同過濾方法進(jìn)行了改進(jìn)和優(yōu)化, 通過建立倒排表的方式大幅度降低了基于用戶的協(xié)同過濾方法在計算用戶相似度時的計算成本, 并提高了運(yùn)行效率, 克服了協(xié)同過濾方法存在的數(shù)據(jù)稀疏性問題; 其次, 通過利用基于用戶的協(xié)同過濾方法進(jìn)行用戶相似度計算, 并利用基于項(xiàng)目的協(xié)同過濾方法進(jìn)行項(xiàng)目推薦的方式, 將兩種基于內(nèi)存的協(xié)同過濾方法相結(jié)合成為混合推薦方法, 優(yōu)化了推薦結(jié)果, 兼顧了推薦結(jié)果的流行度與個性化, 并保持了協(xié)同過濾推薦方法的優(yōu)越性; 再次, 基于項(xiàng)目文本信息進(jìn)行聚類, 使評分歷史不足的用戶能利用僅有的項(xiàng)目歷史獲得較合理、 有效的推薦, 在一定程度上緩解了協(xié)同過濾方法存在的冷啟動問題; 最后對該推薦方法進(jìn)行實(shí)證研究, 將其應(yīng)用到從GHTorrent獲取的真實(shí)GitHub數(shù)據(jù)上, 并通過實(shí)驗(yàn)對實(shí)驗(yàn)結(jié)果進(jìn)行評估. 實(shí)驗(yàn)結(jié)果表明, 在常見的幾個評估推薦系統(tǒng)的評價指標(biāo)上, 本文方法與兩種傳統(tǒng)基于內(nèi)存的協(xié)同過濾方法相比, 都有較優(yōu)越的表現(xiàn), 證實(shí)了該方法在面向領(lǐng)域入門的GitHub項(xiàng)目推薦問題上的可行性.

        猜你喜歡
        用戶方法
        學(xué)習(xí)方法
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        可能是方法不對
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        捕魚
        Camera360:拍出5億用戶
        亚洲精品一区二区三区大桥未久| 日韩人妻精品视频一区二区三区| 九九综合va免费看| 久久久久人妻一区精品色欧美 | 宝贝把腿张开我要添你下边动态图| 97精品国产91久久久久久久| 国产精品成人久久a级片| 国内嫩模自拍诱惑免费视频| 久久精品国产免费观看| 久久精品国产亚洲av成人| 国产无遮挡又黄又爽无VIP| 91熟女av一区二区在线| 中文字幕乱码高清完整版| a国产一区二区免费入口| 成人免费看aa片| 亚洲 欧美精品suv| 极品诱惑一区二区三区| 亚洲一区二区懂色av| 精品国际久久久久999波多野| 人妻少妇精品视中文字幕国语| 自慰高潮网站在线观看| 91久久香蕉国产熟女线看| 国产强被迫伦姧在线观看无码| 免费国精产品自偷自偷免费看| av无码特黄一级| 日本一区二区三级在线| 未满十八勿入av网免费| 在线一区不卡网址观看| 中文字幕国内一区二区| 一本色道久久亚洲综合| 久久精品人人做人人综合| 国产国语对白一区二区三区| 国产一区二区不卡av| 日韩av无码一区二区三区不卡| 精品久久久久久久中文字幕| 人妻av一区二区三区高| 久久一道精品一区三区| 亚洲av麻豆aⅴ无码电影| 五月婷网站| 极品少妇一区二区三区| 国产后入清纯学生妹|