基于多目标整数规划模型的拍照任务定价

发表时间:2021/6/9   来源:《科学与技术》2021年第29卷2月5期   作者:温亚杰 指导教师:徐旋
[导读] 本文针对互联网中"拍照赚钱"任务如何定价问题建立了基于多元回归模型以及系统聚类的数学模型.
        温亚杰  指导教师:徐旋
        武汉学院信息工程学院
        摘要:本文针对互联网中"拍照赚钱"任务如何定价问题建立了基于多元回归模型以及系统聚类的数学模型.考虑到实际情况下,多个任务位置比较集中,因此将距离相近的任务打包发布.本文在建立多元回归模型时,将任务坐标,会员坐标,会员数量以及会员预定任务限额作
为影响因素,将任务的定价作为因变量,过拟合的方法,得到最优函数。
        关键词:指标选取,数据预处理,多元线性回归




一、研究内容:
        今有一批新的项目任务数据,包括任务编号、任务 GPS 纬度、任务 GPS 经度,请利用第八章学习的知识,对这一批任务进行定价,并评估任务的执行完成情况。具体数据请见附件三:新项目任务数据,其表结构如表1所示。
     

二、分析
        根据题意,需要解决两个问题,一是对新项目任务数据进行定价,二是评估任务的执行情况。因此,分成两部分进行分析求解。具体为内容2.2,2.3。
2.1  任务与会员位置地图
        通过 Python 读取附件1的已结束任务数据、附件2的会员数据、附件3的新项目任务数据,利用 folium 包,依次将任务和会员位置绘制在地图上,其中黑色圆点表示已结束任务,红色圆圈点表示会员,蓝色圆圈点表示新项目任务。
        结果如f.html所示,部分如下图1:
        

        从图可以清晰的了解到任务与会员之间的分布情况。
2.2  任务定价
        即对附件3新项目任务数据进行定价,可以通过附件1已结束的任务数据,进行模型训练和预测,得到附件3的任务定价。自变量为:11个指标,因变量为:任务定价。大致过程如下图2所示:
        

2.2.1  指标选取
        读取数据,代码:
        A=pd.read_excel('附件1:已结束项目任务数据.xls')
        B=pd.read_excel('附件2:会员信息数据.xls')
        C=pd.read_excel('附件3:新项目任务数据.xls')
        
        根据第八章所学内容,设置11个指标,所下表2所示:
   
        其中Q为公里。
        将计算指标定义为fun1(A,B)函数,其中A表示任务数据,B为会员数据。计算附件1已结束任务与附件2会员数据的11个指标,结果记为a,代码为:a=fun.fun1(A,B);计算附件3新项目任务数据与附件2会员数据的11个指标,结果记为b,代码为:b=fun.fun1(C,B)。
        为了使得附件3的任务基本完成,价格合理,所以只选取附件1,已执行的任务作为已知数据,即任务执行情况为1的数据。代码为:
      
2.2.2  数据预处理
        数据预处理过程定义为fun2(a,b)函数,其中a表示指标数据,b表示主成分分析时,要求达到的累计贡献率。数据预处理主要有四个部分:空值填充,相关性分析,标准化处理,主成分分析。返回结果有5个数据,为R1(相关系数矩阵),x(主成分),tzxl(特征向量),tz(特征值),gxl(累积贡献率)。对选取的指标数据a,b进行预处理,处理后数据分别记为a1,b1。代码为:
        #数据预处理,空值填充,相关性分析,标准化处理,主成分分析
        a1=fun.fun2(a,0.9)
        b1=fun.fun2(b,0.95)
        其中两个数据的累积贡献率不同,因为要使得a1、b1所得到的主成分个数一致,都为6个。得到的主成分分别记为x1,x2,为自变量,结果分别如下图:
        
    
2.2.3  多元线性回归
        定义自变量,因变量数据,代码为:
        y=A.iloc[:,3].values #附件1 任务定价
        x1=a1[1]   #进行主成分分析后,附件1 已被执行任务数据 自变量
        y1=y[c==1] #附件1 已被执行任务定价,因变量
        x2=b1[1]   #进行主成分分析后,附件3 新项目任务数据 自变量
        
        对训练数据构建线性回归模型,得到判定系数,代码如下:
        #多元线性回归
        from sklearn.linear_model import LinearRegression as LR
        lr = LR() #创建线性回归模型类
        lr.fit(x1, y1) #拟合
        Slr=lr.score(x1,y1) # 判定系数 R^2
        c_x=lr.coef_ # x 对应的回归系数
        c_b=lr.intercept_ # 回归系数常数项
        print('多元线性判定系数: ',Slr)
        
        输出结果如下:
        
2.2.4  神经网络模型预测
        以附件1已执行任务为训练数据,自变量为主成分分析后x1,因变量为已执行任务的任务定价y1;预测数据为附件3新项目任务数据,自变量为x2,构建神经网络模型预测新项目任务数据的任务定价y2。代码如下:
    
即y2为题目所求的任务定价,将结果保存,得到已定价的新项目任务数据,存为附件4。


2.3  任务执行情况
2.3.1  指标选取
        导入数据,代码如下:
        A=pd.read_excel('附件1:已结束项目任务数据.xls')
        B=pd.read_excel('附件2:会员信息数据.xls')
        C=pd.read_excel('附件4:新项目任务数据已定价.xls')
        根据附件1已结束任务数据作为训练,附件4已定价好的新项目任务数据作为测试数据。自变量选取为13个,增加一定范围内所有任务定价的平均值指标、任务定价指标,具体如下表3所示:
       
        其中Q为公里。
        其中前12个指标计算定义为fun3(A,B)函数,代码如下:
        a=fun.fun3(A,B)#计算附件1已结束项目任务的12个指标数据
        b=fun.fun3(C,B)#计算附件3新项目任务的12个指标数据
        #数据预处理,空值填充
        a=pd.DataFrame(a)
        a=a.fillna(0)
        b=pd.DataFrame(b)
        b=b.fillna(0)

2.3.2  自变量因变量
        训练数据自变量为xx,训练数据因变量为yy,测试数据自变量为x1,预测任务执行情况,结果记为y1。代码如下:
        xx=pd.concat((a,A.iloc[:,[3]]),axis=1) #12 个指标+任务定价,自变量
        xx=xx.as_matrix() #转化为数组
        A4=A.iloc[:,4].values
        yy=A4.reshape(len(A4),1) #任务执行情况,因变量
        
        x1=pd.concat((b,C.iloc[:,[3]]),axis=1) #12 个指标+任务定价,自变量
        x1=x1.as_matrix() #转化为数组

2.3.3  支持向量机模型
        以附件1的全部数据作为训练,构建支持向量机模型,得到模型准确率,预测准确率,用训练好的模型,预测得到新项目任务数据的执行情况。具体代码如下:
        #对自变量与因变量按训练 80%、测试 20%随机拆分
        from sklearn.model_selection import train_test_split
        xx_train, xx_test, yy_train, yy_test = train_test_split(xx, yy, test_size=0.2,random_state=4)
        from sklearn import svm
        #用高斯核,训练数据类别标签作平衡策略
        clf = svm.SVC(kernel='rbf',class_weight='balanced')
        clf.fit(xx_train, yy_train)
        rv1=clf.score(xx_train, yy_train);#模型准确率
        yy1=clf.predict(xx_test)
        yy1=yy1.reshape(len(yy1),1)
        r=yy_test-yy1
        rv2=len(r[r==0])/len(r) #预测准确率
        print('支持向量模型准确率: ',rv1)
        print('支持向量预测准确率: ',rv2)
        
       
        用训练好的模型对新任务执行情况进行预测,结果记为y1,代码如下:
        y1=clf.predict(x1)
即y1为题目所求任务执行情况,对结果进行输出保存,存为附件5,即对附件3的新项目任务数据预测好定价及执行情况。

三、结果
3.1  任务定价结果
        附件3新项目任务的任务定价部分结果如下图5所示,具体如附件4。
        
       

3.2  任务执行情况结果
        附件4已定价新项目任务的任务执行情况结果如下图6所示,具体如附件5。
        
   
        根据结果显示,任务执行情况都为1,表示新项目任务根据定价,所有任务都能被执行。得到这样的结果可能是因为,新项目任务的定价是根据附件1已执行的任务训练预测导致,可能是预测得到的任务定价都是比较偏低较为合适的。
        如果在新项目任务定价时,选取附件1的所有数据,包括未执行任务数据作为训练,可能就会得到不一样的结果,预测附件3任务执行情况会出现未被执行的任务。
四未来展望
        "拍照赚钱"后绪是移动互联网下的一种自助式服务模式.用户下载APP,注册成为APP的会员,然后从APP上领取需要拍照的任务(比如上超市去检查某种商品的上架情况),赚取APP对任务所标定的酬金.这是一种基于移动互联网的自助式劳务众包平台,APP即为该平台运行的核心,而实际情况下,多个任务可能因为位置比较集中,导致用户会争相选择,一种考虑是将这些任务联合在一起打包发布,在这种考虑下,就需要修改原本的定价模型来匹配这种打包方案.针对这个问题,我们使用0-1规划,聚类分析等数学方法,运用了Lingo和XGeocoding软件,并结合实际情况,确定了定价模型.

参考文献:
[1]基于“拍照赚钱”任务定价的优化模型    贺艳琴    现代营销(经营版)    2020-09-01
[2]基于非线性回归的“拍照赚钱”多任务打包定价模型    李俊; 卓应广; 秦丽文    中小企业管理与科技(中旬刊)    2020-05-15
[3]基于多元线性回归的“拍照赚钱”的任务定价模型    房越; 许乾宸; 高振    经济研究导刊    2019-08-25
[4]基于“拍照赚钱”任务建立打包定价模型    李亦筱; 薛从康; 朱美鑫; 胡西娟    知识经济    2019-07-01
依托项目:湖北省教育厅科学研究计划项目-指导性项目B2018361基于大数据挖掘的企业决策系统研究,教育部科技发展中心项目高校产学研创新基金项目-新一代信息技术创新项目2018A02016基于大数据的行业系统推荐研究
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: