為眾包軟件開(kāi)發(fā)者的個(gè)性化團(tuán)隊(duì)推薦

摘要

??大部分軟件開(kāi)發(fā)平臺(tái)采取比賽范式來(lái)征求來(lái)自團(tuán)隊(duì)的貢獻(xiàn)。為了在復(fù)雜任務(wù)中獲取競(jìng)賽力,眾包軟件開(kāi)發(fā)者通常選擇與他人協(xié)作。然而,已存在的眾包平臺(tái)通常承擔(dān)開(kāi)發(fā)者的獨(dú)立貢獻(xiàn),并且不為他們提供團(tuán)隊(duì)組建的有效支持。之前關(guān)于團(tuán)隊(duì)推薦的研究旨在通過(guò)為一個(gè)任務(wù)推薦最合適的團(tuán)隊(duì)來(lái)優(yōu)化任務(wù)結(jié)果,而不是為特定人員找到合適的合作者。在這項(xiàng)工作中,我們關(guān)注的是為眾包開(kāi)發(fā)者提供團(tuán)隊(duì)推薦。首先我們展示了Kaggle實(shí)證研究的結(jié)果:這表明開(kāi)發(fā)人員的個(gè)人隊(duì)友偏好主要受三個(gè)因素的影響。 第二,我們提供了一個(gè)協(xié)作意愿模型來(lái)表征開(kāi)發(fā)人員的隊(duì)友偏好,并將隊(duì)友推薦問(wèn)題制定為優(yōu)化問(wèn)題。 然后我們?cè)O(shè)計(jì)一個(gè)近似算法來(lái)為開(kāi)發(fā)人員找到合適的隊(duì)友。 最后,我們對(duì)Kaggle數(shù)據(jù)集進(jìn)行了一系列實(shí)驗(yàn),以評(píng)估我們方法的有效性。

CSS概念

軟件及其工程→編程團(tuán)隊(duì);軟件開(kāi)發(fā)協(xié)作,軟件創(chuàng)建和管理

摘要

眾包 協(xié)作意愿 團(tuán)隊(duì)推薦

1. 介紹

??作為一個(gè)流行的分布式的問(wèn)題解決模型,眾包已經(jīng)廣泛應(yīng)用于軟件開(kāi)發(fā)[1]。近幾年來(lái),許多眾包軟件開(kāi)發(fā)(CSD)平臺(tái)(例如:Kaggle[2]和Topcoder[3])旨在征求軟件開(kāi)發(fā)任務(wù)的解決方案。在CSD平臺(tái)中,任務(wù)請(qǐng)求者發(fā)布具有詳細(xì)描述和一定金額獎(jiǎng)勵(lì)的任務(wù)。然后開(kāi)發(fā)人員可以選擇單獨(dú)或協(xié)作參與,只有少數(shù)頂級(jí)開(kāi)發(fā)人員可以根據(jù)預(yù)先設(shè)定的規(guī)則獲得獎(jiǎng)勵(lì)。與眾包中的微任務(wù)不同,例如數(shù)據(jù)標(biāo)簽,軟件開(kāi)發(fā)任務(wù)對(duì)于個(gè)人而言通常過(guò)于復(fù)雜,因此開(kāi)發(fā)人員更愿意加入團(tuán)隊(duì)以確保軟件開(kāi)發(fā)的生產(chǎn)力和質(zhì)量。

??與眾包中的微任務(wù)不同,例如數(shù)據(jù)標(biāo)注,軟件開(kāi)發(fā)任務(wù)對(duì)于個(gè)人而言通常過(guò)于復(fù)雜,因此開(kāi)發(fā)人員更愿意加入團(tuán)隊(duì)以確保軟件開(kāi)發(fā)的生產(chǎn)力和質(zhì)量[4]。我們對(duì)Kaggle的實(shí)證研究揭示了團(tuán)隊(duì)協(xié)作的好處。然而,如今的像Kaggle這樣的CSD平臺(tái)沒(méi)有為團(tuán)隊(duì)的組建提供有效的支持。據(jù)我們所知,很少有人為眾包開(kāi)發(fā)者推薦隊(duì)友。

??團(tuán)隊(duì)推薦問(wèn)題已在各個(gè)領(lǐng)域得到廣泛研究。 在合作學(xué)習(xí)中,大量研究集中于將學(xué)生分配到合適的團(tuán)隊(duì),并基于專(zhuān)業(yè)知識(shí) - 不相似性目標(biāo)和專(zhuān)業(yè)知識(shí) - 獲得目標(biāo)來(lái)提升他們的技能[5][6]。 在項(xiàng)目開(kāi)發(fā)中,一些研究旨在通過(guò)推薦合適的任務(wù)團(tuán)隊(duì)來(lái)優(yōu)化任務(wù)結(jié)果[7][8][9][10]。 在員工培訓(xùn)中,一些工作試圖將員工分配到具有員工培訓(xùn)和項(xiàng)目成就的目標(biāo)的項(xiàng)目中[11]。在這些研究中,任務(wù)請(qǐng)求者將任務(wù)分配給推薦的團(tuán)隊(duì),這不能滿(mǎn)足想要找隊(duì)友的開(kāi)發(fā)人員的需求。 也有一些研究致力于挖掘人們的隊(duì)友偏好。 一些人對(duì)促使研究人員與各種合作伙伴合作的因素進(jìn)行了實(shí)證研究,發(fā)現(xiàn)個(gè)體特征和研究領(lǐng)域是合作的最強(qiáng)預(yù)測(cè)因子[12]。 然而,很少有研究涉及開(kāi)發(fā)人員的隊(duì)友喜好。

??在我們的工作中,我們的目標(biāo)是為眾包開(kāi)發(fā)人員研究個(gè)性化的隊(duì)友推薦方法。 首先,為了驗(yàn)證隊(duì)友推薦的重要性,我們對(duì)Kaggle進(jìn)行了實(shí)證研究。 我們的結(jié)果表明,開(kāi)發(fā)人員可以從團(tuán)隊(duì)合作中受益,他們對(duì)CSD平臺(tái)中的隊(duì)友推薦支持有很大的需求。 我們的分析還表明,開(kāi)發(fā)者的隊(duì)友偏好很大程度上受到三個(gè)因素的影響,包括與隊(duì)友的親密關(guān)系,與隊(duì)友的專(zhuān)業(yè)差異,通過(guò)協(xié)作獲得的專(zhuān)業(yè)知識(shí)。 其次,我們將開(kāi)發(fā)者的協(xié)作意愿定義為上述三個(gè)因素的加權(quán)總和,其中權(quán)重定義了開(kāi)發(fā)者的隊(duì)友偏好。 然后,個(gè)性化的隊(duì)友推薦問(wèn)題被制定為優(yōu)化團(tuán)隊(duì)的協(xié)作意愿的問(wèn)題。 第三,我們進(jìn)一步提供了量化這三個(gè)因素的方法,然后提出了一種基于線(xiàn)性規(guī)劃的方法,用他們的協(xié)作歷史來(lái)計(jì)算開(kāi)發(fā)人員的隊(duì)友偏好。 最后,根據(jù)開(kāi)發(fā)人員的個(gè)人隊(duì)友偏好,我們?cè)O(shè)計(jì)了一個(gè)帶有近似算法的隊(duì)友推薦方法,以最大化候選團(tuán)隊(duì)的協(xié)作意愿。

這項(xiàng)工作的主要貢獻(xiàn)如下:

  • 通過(guò)對(duì)Kaggle的實(shí)證研究,我們?yōu)榱藢?shí)現(xiàn)眾包軟件開(kāi)發(fā)的問(wèn)題,確定了個(gè)性化的隊(duì)友推薦。據(jù)我們所知,在CSD中研究這個(gè)問(wèn)題的很少。
  • 我們提出了一個(gè)稱(chēng)為團(tuán)隊(duì)協(xié)作意愿的度量標(biāo)準(zhǔn),通過(guò)考慮開(kāi)發(fā)人員的個(gè)人隊(duì)友偏好來(lái)衡量團(tuán)隊(duì)成功的可能性,并提供獲取偏好和計(jì)算協(xié)作意愿的方法。
  • 我們進(jìn)一步根據(jù)個(gè)人隊(duì)友的偏好,為眾包開(kāi)發(fā)者提供個(gè)性化的隊(duì)友推薦方法,并進(jìn)行一系列的實(shí)驗(yàn),通過(guò)與其他方法比較來(lái)評(píng)估我們的方法的性能。

2. KAGGLE的實(shí)證研究

為了驗(yàn)證我們研究的重要性,我們對(duì)Kaggle進(jìn)行了實(shí)證研究。 我們的目標(biāo)是回答以下三個(gè)研究問(wèn)題(RQ):

  • RQ1:團(tuán)隊(duì)協(xié)作是否對(duì)CSD的開(kāi)發(fā)人員很重要?
  • RQ2:在沒(méi)有隊(duì)友推薦的情況下,開(kāi)發(fā)人員在尋求隊(duì)友方面失敗是否常見(jiàn)?
  • RQ3:哪些因素會(huì)影響開(kāi)發(fā)人員的合作意愿? 開(kāi)發(fā)人員是否會(huì)根據(jù)這些因素顯示個(gè)人喜好選擇隊(duì)友?
    Google文檔?中提供了詳細(xì)信息:

2.1 數(shù)據(jù)準(zhǔn)備

??除了對(duì)競(jìng)賽的基本支持外,Kaggle還提供在線(xiàn)社區(qū),包括討論社區(qū)和內(nèi)核社區(qū),開(kāi)發(fā)人員可以在這里討論各種主題的問(wèn)題并分享想法。

??我們還從Kaggle抓取了一個(gè)數(shù)據(jù)集,涉及275個(gè)競(jìng)賽和74,354個(gè)開(kāi)發(fā)人員,他們從2010年4月到2018年1月完成了191,300個(gè)提交。我們還從kaggle的社區(qū)中抓取了開(kāi)發(fā)人員的社交數(shù)據(jù)。

2.2 團(tuán)隊(duì)協(xié)作的好處

??我們根據(jù)參加超過(guò)K場(chǎng)競(jìng)賽的選定開(kāi)發(fā)者的發(fā)展歷史,對(duì)開(kāi)發(fā)者在不同工作模式下的競(jìng)賽排名進(jìn)行了統(tǒng)計(jì)分析。 當(dāng)K設(shè)置為10和20時(shí),選擇的開(kāi)發(fā)人員數(shù)量為988和327.根據(jù)開(kāi)發(fā)人員的工作模式,我們將他們的開(kāi)發(fā)歷史劃分為個(gè)人模式和團(tuán)隊(duì)模式。 我們計(jì)算了在指定工作模式和他們自己的Top-K排名開(kāi)發(fā)歷史下,每個(gè)開(kāi)發(fā)人員完成的任務(wù)的比例,表示為Prop。結(jié)果如圖所示 1。 x軸表示Prop,而y軸表示開(kāi)發(fā)者的累積比率。 圖 1 顯示開(kāi)發(fā)者可以通過(guò)團(tuán)隊(duì)合作獲得更好的排名。 例如,k = 10曲線(xiàn)中的左兩點(diǎn)表明,對(duì)于988名開(kāi)發(fā)者中約60%的人來(lái)說(shuō),他們?cè)趫F(tuán)隊(duì)合作模式下參加的競(jìng)賽在他們自己的開(kāi)發(fā)史中排名前十,而這一比例僅為14.88%當(dāng)競(jìng)賽單獨(dú)完成時(shí)。

圖1 開(kāi)發(fā)人員在兩種模式下的表現(xiàn)

??之后,我們研究了與單獨(dú)工作相比,通過(guò)協(xié)作是否可以更快地提升開(kāi)發(fā)人員的專(zhuān)業(yè)知識(shí)。 我們使用Kaggle的評(píng)分系統(tǒng)來(lái)量化開(kāi)發(fā)者在每場(chǎng)競(jìng)賽中獲得的專(zhuān)業(yè)知識(shí)。 617名開(kāi)發(fā)人員被選來(lái)進(jìn)行分析,他們通過(guò)團(tuán)隊(duì)模式和個(gè)人模式參與的次數(shù)均大于2。 我們計(jì)算了團(tuán)隊(duì)合作模式和個(gè)人模式下每個(gè)開(kāi)發(fā)人員的平均專(zhuān)業(yè)知識(shí)收益,分別表示為G1和G2。 然后,我們將G1 / G2不同范圍內(nèi)的開(kāi)發(fā)人員數(shù)量相加,得到圖 2。 x軸表示G1/G2的范圍,y軸代表開(kāi)發(fā)人員的比例。 如圖 2 所示,與單獨(dú)工作相比,大多數(shù)(超過(guò)70%)開(kāi)發(fā)人員可以從團(tuán)隊(duì)合作中獲益更多,超過(guò)20%的開(kāi)發(fā)人員可以獲得3倍以上的收益。

圖2 617名開(kāi)發(fā)者的G1/G2分布

??從上面給出的分析中,開(kāi)發(fā)人員從團(tuán)隊(duì)協(xié)作中受益匪淺。

2.3 未能找到隊(duì)友的現(xiàn)象

??我們?yōu)g覽了數(shù)據(jù)集中的討論表,以選擇與其標(biāo)題中的術(shù)語(yǔ)團(tuán)隊(duì)(不區(qū)分大小寫(xiě))進(jìn)行討論。 我們選擇了500個(gè)被認(rèn)為是為尋找隊(duì)友而發(fā)布的討論。 通過(guò)討論發(fā)布者和評(píng)論者,我們確定了1987個(gè)有意組隊(duì)的開(kāi)發(fā)人員。 令人驚訝的是,最終只有825名開(kāi)發(fā)人員參加了競(jìng)賽,其中只有415名開(kāi)發(fā)人員在團(tuán)隊(duì)中工作。 我們可以推斷,只有20.9%的開(kāi)發(fā)人員成功合作,58.5%的開(kāi)發(fā)人員放棄參與,這可能是由于缺乏隊(duì)友。

??通常會(huì)看到開(kāi)發(fā)人員在尋找隊(duì)友方面失敗,因此為開(kāi)發(fā)人員提供隊(duì)友推薦至關(guān)重要。

2.3 影響因素和個(gè)人隊(duì)友偏好

??我們對(duì)這500個(gè)討論進(jìn)行了進(jìn)一步的分析。 事實(shí)證明,45%的發(fā)布者清楚地表明他們希望通過(guò)團(tuán)隊(duì)協(xié)作獲得專(zhuān)業(yè)知識(shí)的提升,其中77%的發(fā)布者要求技能熟練程度與他們相似的隊(duì)友。 我們可以得出這樣的結(jié)論:協(xié)作所獲專(zhuān)業(yè)知識(shí)的提升和團(tuán)隊(duì)成員專(zhuān)業(yè)知識(shí)的差異會(huì)影響開(kāi)發(fā)人員的協(xié)作意愿。

??我們根據(jù)開(kāi)始日期對(duì)數(shù)據(jù)集中的275個(gè)競(jìng)賽進(jìn)行了排序。 前245個(gè)比賽,約90%的數(shù)據(jù)集,用作歷史數(shù)據(jù)。 我們選擇了585名開(kāi)發(fā)人員,他們?cè)跉v史數(shù)據(jù)和其余30個(gè)競(jìng)賽中進(jìn)行了合作,以分析他們的協(xié)作關(guān)系,并發(fā)現(xiàn)75%的開(kāi)發(fā)人員與他們的前隊(duì)友合作。 開(kāi)發(fā)人員之間的親密關(guān)系可以通過(guò)協(xié)作關(guān)系來(lái)體現(xiàn),因此它也是影響開(kāi)發(fā)人員協(xié)作意愿的重要因素。

??從上面可以看出,開(kāi)發(fā)者對(duì)隊(duì)友提出了不同的要求。 一些討論發(fā)布者要求具有相似技能熟練程度的人組成團(tuán)隊(duì),有些人希望通過(guò)團(tuán)隊(duì)合作提升他們的專(zhuān)業(yè)知識(shí),而其他人則希望與前隊(duì)友合作。 因此,開(kāi)發(fā)者有自己的隊(duì)友喜好,這是我們的隊(duì)友推薦方法需要考慮在內(nèi)的。

3. 問(wèn)題制定

??受上述實(shí)證研究的啟發(fā),我們建議為開(kāi)發(fā)人員提供個(gè)性化的隊(duì)友推薦。 在本節(jié)中,我們首先介紹幾個(gè)重要概念,然后提供我們問(wèn)題的公式表述。
在CSD平臺(tái)中,開(kāi)發(fā)人員通常具有不同熟練程度的專(zhuān)業(yè)知識(shí)。 擁有更多經(jīng)驗(yàn)的開(kāi)發(fā)人員將更加熟練。令{\rm{u = \{ }}{u_{\rm{1}}}{\rm{,}}{u_{\rm{2}}}{\rm{, }}...{\rm{,}}{u_{\rm{n}}}{\rm{ \} }},是開(kāi)發(fā)人員的集合,任務(wù)中所需全部技能可以表示為一個(gè)集合:{\rm{S = \{ }}{{\rm{s}}_{\rm{1}}}{\rm{, }}{{\rm{s}}_{\rm{2}}}{\rm{, }}...{\rm{, }}{{\rm{s}}_{\rm{m}}}{\rm{\} }}. 我們引入技能熟練度的概念來(lái)表示開(kāi)發(fā)人員的技能水平。
定義1(技能熟練度):形式上,開(kāi)發(fā)人員({u_{{\rm{i }}}} \in u)掌握的的技能集合表示為{{\rm{S}}_u}{\rm{(}}{u_{\rm{i}}}{\rm{) }} \subset {\rm{S}},對(duì)于{u_{{\rm{i }}}}掌握的每個(gè)技能{{\rm{s}}_{\rm{k}}}(即{{\rm{s}}_{\rm{k}}} \subset {{\rm{S}}_u}{\rm{(}}{u_{\rm{i}}}{\rm{) }}),我們定義相應(yīng)的技能熟練程度為{\rm{Prof(}}{u_{\rm{i}}},{{\rm{s}}_{\rm{k}}}{\rm{) = }}\varepsilon _i^k \in [0,1],來(lái)表示{u_{{\rm{i }}}}掌握{{\rm{s}}_{{\rm{k}}}}的能力。
??任務(wù)請(qǐng)求者通常預(yù)先指定任務(wù)所需的技能。因此,我們引出了任務(wù)所需技能集的概念。

定義2(任務(wù)所需技能集):對(duì)于任務(wù)v,需要一組技能來(lái)保證其完成,這可以表示為集合S(v)。 根據(jù)所需技能的數(shù)量,任務(wù)可分為多技能任務(wù)和單技能任務(wù)。 特別地,我們的研究目前僅關(guān)注單一技能任務(wù),因此我們?cè)诒疚闹袑?img class="math-inline" src="https://math.jianshu.com/math?formula=S(v)" alt="S(v)" mathimg="1">視為{{\rm{s}}_{\rm{k}}}

??如2.4章節(jié)表明,團(tuán)隊(duì)協(xié)作中與隊(duì)友的親密關(guān)系,專(zhuān)業(yè)知識(shí)的差異和專(zhuān)業(yè)知識(shí)的獲得會(huì)影響開(kāi)發(fā)人員的協(xié)作意愿,開(kāi)發(fā)人員有這三個(gè)因素的個(gè)人隊(duì)友偏好。 人格,地理,語(yǔ)言等也會(huì)影響開(kāi)發(fā)人員的合作意愿,但本文不考慮這些因素。 給定一個(gè)開(kāi)發(fā)者團(tuán)隊(duì) {\rm{T = \{ }}{u_{\rm{1}}}{\rm{, }}{u_{\rm{2}}}{\rm{, }}...{\rm{, }}{u_l}{\rm{\} }},它是所需技能為{{\rm{s}}_{\rm{k}}}的任務(wù)v所形成的,對(duì)于任何開(kāi)發(fā)者{u_{\rm{i}}}T,讓{\rm{C(}}{u_{\rm{i}}}{\rm{ ,T )}} \in [0,1]表示{u_{\rm{i}}}T中成員的親密度,{\rm{ED(}}{u_{\rm{i}}}{\rm{ ,T ,}}{{\rm{s}}_{\rm{k}}}{\rm{)}} \in [0,1]代表{u_{\rm{i}}}{{\rm{s}}_{\rm{k}}}中與團(tuán)隊(duì)成員的專(zhuān)業(yè)差異。{\rm{EG(}}{u_{\rm{i}}}{\rm{ ,T ,}}{{\rm{s}}_{\rm{k}}}{\rm{)}} \in [0,1]代表{u_{\rm{i}}}{{\rm{s}}_{\rm{k}}}中通過(guò)團(tuán)隊(duì)協(xié)作的專(zhuān)業(yè)獲得。 開(kāi)發(fā)人員的協(xié)作意愿隨著{\rm{C(}}{u_{\rm{i}}}{\rm{ ,T )}}{\rm{EG(}}{u_{\rm{i}}}{\rm{ ,T ,}}{{\rm{s}}_{\rm{k}}}{\rm{)}}的增加而上升,隨著{\rm{ED(}}{u_{\rm{i}}}{\rm{ ,T ,}}{{\rm{s}}_{\rm{k}}}{\rm{)}}的增加而下降。\Pr eC = \{ ({\alpha _i},{\beta _i},{\gamma _i})|i \in [1,n]\}用于表示u中開(kāi)發(fā)者的隊(duì)友的偏好。{u_{\rm{i}}}在團(tuán)隊(duì)T中的協(xié)作意愿的公式可以形式化為:

\begin{array}{l} W({u_i},T) = {\alpha _i}*C({u_i},T) + {\beta _i}*(1 - ED({u_i},T,{s_k})) + \\ {\rm{ }}{\gamma _i}*EG({u_i},T,{s_k})\\ s.t.{\rm{ }}{u_i} \in T,{\alpha _i} + {\beta _i} + {\gamma _i} = 1{\rm{ }} and\\ {\alpha _i},{\beta _i},{\gamma _i},C({u_i},T),ED({u_i},T,{s_k}),EG({u_i},T,{s_k}) \in [0,1] \end{array}

其中{\alpha _i},{\beta _i},{\gamma _i}表示相應(yīng)因素對(duì)開(kāi)發(fā)商協(xié)作意愿的影響程度。 獲得PreC值和C({u_i},T),ED({u_i},T,{s_k}),EG({u_i},T,{s_k})的表示的方法將在下面的部分中介紹。

??基于上面介紹的定義,我們將個(gè)性化的隊(duì)友推薦問(wèn)題定義如下:

定義3(個(gè)性化團(tuán)隊(duì)推薦問(wèn)題):假設(shè)存在一個(gè)開(kāi)發(fā)者集合 {\rm{u = \{ }}{u_{\rm{1}}}{\rm{, }}{u_{\rm{2}}}{\rm{, }}...{\rm{, }}{u_n}{\rm{\} }},任務(wù)v的需求技能集合\{ {s_k}\},給定一個(gè)開(kāi)發(fā)者{u_i},他要為這個(gè)任務(wù)尋求N個(gè)隊(duì)友,個(gè)性化團(tuán)隊(duì)推薦問(wèn)題研究如何根據(jù)每個(gè)開(kāi)發(fā)者的個(gè)人隊(duì)友偏好,推薦具有高度協(xié)作意愿的最合適的N個(gè)隊(duì)友。

定義4(一個(gè)團(tuán)隊(duì)的合作意愿)
??團(tuán)隊(duì)是否可以組建是基于每個(gè)成員的意愿。 我們不僅要考慮到{u_i}的合作意愿,還要考慮所有其他成員的意愿。 因此,我們應(yīng)該確保每個(gè)成員的協(xié)作意愿不低于某個(gè)閾值threshold,這意味著團(tuán)隊(duì)中每個(gè)成員應(yīng)該滿(mǎn)足的最小協(xié)作意愿。 threshold可以從開(kāi)發(fā)人員的協(xié)作歷史中獲得,并將在章節(jié) 4.2中介紹。 同時(shí),我們需要最大化所有成員的協(xié)作意愿的平均值,這被定義為團(tuán)隊(duì)T的協(xié)作意愿:

\psi (T) = \frac{{\sum\nolimits_{{u_j} \in T} {W({u_j},T)} }}{{|T|}}

形式上,針對(duì)開(kāi)發(fā)者{u_i}的個(gè)性化團(tuán)隊(duì)推薦旨在獲得最佳團(tuán)隊(duì){T^*}

{T^*} = \arg \mathop {\max }\limits_T \psi (T) = \arg \mathop {\max }\limits_T \frac{{\sum\nolimits_{{u_j} \in T} {W({u_j},T)} }}{{|T|}} ?? {\rm{ (1)}}

使得 {\rm{T}} \subseteq {\rm{u,|T| = N + 1,}}{u_i} \in T,W({u_j},T) \ge {\rm{threshold}}
{T^*}\backslash \{ {u_i}\}是為{u_i}制定的隊(duì)友推薦的集合。

4. 建議的方法

??我們?cè)趫D3中給出了我們的推薦框架。為了量化團(tuán)隊(duì)的協(xié)作意愿,我們模擬了支配開(kāi)發(fā)人員協(xié)作意愿的三個(gè)因素,然后通過(guò)分析他們的協(xié)作歷史來(lái)表征開(kāi)發(fā)人員的個(gè)人隊(duì)友偏好并獲得他們最小的協(xié)作意愿。 最后,基于協(xié)作意愿,我們提出了一種近似算法來(lái)為開(kāi)發(fā)人員提供隊(duì)友推薦。

圖3 推薦框架

4.1 因素模型

??在這一部分中,我們介紹了支配開(kāi)發(fā)人員合作意愿的三個(gè)因素的具體表示。

??因素1(與隊(duì)友的親密度C({u_i},T) ) : 在CSD平臺(tái)中,開(kāi)發(fā)人員彼此通常有協(xié)作關(guān)系和社交互動(dòng),我們可以據(jù)此衡量開(kāi)發(fā)人員之間的整體親密度。

??定義5(基于協(xié)作關(guān)系的親密度C_1({u_i},T) ):開(kāi)發(fā)人員通常協(xié)作完成任務(wù),并經(jīng)常協(xié)作讓開(kāi)發(fā)人員更親密。我們引入基于協(xié)作關(guān)系的親密度,即C_1({u_i},T) \in [0,1],來(lái)表示在協(xié)作關(guān)系下u_iu_j有多親密。我們知道一般情況下:C_1({u_i},{u_j}) \ne C_1({u_j},{u_i})。令加權(quán)無(wú)向圖{{\rm{G}}^{\rm{a}}}{\rm{ = (u, }}{{\rm{R}}^{\rm{a}}}{\rm{ )}}代表開(kāi)發(fā)者的協(xié)作關(guān)系,這里u是開(kāi)發(fā)者集合,{{\rm{R}}^{\rm{a}}}代表他們的協(xié)作關(guān)系。\forall {({u _{\rm{i}}},{u _{\rm{j}}})^a} \in {{\rm{R}}^{\rm{a}}},邊的權(quán)重,\omega ({{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}^{\rm{a}}})代表{u_i}{u_j}之間的協(xié)作次數(shù)。{u_i}{u_j}多親密取決于{u_i}{u_j}{u_i}的整體合作關(guān)系中的合作關(guān)系比例:

{C_1}({u_i},T) = \frac{{\omega ({{{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}}^{\rm{a}}})}}{{\sum\nolimits_{{u_k} \in u} {\omega ({{{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}}^{\rm{a}}})} }}

??定義6(基于社交關(guān)系的親密度C_2({u_i},{u_j})):許多CSD平臺(tái)提供在線(xiàn)社區(qū),開(kāi)發(fā)人員可以在這里討論和分享想法。 社交互動(dòng)越頻繁,開(kāi)發(fā)人員關(guān)系越親密。 基于社會(huì)關(guān)系的親密度,{{\rm{C}}_{\rm{2}}}{\rm{(}}{u_{\rm{i}}}{\rm{,}}{u_{\rm{j}}}{\rm{)}} \in {\rm{[0,1]}},用于表示{u_{\rm{i}}}在社會(huì)關(guān)系下與{u_{\rm{j}}}的接近程度。 我們知道一般情況下:C_2({u_i},{u_j}) \ne C_2({u_j},{u_i})。令加權(quán)無(wú)向圖{{\rm{G}}^{\rm}}{\rm{ = (u, }}{{\rm{R}}^{\rm}}{\rm{ )}}代表開(kāi)發(fā)者的社會(huì)關(guān)系,這里u是開(kāi)發(fā)者集合,{{\rm{R}}^{\rm}}代表他們的社會(huì)關(guān)系。\forall {({u _{\rm{i}}},{u _{\rm{j}}})^b} \in {{\rm{R}}^{\rm}},邊的權(quán)重,\omega ({{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}^{\rm}})代表{u_i}{u_j}之間的社會(huì)關(guān)系次數(shù)。{u_i}{u_j}多親密取決于{u_i}{u_j}{u_i}的整體社會(huì)關(guān)系中的社會(huì)關(guān)系比例:

{C_2}({u_i},T) = \frac{{\omega ({{{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}}^{\rm}})}}{{\sum\nolimits_{{u_k} \in u} {\omega ({{{\rm{(}}{u _{\rm{i}}}{\rm{,}}{u _{\rm{j}}}{\rm{)}}}^{\rm}})} }}

??我們將{u_i}{u_j}之間的整體親密度表示為:

C({u_i},{u _{\rm{j}}}) = \omega *{C_1}({u_i},{u _{\rm{j}}}) + (1 - \omega ){C_2}({u_i},{u _{\rm{j}}})

這里\omega \in [0,1]代表{C_1}({u_i},{u _{\rm{j}}})的權(quán)重。注意:C({u_i},{u_j}) \ne C({u_j},{u_i})

{C}({u_i},T)定義為{u_i}T中其他成員的綜合親密度的平均值,表示如下:

{C_2}({u_i},T) = \frac{{\sum\nolimits_{\forall {u _j} \in T \wedge {u _i} \ne {u _j}} {C({u _i},{u _j})} }}{{|T| - 1}}

??因素2(與隊(duì)友的專(zhuān)業(yè)能力差異ED({u_i},T,{s_k}) ) : 專(zhuān)業(yè)知識(shí)差異削弱了開(kāi)發(fā)人員的團(tuán)隊(duì)合作意愿。 不失一般性,{u_i}{u_j}之間的技能{s_k}技能的專(zhuān)業(yè)差異定義為:{D^k}({u _i},{u _j}) = |\varepsilon _i^k - \varepsilon _j^k| .

ED({u_i},T,{s_k})定義為{u_i}T中其他成員在{s_k}中的專(zhuān)業(yè)差異的平均值,表示如下:

ED({u_i},T,{s_k}) = \frac{{\sum\nolimits_{\forall {u _j} \in T \wedge {u _i} \ne {u _j}} {{D^k}({u _i},{u _j})} }}{{|T| - 1}}

??因素3(團(tuán)隊(duì)協(xié)作的專(zhuān)業(yè)知識(shí)獲得EG({u_i},T,{s_k}) ) : 許多開(kāi)發(fā)人員希望通過(guò)團(tuán)隊(duì)合作來(lái)提升他們的專(zhuān)業(yè)知識(shí)。 受Jiawei Zhang等人的啟發(fā)[11],我們定義一個(gè)增益函數(shù)來(lái)衡量開(kāi)發(fā)人員技能熟練程度的提高。 首先,我們介紹團(tuán)隊(duì)T的技能熟練程度,表示為\Pr of(T,{s_k})\,然后表示開(kāi)發(fā)人員從團(tuán)隊(duì)獲得的專(zhuān)業(yè)知識(shí)。

??定義7 團(tuán)隊(duì)的技能熟練程度(\Pr of(T,{s_k})\):給定一個(gè)開(kāi)發(fā)者團(tuán)隊(duì)T = \{ {u_1},{u_2}, \cdots ,{u_l}\},以及任務(wù)v的所需求的技能s_k的熟練水平{\{ \varepsilon _i^k\} _{{u_i} \in T}},s_k的團(tuán)隊(duì)技能熟練程度可以定義為:

\Pr of(T,{s_k}) = 1 - \prod\limits_{{u _{\rm{i}}} \in T} {(1 - \varepsilon _i^k)}

??整體團(tuán)隊(duì)熟練程度是團(tuán)隊(duì)的一個(gè)重要特征,既體現(xiàn)了團(tuán)隊(duì)的競(jìng)賽力,也體現(xiàn)了團(tuán)隊(duì)成員專(zhuān)業(yè)知識(shí)獲得的空間。 形式上,當(dāng)與團(tuán)隊(duì)T合作時(shí),在s_k中的u_i的專(zhuān)業(yè)知識(shí)獲得可以表示為:

EG({u_i},T,{s_k}) = \Pr of(T,{s_k}) - \Pr of({u _{\rm{i}}},{s_k})

4.2 參數(shù)估計(jì)

??根據(jù)章節(jié)3,我們需要獲得最低協(xié)作意愿threshold和開(kāi)發(fā)者隊(duì)友偏好\Pr eC = \{ ({\alpha _i},{\beta _i},{\gamma _i})|i \in [1,n]\}.
??假設(shè)在開(kāi)發(fā)人員的協(xié)作歷史中,由于他們?cè)谧栽傅幕A(chǔ)上合作,每個(gè)團(tuán)隊(duì)成員非常愿意合作。 令{R_i} = \{ {T_1},{T_2}, \cdots ,{T_k}\}代表u_i的合作歷史,{s^{{T_j}}}代表T_j相應(yīng)的單一技能任務(wù)所需的技能,其中{{\rm{T}}_{\rm{j}}} \in {{\rm{R}}_{\rm{i}}}。 我們?cè)?strong>算法1的描述中同時(shí)學(xué)習(xí)thresholdPreC 。當(dāng)thresholdPreC是相關(guān)的,學(xué)習(xí)過(guò)程是迭代的。在給定threshold的情況下,三元組({\alpha _i},{\beta _i},{\gamma _i})是:通過(guò)最大化u_i所有協(xié)作歷史的協(xié)作意愿總和,并保證u_i在每個(gè)團(tuán)隊(duì)中的協(xié)作意愿不低于threshold而得到的,如公式(2)所示。 給定threshold,方程式(2)是典型的線(xiàn)性規(guī)劃問(wèn)題,我們可以通過(guò)典型的線(xiàn)性規(guī)劃方法得到({\alpha _i},{\beta _i},{\gamma _i})。我們將閾值初始化為0,通過(guò)一個(gè)指定步長(zhǎng)增加閾值,直到\exists {u_i} \in u,此時(shí)沒(méi)有有效的解答,然后我們可以得到threshold的一個(gè)近似解,我們根據(jù)它獲得PreC的值。

({\alpha _i},{\beta _i},{\gamma _i}) = \arg \mathop {\max }\limits_{({\alpha _i},{\beta _i},{\gamma _i})} \sum {W({u_i},T)}

s.t.\forall T \in {R_i},W({u_i},T) \ge threshold,and ?? (2)

{\alpha _i} + {\beta _i} + {\gamma _i} = 1{\rm{ }},{\alpha _i},{\beta _i},{\gamma _i} \in [0,1]{\rm{ }}

4.3 目標(biāo)函數(shù)和算法

??獲得PreC后,開(kāi)發(fā)人員的隊(duì)友偏好就被定性了。 結(jié)合因素1-3,對(duì)于任何給定的團(tuán)隊(duì)T,\forall {u_i} \in T,我們可以計(jì)算u_i的協(xié)作意愿{W({u_i},T)}。 然后,我們可以得到我們的目標(biāo)函數(shù)的具體表示,表示為公式(1)。 為了向開(kāi)發(fā)人員推薦最合適的隊(duì)友,一個(gè)簡(jiǎn)單直接的解決方案是遍歷所有候選人并找到所需的N個(gè)隊(duì)友,這是不可行的,因?yàn)橛?jì)算復(fù)雜度是O({n^N}),其中n代表候選人的數(shù)量,N代表所需隊(duì)友的數(shù)量。

???????? 算法1 ?? 獲得隊(duì)員偏好 & 閾值
要求: u = \{ {u_1},{u_2}, \cdots ,{u_n}\} ,R = \{ {R_1},{R_2}, \cdots ,{R_n}\}

確保: \Pr eC = \{ ({\alpha _i},{\beta _i},{\gamma _i})|i \in [1,n]\} ,threshold

1: threshold = 0,step = 0
2: while {\rm{ True }} do
3:??{\rm{ }}\forall {\rm{i}} \in {\rm{[1,n],}} 通過(guò)公式(2)獲得({\alpha _i},{\beta _i},{\gamma _i})
{\rm{4:}}??if{\rm{ }} \exists {\rm{i}} \in {\rm{[1,n],}}({\alpha _i},{\beta _i},{\gamma _i})是無(wú)效的, then
5:????break
6:??end if
7:??threshold+=step
8:??Prec=\{({\alpha _i},{\beta _i},{\gamma _i}) | i \in [1,n]\}
9: end while
10:threshold-=step
11:\forall {\rm{i}} \in {\rm{[1,n],}},通過(guò)公式(2)獲得({\alpha _i},{\beta _i},{\gamma _i})
12:return (PreC,threshold)

??我們提出了一種近似算法PTR來(lái)解決這個(gè)問(wèn)題,偽代碼在算法2中提出。PTR是一種貪心算法:給定一個(gè)隊(duì)員尋求者u_i,PTR遍歷候選集合{\rm{u\backslash \{ }}{u_{\rm{i}}}{\rm{\} }}以找到隊(duì)友u_j,其中\neg \exists {u_l} \in {\rm{u\backslash \{ }}{u_i}{\rm{\} }},\Psi (\{ {u_i},{u_l}\} ) > \Psi (\{ {u_i},{u_j}\} ),根據(jù)團(tuán)隊(duì)\{ {u_i},{u_j}\}PTR繼續(xù)遍歷候選集合{\rm{u\backslash \{ }}{u_i},{u_j}{\rm{\} }}以找到隊(duì)友u_k,其中\neg \exists {u_l} \in {\rm{u\backslash \{ }}{u_i},{u_j}{\rm{\} }},\Psi (\{ {u_i},{u_j},{u_l}\} ) > \Psi (\{ {u_i},{u_j},{u_k}\} ),這個(gè)過(guò)程繼續(xù),直到推薦的隊(duì)友數(shù)達(dá)到N. PTR的計(jì)算復(fù)雜度僅為O(n*N)。

???????? 算法2 ?? 個(gè)性化隊(duì)友推薦
要求: 隊(duì)友尋求者{u_i},需要找N個(gè)隊(duì)友$
要求: 隊(duì)友候選者集合:u = \{ {u_1},{u_2}, \cdots ,{u_n}\} \backslash \{ {u_i}\},任務(wù)v的需求技能s_k
要求:threshold,\Pr eC = \{ ({\alpha _i},{\beta _i},{\gamma _i})|i \in [1,n]\}
確保: 推薦隊(duì)友集合 :\{ u_1^,,u_2^,, \cdots ,u_N^ , \}
1:T = \{ {u_i}\} ,teamsize = 1
2:while teamsize < N + 1 do
3:??遍歷u尋找 u^,:\neg \exists {u_l} \in {\rm{u\backslash \{ }}{u^,}{\rm{\} }},\Psi (T \cup \{ {u_l}\} ) > \Psi (T \cup \{ {u^,}\} ),
???? and \forall {u_k} \in T \cup \{ {u^,}\} ,W({u_k},T \cup \{ {u^,}\} ) > threshold成立
4:??T = T \cup \{ {u^,}\} ,u = u\backslash \{ {u^,}\}
5:??teamsize+=1
6:end while
7:return T\backslash \{ {u^,}\}

5. 實(shí)驗(yàn)

??在本節(jié)中,我們將介紹數(shù)據(jù)集和實(shí)驗(yàn)設(shè)置。 然后給出實(shí)驗(yàn)結(jié)果并進(jìn)行分析。

5.1 數(shù)據(jù)集描述

??我們使用了從Kaggle收集的數(shù)據(jù)集,其中涉及從2010年4月到2018年1月的275個(gè)競(jìng)賽和74,354個(gè)開(kāi)發(fā)人員。該數(shù)據(jù)集包含19,300個(gè)開(kāi)發(fā)人員的競(jìng)賽記錄,我們可以從中獲得開(kāi)發(fā)人員的技能熟練程度和協(xié)作關(guān)系。 我們還從Kaggle的討論社區(qū)和內(nèi)核社區(qū)中爬取到他們的社交數(shù)據(jù),以挖掘他們的社交關(guān)系。488,722對(duì)開(kāi)發(fā)人員通過(guò)協(xié)作或社交關(guān)系進(jìn)行關(guān)聯(lián)。 我們實(shí)驗(yàn)中使用的數(shù)據(jù)集可在GitHub中找到。

5.2 實(shí)驗(yàn)設(shè)置

??Kaggle中的任務(wù)都是數(shù)據(jù)科學(xué)競(jìng)賽,所涉及的技能組合是S = \{ {s_1}\},其中s_1表示數(shù)據(jù)科學(xué)。 我們利用Kaggle的評(píng)分系統(tǒng)根據(jù)開(kāi)發(fā)歷史獲得開(kāi)發(fā)人員的分?jǐn)?shù)。 通過(guò)線(xiàn)性歸一化,我們獲得了他們的技能熟練程度{\rm{Prof(}}{u_i},{s_i}{\rm{)}} \in {\rm{[0,1]}}.基于協(xié)作和社會(huì)關(guān)系,我們得到了開(kāi)發(fā)人員之間的整體親密度{\rm{C(}}{u_i},{u_j}{\rm{)}}\omega,基于協(xié)作關(guān)系的密度的權(quán)重,設(shè)置為0.7。
??在我們的實(shí)驗(yàn)中選擇了3,808名合作次數(shù)不少于2的開(kāi)發(fā)人員。 我們首先用章節(jié)4.2中介紹的方法獲取了他們的隊(duì)友偏好PreCthreshold。 之后,我們將我們的工作與其他方法進(jìn)行了比較。 比較方法包括:

  • 親密度優(yōu)先(CF):CF在推薦過(guò)程中考慮了開(kāi)發(fā)人員之間的密切關(guān)系,并且該方法在以前的工作中被廣泛使用[8]。 CF中不考慮技能熟練程度。
  • 專(zhuān)業(yè)知識(shí)獲得優(yōu)先(EGF):EGF旨在最大限度地提高團(tuán)隊(duì)成員的專(zhuān)業(yè)知識(shí),并在協(xié)作學(xué)習(xí)領(lǐng)域采用該方法[6].
  • 專(zhuān)業(yè)知識(shí)差異優(yōu)先(EDF):EDF旨在最大限度地減少成員的專(zhuān)業(yè)知識(shí)差異,同時(shí)不考慮開(kāi)發(fā)人員之間的密切關(guān)系和專(zhuān)業(yè)知識(shí)獲得。
  • 最佳(Optimal):此方法遍歷開(kāi)發(fā)人員集以找到理論上最優(yōu)的解決方案。

所有實(shí)驗(yàn)均在具有Core i7-6700 3.4GHZ和8GB內(nèi)存的臺(tái)式計(jì)算機(jī)上進(jìn)行。

5.3 實(shí)驗(yàn)結(jié)果

??當(dāng)N = 1,2,3時(shí),我們分別得到了我們的方法和比較方法的推薦結(jié)果,并計(jì)算了每種方法推薦團(tuán)隊(duì)的協(xié)作意愿的平均值。 如表??所示
??如表中所示,我們的方法可以推薦具有更高協(xié)作意愿的團(tuán)隊(duì),并且優(yōu)于現(xiàn)有方法(Optimal除外),因?yàn)槲覀兊姆椒紤]了三個(gè)因素和個(gè)人隊(duì)友偏好,而CF,EGFEDF只考慮一個(gè)因素分別影響協(xié)作意愿。 Optimal的結(jié)果證明了理論上最大的協(xié)作意愿。 然而,Optimal獲得推薦結(jié)果時(shí),具有最高的計(jì)算復(fù)雜度(O({n^N}),其中n是候選者的數(shù)量,N是所需隊(duì)友的數(shù)量)。 當(dāng)N = 2時(shí),獲得3808開(kāi)發(fā)人員的所有推薦結(jié)果需要數(shù)小時(shí),而其他方法只需幾分鐘。 對(duì)于所有3,808名開(kāi)發(fā)人員和N = 3,Optimal至今已運(yùn)行30天,但尚未完成。 當(dāng)N = 1時(shí),Optimal的結(jié)果與我們的方法相同,因?yàn)槲覀兊姆椒ū闅v所有候選者以向開(kāi)發(fā)人員推薦一個(gè)隊(duì)友。 值得注意的是我們的方法可以獲得與Optimal類(lèi)似的結(jié)果,計(jì)算復(fù)雜度僅為O(n * N)。

6. 結(jié)論

??在本文中,我們通過(guò)對(duì)Kaggle的實(shí)證研究,確定了眾包軟件開(kāi)發(fā)的個(gè)性化隊(duì)友推薦問(wèn)題。 然后,我們提出了一種方法,通過(guò)根據(jù)開(kāi)發(fā)人員的個(gè)人隊(duì)友偏好最大化團(tuán)隊(duì)的協(xié)作意愿來(lái)解決問(wèn)題。 在Kaggle數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)驗(yàn)證了我們方法的有效性。
??在未來(lái),我們將研究涉及多種開(kāi)發(fā)技能的隊(duì)友推薦,并在為新手提供推薦時(shí)嘗試解決冷啟動(dòng)問(wèn)題。

致謝

??這項(xiàng)工作部分得到了中國(guó)國(guó)家重點(diǎn)研究發(fā)展計(jì)劃的批準(zhǔn),編號(hào)為2016YFB1000804,部分得到了國(guó)家自然科學(xué)基金項(xiàng)目(61421003,61702024)和部分SKLSDE實(shí)驗(yàn)室的批準(zhǔn)號(hào)SKLSDE-2017ZX-14的支持。 Hailong Sun是本文的通訊作者。

參考文獻(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,156評(píng)論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,041評(píng)論 2 59
  • 下課了,鹿姐叫了CC和YY到跟前。這兩個(gè)六年級(jí)的大男孩,身高一個(gè)172一個(gè)175。 “不生氣啦?”鹿姐...
    jingjing_閱讀 343評(píng)論 0 2
  • http://blog.51cto.com/dl528888/1440775
    SkTj閱讀 264評(píng)論 0 0
  • 1.關(guān)注了微博的分享圖片這個(gè)功能,覺(jué)得這個(gè)小設(shè)計(jì)超級(jí)棒,便于用戶(hù)分享內(nèi)容。比較喜歡的設(shè)計(jì):微博的截圖分享,簡(jiǎn)書(shū)的復(fù)...
    Bersheka閱讀 331評(píng)論 0 0

友情鏈接更多精彩內(nèi)容