面向软件外包平台的协同过滤推荐算法的研究
2021-09-09谭鸿乐沈春龙何嘉欣
谭鸿乐,沈春龙,何嘉欣
(南华大学计算机学院,衡阳 421001)
0 引言
现如今,服务型中小型企业如果要寻求程序员为企业开发软件,可以在一些IT网站上进行招聘,如程序员客栈、猪八戒网、码市等平台,或者是在各种贴吧、论坛上发布需求。但是这些方式都存在着诸多的问题。其中,需求方能否准确地辨识开发方的能力是首要问题。同时,大部分需求方是非专业的,正如喻珠晗[1]在软件外包的风险研究中发现软件外包行业存在着外包方选择不合理的问题,有可能出现因技术能力或管理能力不足,无法按期完成合同,甚至最终无法交付的情况。这些平台对于需求方并不那么友好,缺乏合适的推荐算法来缓解需求方“找人”难的问题。本文尝试运用基于软件项目的协同过滤的推荐算法,对不同需求方群体进行分类,在需求方群体中进行协同过滤推荐,实现优质匹配。
1 相关工作
目前市面上的软件外包平台面向的是专业开发者,流程繁琐并且开发费用昂贵。而中小型企业希望的是便捷与低成本开发,陆俊宏等人[2]也在其研究的软件外包策略中指出软件外包的目的就是企业为了能够在提升自身核心竞争力的同时降低软件项目的成本,把软件项目中的所有或者部分工作发包给能够进行外包服务的企业进而完成的软件需求活动。因此,需要一个能够智能匹配开发者跟中小企业需求方的软件外包平台。而该平台的核心是智能匹配算法,其使系统智能地推荐开发者,以此来优化软件外包行业中的需求方“找人”这一行为,而算法的设计就是本文研究的内容。
就目前市面上的情况来看,其主流推荐算法主要是基于内容的推荐算法、基于规则的推荐算法、协同过滤推荐算法等[3]。
基于内容的推荐算法是依靠用户的历史数据建立描述用户兴趣爱好的兴趣模型,对兴趣模型进行特征向量的比较来进行推荐。陈昌凤等人[4]探讨了基于内容的个性化新闻推荐算法,其优点是不依赖其他用户的数据,直接建立在用户兴趣与内容特征的相似度匹配上,推荐结果往往与用户过去喜欢的某条新闻具有相关性以及较强的可解释性。
基于规则的推荐算法利用的是用户阅读过的感兴趣的内容,以这些内容为基础,应用规则来推测用户的兴趣行为,比如未浏览过却可能感兴趣的内容,这种算法需要的是规则的制定。向程冠等人[5]通过计算用户发布的碎片信息相似度,把相似的信息作为一条交易数据,生成交易数据库,然后利用改进后的AprioriTid算法计算出2阶大项集,构建推荐规则库,实现了基于关联规则的社交网络好友推荐算法。
协同过滤推荐算法利用了用户之间兴趣爱好具有的相似性对目标用户进行推荐。该推荐算法是目前最广泛被应用于推荐系统,同时也是比较成熟和成功的推荐技术。而且其在电商类网站应用最为广泛,杨恒等人[6]在对电商平台协同过滤算法的模型研究中指出其协同过滤算法是根据相似购买特征的顾客或者相似属性特征的商品数据进行线性分析,将偏好接近的顾客或者特征相似度高的商品形成邻集,最终把它们推荐给顾客的一种决策方法。
2 协同过滤推荐算法
2.1 算法推荐流程
(1)需求偏好推理
需求偏好是需求方发布的软件项目所产生的开发需要、部署环境需要、难易程度偏好、价格偏好等行为的总称。要对需求方进行开发者推荐,最重要的是识别需求方的偏好。识别需求方偏好是为后续进行相似性计算、推荐开发者的筛选做好推荐的基础。
(2)目标需求方与信息完整度高的需求方之间的相似性计算
系统目标需求方Aa的需求偏好受其软件项目的架构、难易程度或应用场景等要素影响,这些影响因素对相似需求方的影响程度是非常接近的,因此可以根据相似需求方的开发者偏好来推理目标需求方的开发者偏好。
相似性计算方法采用改进的余弦相似性计算方法计算目标需求方与已知需求方群之间的相似性。令UA为目标需求方,Un为系统中已有需求方群中的第n个需求方。选择相似性高的N个需求方组成相似需求方集AUA,将其偏好定义为目标需求方的偏好。需求方相似性计算表达式为公式(1):
(1)
(3)目标需求方的偏好评分预测
因为不同的需求方存在着差异,为了减少误差,要根据需求方实际情况判断其对某开发者的偏好程度。本文用目标需求方对某开发者的偏好评分表示对其偏好的程度。
(2)
2.2 需求方偏好模型构建
(1)需求方软件项目要素
本文选取的软件外包平台的需求方软件项目要素主要有以下三类:需求方基本信息BID(Basic Information of Demander)、需求方历史软件项目HSPD(The Historical Software Project of The Demander)及需求方当前软件项目需求CSPRD(Current Software Project Requirements of Demanders)。需求方软件项目模型表示为:Software_Project={BID,HSPD,CSPRD}。
其中BID、HSPD、CSPRD各取3个要素:BID={Cs,Csn,Cib};HSPD={Hsptp,Hspl,Hspt};CSPRD={Csprc,Csprl,Csprp}。需求方软件项目要素的说明如表1所示。
表1 需求方软件项目要素的说明
续上表
(2)偏好模型构建
选择用户需求方基本信息BID、需求方历史软件项目HSPD、需求方当前软件项目需求CSPRD三个软件项目维度,使用贝叶斯网络推理,分别构建基于BID的偏好子模型、基于HSPD的偏好子模型、基于CSPRD的偏好子模型。在此基础上,统计了三个维度构建的偏好子模型对于需求方偏好的影响权重,偏好模型构建的思路如图1所示。
图1 需求方多维偏好模型构建过程
(3)子模型偏好概率
构建对应的贝叶斯网络拓扑图,需要以需求方偏好作为父节点,并分别以目标需求方的BID、HSPD、CSPRD作为子节点,每一子节点都会形成一个对应需求方偏好概率,令Bi为A条件下偏好开发者的概率,其通用计算公式(3)如下:
(3)
当A为目标需求方的BID、HSPD、CSPRD时,可分别计算出需求方在BID、HSPD、CSPRD条件下对开发者的偏好概率,取其中最大值作为需求方在BID、HSPD、CSPRD条件下的偏好推荐方案。
(4)需求方多维偏好模型构建
一般情况下,虽然基于需求方基本信息BID、需求方历史软件项目HSPD及需求方当前软件项目需求CSPRD等单一因素条件下所分析得出的推荐结果具有一定的准确性,但是实际情况多种多样,误差往往随着影响因素的增加而增大,因此要提高推荐精准度需综合多种影响因素来修正需求方偏好。为使需求方偏好模型更符合实际需求,加上权重系数K,令KBID、KHSPD、KCSPRD分别为基于BID、HSPD、CSPRD的三类需求方偏好概率模型的权重系数。对应的公式(4)计算需求方A对开发者的偏好概率,并选取最优值作为推荐方案。
P(Bi|A)=KBID×P(Bi|ABID)+KHSPD×P(Bi|AHSPD)+KCSPRD×P(Bi|ACSPRD)
(4)
3 实验与评价
3.1 实验实例
本文选取需求方软件项目需求的相关信息作为样本群,并随机选取一条软件项目需求作为研究样本,样本需求方软件项目需求信息如表2所示。
表2 样本需求方软件项目需求信息
得到样本需求方软件项目对开发者推荐结果如表3所示,其中基于需求方基本信息的推荐为序号{1,2,3,4},基于需求方历史软件项目的推荐为序号{5,6,7,8},基于需求方当前软件项目需求的推荐为序号{9,10,11,12},基于需求方软件项目多维偏好推荐为序号{13,14,15,16}。通过各类算法计算需求方对开发者的偏好概率,取前4项推荐开发者的主要属性,并与软件项目的实际需求作对比,结果符合其软件项目需求规律,其中采用多维推荐算法得出的推荐结果在所命中的软件项目需求比较全面,表明该算法更符合目标需求方的软件项目开发需求规律。
表3 不同算法下推荐的开发者结果
3.2 评价与结果分析
推荐结果的评价一般由准确率Pr和召回率Re来确定,召回率是指符合需求方偏好的推荐开发者数量在需求方偏好集中的比例;准确率是指符合需求方偏好的推荐,令Hi为符合需求方实际偏好的开发者总数,Li为需求方i偏好集中开发者总数,M为样本需求方总数,N表示推荐开发者的总数。则准确率Pr和召回率Re如公式(5)、(6)所示。
(5)
(6)
为提高推荐准确度,需要引入调和平均数V,如公式7所示。以部分需求方软件项目需求作为基础,得不同推荐模型的评价结果,如表4所示。从表4可知,多维偏好模型的V值高于其他模型算法,即开发者推荐准确度更高,较其他算法更有优越性。
表4 不同推荐模型的评价结果
4 结语
本文针对软件外包行业中的需求方“找人”这一行为进行了优化,设计了一种基于软件项目多维需求要素的外包平台开发者推荐策略。软件外包平台推荐模块可以根据需求方的偏好向需求方主动推荐开发者,通过实验表明该方法推荐的开发者具有一定的准确性,让系统智能推荐,节省非专业的需求方因为“找人”而花费的大量时间以及金钱。