基于spark的投资机构个性化推荐

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第32卷第4期Vol.32No.42017年11月Nov.2017汕头大学学报(自然科学版)JournalofShantouUniversity(NaturalScience)文章编号:1001-4217(2017)04-0056-08基于spark的投资机构个性化推荐陈贵涛,屈建勤,严談坤(汕头大学计算机科学与技术系广东汕头515063)摘要在spark大数据技术平台上,根据交替最小二乘协同过滤算法(AlternatingLeastSquares)对投资融资行业的历史数据进行分析建模,提出并构建该行业个性化推荐应用解决方案.该解决方案通过向初创企业推荐可靠的投资机构,能够更快、更好的满足企业的融资需求,具有重要的现实意义和商业价值.根据投资融资行业特点,提出图计算作为统计分析的方法,给出了处理投资融资领域数据的评分算法,采用springMVC架构实现了微型WEB推荐系统,最后结合实际实验数据给出了推荐模型评价标准并给出该推荐系统的优化思路.关键词Spark;大数据;交替最小二乘协同过滤算法;图计算;推荐系统;投资融资中图分类号TP3文献标志码A0引言投资界权威研究机构一清科研究中心发布数据显示:2016上半年中外创业投资机构新募集基金173支,新增可投资于中国大陆的资本量为788.60亿元人民币,单支基金平均募集规模达6.26亿元人民币,单支基金平均募资规模同环比上升幅度很大;投资方面,2016上半年共发生1264起投资案例,同比下降33.3%,其中1052起披露金额的交易共计涉及584.95亿元人民币,同比下降12.5%,平均投资规模达5560.40万元人民币,与2015年同期相比,投资活跃度下降.由上述数据可知,虽然可投资金额上涨,但实际投资量下降,资本投资遇冷.以往在中国的创业投资领域各类财务顾问、创业平台、资本中介搜集到的项目策划书(BP)经过简单的分类,直接发送给投资机构.创业公司在整个过程中只能等待投资机构的反馈,处境十分被动,很难及时满足创业公司迫切的融资需求.在当前的全民创业时代众多新生创业公司将面临较大的融资压力.若资本投资持续遇冷,创业公司将面临大面积倒闭的风险,直接导致大量人员失业.反之,若创业公司能及时融资,公司存活率大大增加,将创造更多就业机会,减轻当前就业压力.因此,在创业投资领域为创业公司提供投资机构的个性化推荐成为一种必然需求.然而,国内鲜有投资领域成熟的个性化推荐应用.收稿日期:2017-02-24作者简介:陈贵涛(1987—),男,河南信阳人,硕士,研究方向:大数据、软件工程.E-mail:14gtchen@stu.edu.cn.第4期陈贵涛等:基于spark的投资机构个性化推荐57创业投资领域积累了几十年的创投数据,这些数据记录了大量的成功和失败的融投案例.随着大数据技术逐渐成熟,为存储分析这些历史数据提供了很好技术支撑.因此,构建投资领域的个性化推荐成为可能.本文给出了构建微型WEB推荐系统实例,并提出将图计算作为统计分析的方法,给出了处理投资领域数据评分算法,结合实际实验数据给出了推荐模型评价标准并给出推荐系统的优化思路.1spark与个性化推荐1.1spark起初,spark[1]是一个类似于hadoopp_4]的计算框架.随着开源社区的贡献,spark成长为一个基于内存的开源并行分布式集群通用计算框架,试图给出大数据运算一站式解决方案.spark主要由graphx[51、MLlib[6]、sparkstreaming、sparkSQL等组件构成.spark的graphx提供了优秀图计算API,适合于图计算.MLlib是一个机器学习库:弓I人的RDW数据模型并应用内存存储计算中间结果的特性非常适合构建大型迭代式数据挖掘/机器学习应用.sparkstreaming用于实时和批处理计算:spark的低延迟执行引擎,虽然比不上专门的流式数据处理软件,但也可以用于实时计算.此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法.sparkSQL是一个用来处理结构化数据的spark组件.它提供了一个叫做DataFrames的可编程抽象数据模型,并且可被视为一个分布式的SQL查询引擎.spark组件架构如图1,本文主要使用适用于图计算的graphx与机器学习库MLlib组件.1.2个性化推荐个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务.个性化推荐实现细分市场和精准营销,目标是“给每个用户信息服务定制化”.目前国内个性化推荐主要应用于商品推荐、广告.个性化搜索,阅读推荐等领域应用还有待发展.典型的个性化推荐WEB应用包括4个模块:用户基本信息与行为信息的收集模块,分析用户喜好的模型分析模块和推荐算法模块,对推荐结果提供展示的可视化模块.在推荐算法领域,各种算法及其改进层出不穷.目前推荐算法[8]主要有:协同过滤推荐、内容推荐、关联规则推荐、知识推荐、混合推荐等.针对具体的应用场景,各种推荐算法有各自的优缺点.本文采用spark-MLlib库中交替最小二乘协同过滤算法[7]属于协同过滤算法,该算法详细内容可查阅标题4部分.但个性化推荐还面临着数据稀疏性、冷启动、多样性与精确性的两难困境、大数据处理与增量计算等问题[8].这些问题成为当前个性化推荐研究领域的热点.2获取数据与预处理MLlibsparkstreamingsparkcore(dataframe/rdd/dataset)Sparksqlgraphx图1spark组件架构在公开网站IT桔子上爬取创业公司与投资机构的历史融投数据共20785条,作为构建本次推荐应用数据源.数据爬取采用python编写爬虫实现,并保存数据为txtxsv格58汕头大学学报(自然科学版)第32卷式,主要数据属性如表1.本次获取的数据并不能直接使用,需要对数据进行预处理.对于数据缺失,常规处理方法主要有三种:(1)用平均值、中值、分位数、众数、随机值等替代;(2)用其他变量做预测模型来算出缺失变量;(3)把变量映射到高维空间.由于本次数据缺失比较极端:本次获取的全部数据中899条(约占总共爬取数据的4.33%)数据项缺失比较严重,因此直接删除该部分数据.对有个别数据项缺失的少量噪声数据(共8条)采用(1)中描述的众数处理.处理后的数据样例如表1.将处理后的19886条数据存储到mysql5.5中.创建数据库表存储创业公司、投资机构、投资事件对应的数据.表1数据样例融资时间融资公司公司的种类融资轮次公司地址融资金额投资方2016.7.8天舍文化游戏A轮上海1000万人民币顺荣三七互娱统计是数据分析的重要方式,能够获得数据的隐含信息.传统统计分析一般采用python,matlab或者数据仓库技术.但普通python、matlab应用很难对大规模数据进行统计分析,而数据仓库技术需要数据建模.图计算模型由很多个节点(vertex)构成,节点之间通过边(edge)连接,节点和边中都包含了计算状态数据.在社交网络中如Twitter、Facebook,图模型很好的反应了人与人的关系,节点表示个体,边表示不同个体之间的联系.图模型可以很好的反映本文所述创业公司与投资机构的关系.因此本文采用图计算的方法对抓取的数据进行统计分析.spark的graphx提供了优秀图计算API,这里使用graphx做了不同角度的统计.统计结果以json格式保存,并使用echart3展示出统计结果.这样在html5页面中可以直观的查看数据分布情况,如投资次数最大值、最小值、联合投资等.统计效果展示如图2—5所示.次教行处180015001200讀麟職赚1542900-:UUL图3项目领域-融资次数概3模型训练与预测交替最小二乘协同过滤算法(AlternatingLeastSquares)是一种基于矩阵分解[9]的协同过滤算法.用户一商品推荐应用中,常常缺少足够的用户对商品评分数据.ALS算法能第4期陈贵涛等:基于spark的投资机构个性化推荐59投资资次数TOPS投资机构及与之关联融资公司,GrowinglO•天概⑩抽100•鶴睐不用筹BSWOPS拥及与2^6»醐图4TOP5投资机构-融资公司关联图很好的处理这类数据稀疏场景,算法思想大致如下文所述,公式中各变量详细说明请参照ALS™,这里不再赘述.(1)定义一个预测模型(数学公式),在推荐系统中常常是用户一商品模型,如公式(1)R=UTxP(1)7?表示用户对产品的偏好评分矩阵,W代表用户对隐含特征的偏好矩阵,P表示产品的隐含特征矩阵.(2)然后确定一个损失函数如公式(2)所示:f(U,P)=+IXlIrf)⑵其中~表示用户/对产品评分;表示中第f个用户特征向量;是P中第j个产品特征向量,A是正则系数;~表示用户的个数;%表示产品的个数.(3)从用于实验的数据总体中划分出训练集.(4)不断迭代最小化损失函数的值,从而求得参数f;和P.其迭代步骤是:首先随机初始化利用ALS参考文献中公式更新得到P,然后利用的表达式更新f;,直到RMSE(均方根误差)变化小于给定阈值或者达到最大迭代次数为止,本次实验使用MLlib库默认设置.RMSE计算方法如公式(3).(5)把学习到的模型用做预测.本文以创业公司的视角结合历史融投数据对投资机构进行打分,构建出训练测试集.打分规则如下文所述,客观性尚待考证,仅作为本次实验的处理办法.本文所述推荐系统关键点是从初始数据获得评分,好的评分算法将得到较好训练效果,反之训练效果较差.评分算法描述如下:(1)选择特征本次仅选取投资的轮次、投资次数、投资机构成立时间三维特征,其中投资次数由统计而来,没有考虑公司类别、公司地址等其他难以统一量化的属性.60汕头大学学报(自然科学版)第32卷投资的轮次投资机构成立时间投资次数图6层次结构图(2)确定特征权重采用层次分析法[11]确定本次特征的权重,但层次分析法确定特征重要性程度时依赖于领域知识、经验,主观性较强,建立的模型—可靠性可能存在一定的问题.具体流程如下:投资的轮次(m,)、投资次数(m2)、投资机构成立时间(m3)三维特征,建立层次结构如图6.办.根据上述三维特征间相对重要性,构造判表2判定矩阵定矩阵M,本次构造的M如表2所示.—m--—C.按文献[11]所述方法求解M的特征向量并归—m,I4^54—一化得到权向量W经一致性检验后若具备满5/415意的一致性,则W表示特征权重.IV=[Wl,w2,W3],—--------------------------------i—其中^,1/2,^分别表示投资的轮次、投资次数、投资机构成立时间的权重.A判断矩阵一致性检验,确定权向量W,本次试验中求得W值为Wl=0.4,w2=0.5,w3=0.1.(3)确定特征值对评分归一化到[0-10]之间.对投资轮次天使轮至E轮的特征赋值范围为(1-10),例如天使轮10分,A轮9分,B轮8分等依次衰减记为投资次数按最大值中间值,均值,最小值划分段依次衰减赋值记为&和投资机构成立时间按60年代,70年代等依次衰减赋值记为(4)计算出历史融投事件数据中创业公司对投资机构评分.每个投资机构最终得分为计算公式(4):score=w^i+W2S2+W3S3(4)评分后得出txt格式存储的数据如表3.机构评表3评分样例分数据的75%用来训练模型,剩下的25%进行测试国创业公司编号投资机构编号~评分使用IntelliJIDEA编写调用spark-MLlib中iI8.5ALS算法的scala作业程序,该作业中需要设置初____r___________2________始值,综合计算资源与多次试验尝试:迭代次数numlterations取10:表示userFeatures和itemFeatures的个数的rank取8,正则化参数lambda取0.01.使用ALS算法对训练集数据进行反复训练,并用测试集对模型进行测试.通过计算RMSE(平均误差平方和开根号)来调整迭代的次数,RMSE值越小模型效果越

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功