譚鴻樂(lè),沈春龍,何嘉欣
(南華大學(xué)計(jì)算機(jī)學(xué)院,衡陽(yáng) 421001)
現(xiàn)如今,服務(wù)型中小型企業(yè)如果要尋求程序員為企業(yè)開(kāi)發(fā)軟件,可以在一些IT網(wǎng)站上進(jìn)行招聘,如程序員客棧、豬八戒網(wǎng)、碼市等平臺(tái),或者是在各種貼吧、論壇上發(fā)布需求。但是這些方式都存在著諸多的問(wèn)題。其中,需求方能否準(zhǔn)確地辨識(shí)開(kāi)發(fā)方的能力是首要問(wèn)題。同時(shí),大部分需求方是非專業(yè)的,正如喻珠晗[1]在軟件外包的風(fēng)險(xiǎn)研究中發(fā)現(xiàn)軟件外包行業(yè)存在著外包方選擇不合理的問(wèn)題,有可能出現(xiàn)因技術(shù)能力或管理能力不足,無(wú)法按期完成合同,甚至最終無(wú)法交付的情況。這些平臺(tái)對(duì)于需求方并不那么友好,缺乏合適的推薦算法來(lái)緩解需求方“找人”難的問(wèn)題。本文嘗試運(yùn)用基于軟件項(xiàng)目的協(xié)同過(guò)濾的推薦算法,對(duì)不同需求方群體進(jìn)行分類,在需求方群體中進(jìn)行協(xié)同過(guò)濾推薦,實(shí)現(xiàn)優(yōu)質(zhì)匹配。
目前市面上的軟件外包平臺(tái)面向的是專業(yè)開(kāi)發(fā)者,流程繁瑣并且開(kāi)發(fā)費(fèi)用昂貴。而中小型企業(yè)希望的是便捷與低成本開(kāi)發(fā),陸俊宏等人[2]也在其研究的軟件外包策略中指出軟件外包的目的就是企業(yè)為了能夠在提升自身核心競(jìng)爭(zhēng)力的同時(shí)降低軟件項(xiàng)目的成本,把軟件項(xiàng)目中的所有或者部分工作發(fā)包給能夠進(jìn)行外包服務(wù)的企業(yè)進(jìn)而完成的軟件需求活動(dòng)。因此,需要一個(gè)能夠智能匹配開(kāi)發(fā)者跟中小企業(yè)需求方的軟件外包平臺(tái)。而該平臺(tái)的核心是智能匹配算法,其使系統(tǒng)智能地推薦開(kāi)發(fā)者,以此來(lái)優(yōu)化軟件外包行業(yè)中的需求方“找人”這一行為,而算法的設(shè)計(jì)就是本文研究的內(nèi)容。
就目前市面上的情況來(lái)看,其主流推薦算法主要是基于內(nèi)容的推薦算法、基于規(guī)則的推薦算法、協(xié)同過(guò)濾推薦算法等[3]。
基于內(nèi)容的推薦算法是依靠用戶的歷史數(shù)據(jù)建立描述用戶興趣愛(ài)好的興趣模型,對(duì)興趣模型進(jìn)行特征向量的比較來(lái)進(jìn)行推薦。陳昌鳳等人[4]探討了基于內(nèi)容的個(gè)性化新聞推薦算法,其優(yōu)點(diǎn)是不依賴其他用戶的數(shù)據(jù),直接建立在用戶興趣與內(nèi)容特征的相似度匹配上,推薦結(jié)果往往與用戶過(guò)去喜歡的某條新聞具有相關(guān)性以及較強(qiáng)的可解釋性。
基于規(guī)則的推薦算法利用的是用戶閱讀過(guò)的感興趣的內(nèi)容,以這些內(nèi)容為基礎(chǔ),應(yīng)用規(guī)則來(lái)推測(cè)用戶的興趣行為,比如未瀏覽過(guò)卻可能感興趣的內(nèi)容,這種算法需要的是規(guī)則的制定。向程冠等人[5]通過(guò)計(jì)算用戶發(fā)布的碎片信息相似度,把相似的信息作為一條交易數(shù)據(jù),生成交易數(shù)據(jù)庫(kù),然后利用改進(jìn)后的AprioriTid算法計(jì)算出2階大項(xiàng)集,構(gòu)建推薦規(guī)則庫(kù),實(shí)現(xiàn)了基于關(guān)聯(lián)規(guī)則的社交網(wǎng)絡(luò)好友推薦算法。
協(xié)同過(guò)濾推薦算法利用了用戶之間興趣愛(ài)好具有的相似性對(duì)目標(biāo)用戶進(jìn)行推薦。該推薦算法是目前最廣泛被應(yīng)用于推薦系統(tǒng),同時(shí)也是比較成熟和成功的推薦技術(shù)。而且其在電商類網(wǎng)站應(yīng)用最為廣泛,楊恒等人[6]在對(duì)電商平臺(tái)協(xié)同過(guò)濾算法的模型研究中指出其協(xié)同過(guò)濾算法是根據(jù)相似購(gòu)買(mǎi)特征的顧客或者相似屬性特征的商品數(shù)據(jù)進(jìn)行線性分析,將偏好接近的顧客或者特征相似度高的商品形成鄰集,最終把它們推薦給顧客的一種決策方法。
(1)需求偏好推理
需求偏好是需求方發(fā)布的軟件項(xiàng)目所產(chǎn)生的開(kāi)發(fā)需要、部署環(huán)境需要、難易程度偏好、價(jià)格偏好等行為的總稱。要對(duì)需求方進(jìn)行開(kāi)發(fā)者推薦,最重要的是識(shí)別需求方的偏好。識(shí)別需求方偏好是為后續(xù)進(jìn)行相似性計(jì)算、推薦開(kāi)發(fā)者的篩選做好推薦的基礎(chǔ)。
(2)目標(biāo)需求方與信息完整度高的需求方之間的相似性計(jì)算
系統(tǒng)目標(biāo)需求方Aa的需求偏好受其軟件項(xiàng)目的架構(gòu)、難易程度或應(yīng)用場(chǎng)景等要素影響,這些影響因素對(duì)相似需求方的影響程度是非常接近的,因此可以根據(jù)相似需求方的開(kāi)發(fā)者偏好來(lái)推理目標(biāo)需求方的開(kāi)發(fā)者偏好。
相似性計(jì)算方法采用改進(jìn)的余弦相似性計(jì)算方法計(jì)算目標(biāo)需求方與已知需求方群之間的相似性。令UA為目標(biāo)需求方,Un為系統(tǒng)中已有需求方群中的第n個(gè)需求方。選擇相似性高的N個(gè)需求方組成相似需求方集AUA,將其偏好定義為目標(biāo)需求方的偏好。需求方相似性計(jì)算表達(dá)式為公式(1):
(1)
(3)目標(biāo)需求方的偏好評(píng)分預(yù)測(cè)
因?yàn)椴煌男枨蠓酱嬖谥町悾瑸榱藴p少誤差,要根據(jù)需求方實(shí)際情況判斷其對(duì)某開(kāi)發(fā)者的偏好程度。本文用目標(biāo)需求方對(duì)某開(kāi)發(fā)者的偏好評(píng)分表示對(duì)其偏好的程度。
(2)
(1)需求方軟件項(xiàng)目要素
本文選取的軟件外包平臺(tái)的需求方軟件項(xiàng)目要素主要有以下三類:需求方基本信息BID(Basic Information of Demander)、需求方歷史軟件項(xiàng)目HSPD(The Historical Software Project of The Demander)及需求方當(dāng)前軟件項(xiàng)目需求CSPRD(Current Software Project Requirements of Demanders)。需求方軟件項(xiàng)目模型表示為:Software_Project={BID,HSPD,CSPRD}。
其中BID、HSPD、CSPRD各取3個(gè)要素:BID={Cs,Csn,Cib};HSPD={Hsptp,Hspl,Hspt};CSPRD={Csprc,Csprl,Csprp}。需求方軟件項(xiàng)目要素的說(shuō)明如表1所示。
表1 需求方軟件項(xiàng)目要素的說(shuō)明
續(xù)上表
(2)偏好模型構(gòu)建
選擇用戶需求方基本信息BID、需求方歷史軟件項(xiàng)目HSPD、需求方當(dāng)前軟件項(xiàng)目需求CSPRD三個(gè)軟件項(xiàng)目維度,使用貝葉斯網(wǎng)絡(luò)推理,分別構(gòu)建基于BID的偏好子模型、基于HSPD的偏好子模型、基于CSPRD的偏好子模型。在此基礎(chǔ)上,統(tǒng)計(jì)了三個(gè)維度構(gòu)建的偏好子模型對(duì)于需求方偏好的影響權(quán)重,偏好模型構(gòu)建的思路如圖1所示。
圖1 需求方多維偏好模型構(gòu)建過(guò)程
(3)子模型偏好概率
構(gòu)建對(duì)應(yīng)的貝葉斯網(wǎng)絡(luò)拓?fù)鋱D,需要以需求方偏好作為父節(jié)點(diǎn),并分別以目標(biāo)需求方的BID、HSPD、CSPRD作為子節(jié)點(diǎn),每一子節(jié)點(diǎn)都會(huì)形成一個(gè)對(duì)應(yīng)需求方偏好概率,令Bi為A條件下偏好開(kāi)發(fā)者的概率,其通用計(jì)算公式(3)如下:
(3)
當(dāng)A為目標(biāo)需求方的BID、HSPD、CSPRD時(shí),可分別計(jì)算出需求方在BID、HSPD、CSPRD條件下對(duì)開(kāi)發(fā)者的偏好概率,取其中最大值作為需求方在BID、HSPD、CSPRD條件下的偏好推薦方案。
(4)需求方多維偏好模型構(gòu)建
一般情況下,雖然基于需求方基本信息BID、需求方歷史軟件項(xiàng)目HSPD及需求方當(dāng)前軟件項(xiàng)目需求CSPRD等單一因素條件下所分析得出的推薦結(jié)果具有一定的準(zhǔn)確性,但是實(shí)際情況多種多樣,誤差往往隨著影響因素的增加而增大,因此要提高推薦精準(zhǔn)度需綜合多種影響因素來(lái)修正需求方偏好。為使需求方偏好模型更符合實(shí)際需求,加上權(quán)重系數(shù)K,令KBID、KHSPD、KCSPRD分別為基于BID、HSPD、CSPRD的三類需求方偏好概率模型的權(quán)重系數(shù)。對(duì)應(yīng)的公式(4)計(jì)算需求方A對(duì)開(kāi)發(fā)者的偏好概率,并選取最優(yōu)值作為推薦方案。
P(Bi|A)=KBID×P(Bi|ABID)+KHSPD×P(Bi|AHSPD)+KCSPRD×P(Bi|ACSPRD)
(4)
本文選取需求方軟件項(xiàng)目需求的相關(guān)信息作為樣本群,并隨機(jī)選取一條軟件項(xiàng)目需求作為研究樣本,樣本需求方軟件項(xiàng)目需求信息如表2所示。
表2 樣本需求方軟件項(xiàng)目需求信息
得到樣本需求方軟件項(xiàng)目對(duì)開(kāi)發(fā)者推薦結(jié)果如表3所示,其中基于需求方基本信息的推薦為序號(hào){1,2,3,4},基于需求方歷史軟件項(xiàng)目的推薦為序號(hào){5,6,7,8},基于需求方當(dāng)前軟件項(xiàng)目需求的推薦為序號(hào){9,10,11,12},基于需求方軟件項(xiàng)目多維偏好推薦為序號(hào){13,14,15,16}。通過(guò)各類算法計(jì)算需求方對(duì)開(kāi)發(fā)者的偏好概率,取前4項(xiàng)推薦開(kāi)發(fā)者的主要屬性,并與軟件項(xiàng)目的實(shí)際需求作對(duì)比,結(jié)果符合其軟件項(xiàng)目需求規(guī)律,其中采用多維推薦算法得出的推薦結(jié)果在所命中的軟件項(xiàng)目需求比較全面,表明該算法更符合目標(biāo)需求方的軟件項(xiàng)目開(kāi)發(fā)需求規(guī)律。
表3 不同算法下推薦的開(kāi)發(fā)者結(jié)果
推薦結(jié)果的評(píng)價(jià)一般由準(zhǔn)確率Pr和召回率Re來(lái)確定,召回率是指符合需求方偏好的推薦開(kāi)發(fā)者數(shù)量在需求方偏好集中的比例;準(zhǔn)確率是指符合需求方偏好的推薦,令Hi為符合需求方實(shí)際偏好的開(kāi)發(fā)者總數(shù),Li為需求方i偏好集中開(kāi)發(fā)者總數(shù),M為樣本需求方總數(shù),N表示推薦開(kāi)發(fā)者的總數(shù)。則準(zhǔn)確率Pr和召回率Re如公式(5)、(6)所示。
(5)
(6)
為提高推薦準(zhǔn)確度,需要引入調(diào)和平均數(shù)V,如公式7所示。以部分需求方軟件項(xiàng)目需求作為基礎(chǔ),得不同推薦模型的評(píng)價(jià)結(jié)果,如表4所示。從表4可知,多維偏好模型的V值高于其他模型算法,即開(kāi)發(fā)者推薦準(zhǔn)確度更高,較其他算法更有優(yōu)越性。
表4 不同推薦模型的評(píng)價(jià)結(jié)果
本文針對(duì)軟件外包行業(yè)中的需求方“找人”這一行為進(jìn)行了優(yōu)化,設(shè)計(jì)了一種基于軟件項(xiàng)目多維需求要素的外包平臺(tái)開(kāi)發(fā)者推薦策略。軟件外包平臺(tái)推薦模塊可以根據(jù)需求方的偏好向需求方主動(dòng)推薦開(kāi)發(fā)者,通過(guò)實(shí)驗(yàn)表明該方法推薦的開(kāi)發(fā)者具有一定的準(zhǔn)確性,讓系統(tǒng)智能推薦,節(jié)省非專業(yè)的需求方因?yàn)椤罢胰恕倍ㄙM(fèi)的大量時(shí)間以及金錢(qián)。