陳貴濤,屈建勤,嚴坤
(汕頭大學計算機科學與技術系 廣東 汕頭 515063)
基于spark的投資機構個性化推薦
(汕頭大學計算機科學與技術系 廣東 汕頭 515063)
在spark大數據技術平臺上,根據交替最小二乘協(xié)同過濾算法(Alternating Least Squares)對投資融資行業(yè)的歷史數據進行分析建模,提出并構建該行業(yè)個性化推薦應用解決方案.該解決方案通過向初創(chuàng)企業(yè)推薦可靠的投資機構,能夠更快、更好的滿足企業(yè)的融資需求,具有重要的現(xiàn)實意義和商業(yè)價值.根據投資融資行業(yè)特點,提出圖計算作為統(tǒng)計分析的方法,給出了處理投資融資領域數據的評分算法,采用springMVC架構實現(xiàn)了微型WEB推薦系統(tǒng),最后結合實際實驗數據給出了推薦模型評價標準并給出該推薦系統(tǒng)的優(yōu)化思路.
Spark;大數據;交替最小二乘協(xié)同過濾算法;圖計算;推薦系統(tǒng);投資融資
投資界權威研究機構—清科研究中心發(fā)布數據顯示:2016上半年中外創(chuàng)業(yè)投資機構新募集基金173支,新增可投資于中國大陸的資本量為788.60億元人民幣,單支基金平均募集規(guī)模達6.26億元人民幣,單支基金平均募資規(guī)模同環(huán)比上升幅度很大;投資方面,2016上半年共發(fā)生1 264起投資案例,同比下降33.3%,其中1 052起披露金額的交易共計涉及584.95億元人民幣,同比下降12.5%,平均投資規(guī)模達5 560.40萬元人民幣,與2015年同期相比,投資活躍度下降.由上述數據可知,雖然可投資金額上漲,但實際投資量下降,資本投資遇冷.
以往在中國的創(chuàng)業(yè)投資領域各類財務顧問、創(chuàng)業(yè)平臺、資本中介搜集到的項目策劃書(BP)經過簡單的分類,直接發(fā)送給投資機構.創(chuàng)業(yè)公司在整個過程中只能等待投資機構的反饋,處境十分被動,很難及時滿足創(chuàng)業(yè)公司迫切的融資需求.在當前的全民創(chuàng)業(yè)時代眾多新生創(chuàng)業(yè)公司將面臨較大的融資壓力.若資本投資持續(xù)遇冷,創(chuàng)業(yè)公司將面臨大面積倒閉的風險,直接導致大量人員失業(yè).反之,若創(chuàng)業(yè)公司能及時融資,公司存活率大大增加,將創(chuàng)造更多就業(yè)機會,減輕當前就業(yè)壓力.因此,在創(chuàng)業(yè)投資領域為創(chuàng)業(yè)公司提供投資機構的個性化推薦成為一種必然需求.然而,國內鮮有投資領域成熟的個性化推薦應用.
創(chuàng)業(yè)投資領域積累了幾十年的創(chuàng)投數據,這些數據記錄了大量的成功和失敗的融投案例.隨著大數據技術逐漸成熟,為存儲分析這些歷史數據提供了很好技術支撐.因此,構建投資領域的個性化推薦成為可能.本文給出了構建微型WEB推薦系統(tǒng)實例,并提出將圖計算作為統(tǒng)計分析的方法,給出了處理投資領域數據評分算法,結合實際實驗數據給出了推薦模型評價標準并給出推薦系統(tǒng)的優(yōu)化思路.
起初,spark[1]是一個類似于hadoop[2-4]的計算框架.隨著開源社區(qū)的貢獻,spark成長為一個基于內存的開源并行分布式集群通用計算框架,試圖給出大數據運算一站式解決方案.spark主要由graphx[5]、MLlib[6]、spark streaming、spark SQL等組件構成.spark的graphx提供了優(yōu)秀圖計算API,適合于圖計算.MLlib是一個機器學習庫:引入的RDD[7]數據模型并應用內存存儲計算中間結果的特性非常適合構建大型迭代式數據挖掘/機器學習應用.spark streaming用于實時和批處理計算:spark的低延遲執(zhí)行引擎,雖然比不上專門的流式數據處理軟件,但也可以用于實時計算.此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和算法. spark SQL是一個用來處理結構化數據的spark組件.它提供了一個叫做DataFrames的可編程抽象數據模型,并且可被視為一個分布式的SQL查詢引擎.spark組件架構如圖1,本文主要使用適用于圖計算的graphx與機器學習庫MLlib組件.
圖1 spark組件架構
個性化推薦系統(tǒng)是建立在海量數據挖掘基礎上的一種高級商務智能平臺,以幫助電子商務網站為其顧客購物提供完全個性化的決策支持和信息服務.個性化推薦實現(xiàn)細分市場和精準營銷,目標是“給每個用戶信息服務定制化”.目前國內個性化推薦主要應用于商品推薦、廣告.個性化搜索,閱讀推薦等領域應用還有待發(fā)展.典型的個性化推薦WEB應用包括4個模塊:用戶基本信息與行為信息的收集模塊,分析用戶喜好的模型分析模塊和推薦算法模塊,對推薦結果提供展示的可視化模塊.
在推薦算法領域,各種算法及其改進層出不窮.目前推薦算法[8]主要有:協(xié)同過濾推薦、內容推薦、關聯(lián)規(guī)則推薦、知識推薦、混合推薦等.針對具體的應用場景,各種推薦算法有各自的優(yōu)缺點.本文采用spark-MLlib庫中交替最小二乘協(xié)同過濾算法[7]屬于協(xié)同過濾算法,該算法詳細內容可查閱標題4部分.
但個性化推薦還面臨著數據稀疏性、冷啟動、多樣性與精確性的兩難困境、大數據處理與增量計算等問題[8].這些問題成為當前個性化推薦研究領域的熱點.
在公開網站IT桔子上爬取創(chuàng)業(yè)公司與投資機構的歷史融投數據共20 785條,作為構建本次推薦應用數據源.數據爬取采用python編寫爬蟲實現(xiàn),并保存數據為txt.csv格式,主要數據屬性如表1.
本次獲取的數據并不能直接使用,需要對數據進行預處理.對于數據缺失,常規(guī)處理方法主要有三種:(1)用平均值、中值、分位數、眾數、隨機值等替代;(2)用其他變量做預測模型來算出缺失變量;(3)把變量映射到高維空間.由于本次數據缺失比較極端:本次獲取的全部數據中899條(約占總共爬取數據的4.33%)數據項缺失比較嚴重,因此直接刪除該部分數據.對有個別數據項缺失的少量噪聲數據(共8條)采用(1)中描述的眾數處理.處理后的數據樣例如表1.將處理后的19 886條數據存儲到mysql5.5中.創(chuàng)建數據庫表存儲創(chuàng)業(yè)公司、投資機構、投資事件對應的數據.
表1 數據樣例
統(tǒng)計是數據分析的重要方式,能夠獲得數據的隱含信息.傳統(tǒng)統(tǒng)計分析一般采用python、matlab或者數據倉庫技術.但普通python、matlab應用很難對大規(guī)模數據進行統(tǒng)計分析,而數據倉庫技術需要數據建模.圖計算模型由很多個節(jié)點(vertex)構成,節(jié)點之間通過邊(edge)連接,節(jié)點和邊中都包含了計算狀態(tài)數據.在社交網絡中如Twitter、Facebook,圖模型很好的反應了人與人的關系,節(jié)點表示個體,邊表示不同個體之間的聯(lián)系.圖模型可以很好的反映本文所述創(chuàng)業(yè)公司與投資機構的關系.因此本文采用圖計算的方法對抓取的數據進行統(tǒng)計分析.
spark的graphx提供了優(yōu)秀圖計算API,這里使用graphx做了不同角度的統(tǒng)計.統(tǒng)計結果以json格式保存,并使用echart3展示出統(tǒng)計結果.這樣在html5頁面中可以直觀的查看數據分布情況,如投資次數最大值、最小值、聯(lián)合投資等.統(tǒng)計效果展示如圖2~5所示.
圖2 投資輪次-投資數量圖
圖3 項目領域-融資次數
交替最小二乘協(xié)同過濾算法(Alternating Least Squares)是一種基于矩陣分解[9]的協(xié)同過濾算法.用戶—商品推薦應用中,常常缺少足夠的用戶對商品評分數據.ALS算法能很好的處理這類數據稀疏場景,算法思想大致如下文所述,公式中各變量詳細說明請參照ALS[10],這里不再贅述.
圖4 TOP5投資機構-融資公司關聯(lián)圖
圖5 TOP5融資公司-投資機構關聯(lián)圖
(1)定義一個預測模型(數學公式),在推薦系統(tǒng)中常常是用戶—商品模型,如公式(1)
R表示用戶對產品的偏好評分矩陣,UT代表用戶對隱含特征的偏好矩陣,P表示產品的隱含特征矩陣.
(2)然后確定一個損失函數如公式(2)所示:
其中rij表示用戶i對產品j評分;表示uT中第i個用戶特征向量;Pj是P中第j個產品特征向量,是正則系數;nui表示用戶的個數;npj表示產品的個數.
(3)從用于實驗的數據總體中劃分出訓練集.
(4)不斷迭代最小化損失函數的值,從而求得參數U和P.
其迭代步驟是:首先隨機初始化U,利用ALS參考文獻中公式更新得到P,然后利用ui的表達式更新U,直到RMSE(均方根誤差)變化小于給定閾值或者達到最大迭代次數為止,本次實驗使用MLlib庫默認設置.RMSE計算方法如公式(3).
(5)把學習到的模型用做預測.
本文以創(chuàng)業(yè)公司的視角結合歷史融投數據對投資機構進行打分,構建出訓練測試集.打分規(guī)則如下文所述,客觀性尚待考證,僅作為本次實驗的處理辦法.本文所述推薦系統(tǒng)關鍵點是從初始數據獲得評分,好的評分算法將得到較好訓練效果,反之訓練效果較差.評分算法描述如下:
(1)選擇特征
本次僅選取投資的輪次、投資次數、投資機構成立時間三維特征,其中投資次數由統(tǒng)計而來,沒有考慮公司類別、公司地址等其他難以統(tǒng)一量化的屬性.
(2)確定特征權重
采用層次分析法[11]確定本次特征的權重,但層次分析法確定特征重要性程度時依賴于領域知識、經驗,主觀性較強,建立的模型可靠性可能存在一定的問題.具體流程如下:
a.投資的輪次(m1)、投資次數(m2)、投資機構成立時間(m3)三維特征,建立層次結構如圖6.
圖6 層次結構圖
b.根據上述三維特征間相對重要性,構造判定矩陣M,本次構造的M如表2所示.
表2 判定矩陣
c.按文獻[11]所述方法求解M的特征向量并歸一化得到權向量W,W經一致性檢驗后若具備滿意的一致性,則W表示特征權重.W=[w1,w2,w3],
其中w1,w2,w3分別表示投資的輪次、投資次數、投資機構成立時間的權重.
d.判斷矩陣一致性檢驗,確定權向量W,本次試驗中求得W值為w1=0.4,w2=0.5,w3=0.1.
(3)確定特征值
對評分歸一化到[0-10]之間.對投資輪次天使輪至E輪的特征賦值范圍為(1-10),例如天使輪10分,A輪9分,B輪8分等依次衰減記為s1;投資次數按最大值中間值,均值,最小值劃分段依次衰減賦值記為s2和投資機構成立時間按60年代,70年代等依次衰減賦值記為s3.
(4)計算出歷史融投事件數據中創(chuàng)業(yè)公司對投資機構評分.每個投資機構最終得分為計算公式(4):
評分后得出txt格式存儲的數據如表3.機構評分數據的75%用來訓練模型,剩下的25%進行測試.
表3 評分樣例
使用 IntelliJ IDEA編寫調用 spark-MLlib中ALS算法的scala作業(yè)程序,該作業(yè)中需要設置初始值,綜合計算資源與多次試驗嘗試:迭代次數numIterations取10,表示userFeatures和itemFeatures的個數的rank取8,正則化參數lambda取0.01.使用ALS算法對訓練集數據進行反復訓練,并用測試集對模型進行測試.通過計算RMSE(平均誤差平方和開根號)來調整迭代的次數,RMSE值越小模型效果越好.訓練之后的模型可以保存,需要在線實時推薦時可以加載該模型,進行實時推薦,這也是spark平臺實現(xiàn)ALS算法的優(yōu)勢.
本文通過springMVC框架實現(xiàn)可視化.架構與數據流如圖7所示.
將訓練后的算法模型保存,并可以根據輸入的創(chuàng)業(yè)公司名稱如“拼班”在線個性化推薦.將預測評分進行排序,取評分最高的前5名投資機構推薦給創(chuàng)業(yè)公司:評分最高的前5名投資機構的序號與投資機構名稱的對應關系通過與mysql中存儲的投資機構數據進行映射實現(xiàn).個性化推薦效果如圖8所示.
圖7 架構與數據流圖
圖8 個性化推薦樣例
本文對IT桔子公開網站上獲得的20 785條原始數據預處理得到19 886條實驗數據,進而得到19 886條評分數據.使用IDEA編寫spark的scala本地程序,調用ALS算法,隨機選取75%評分數據進行模型訓練,發(fā)現(xiàn)單機模式下個人計算機由于內存溢出而無法完成計算.首次使用的是2核4GB內存的個人計算機,spark是基于RDD的內存式并行計算,應是內存過小導致.然后,縮小訓練數據集,僅僅使用之前1/4的數據,順利運行出預測評分.更換為4核12GB內存的個人計算機再次訓練全部數據,但最終內存溢出而結束.分析ALS算法原理,原因是本次計算過程是笛卡爾積式的矩陣計算,并行度較高,對CPU個數有更大需求.借助某公司的CDH5集群,順利運行全部得分數據,并得出對所有創(chuàng)業(yè)公司的推薦評分結果集.具體運行情況如表4所示.
表4 試驗環(huán)境與結果
由上述試驗結果可得出結論:若采用spark平臺集成的ALS算法對大規(guī)模數據集進行模型訓練,對spark集群的硬件資源要求較高,尤其是需要實時訓練的場景.若想得到理想的運算速度,同時減少硬件投資,需要對該訓練任務進行優(yōu)化.結合自己與他人的實踐經驗[12]現(xiàn)提出以下優(yōu)化方案:(1)如果搜集到的數據以小文件(小于hdfs[2]存儲塊大?。┑男问酱嬖?,會由于頻繁的I/O增加運行時間,參考在某公司實習合并flume分散日志的經驗,需要對小文件進行合并減少打開關閉文件次數.(2)眾所周知,笛卡爾積運算,具有指數級運算復雜度.可以采取對矩陣進行預先分塊,減少網絡包的傳輸量和笛卡爾積的計算量.(3)把分區(qū)操作提前到分塊操作之前,均衡task分布,并為每個task設置合適輸入數據大小.
本文采用RMSE衡量ALS算法的效果,RMSE越小模型越好.正則化參數lambda取固定值0.01,迭代次數numIterations和表示userFeatures和itemFeatures個數的rank,這兩個參數取值對RMSE具有較大影響,需要反復試驗來確定rank,numIterations的值.對19 886條評分數據隨機劃分,其中75%用作訓練集訓練ALS算法模型.表5展示了同一訓練集使用不同參數訓練后的RMSE.發(fā)現(xiàn)固定numIterations小范圍增加rank值對RMSE沒有太大影響,而固定rank小范圍增加numIterations值對RMSE影響較大.
表5 不同參數的RMSE
參數lambda取0.01,numIterations、rank取表5中RMSE較小時的值,對19 886條評分數據按隨機劃分,其中75%用作訓練集訓練ALS算法模型,若訓練集同時作為測試集,則會出現(xiàn)過擬合現(xiàn)象.剩下的25%用于測試模型效果,重復3次,3次測試集的RMSE和平均RMSE如表6所示,效果表現(xiàn)總體較好.
表6 3次測試集的RMSE和平均RMSE
本文應用spark平臺集成的ALS算法對投資領域的推薦應用進行了初步探索,提出圖計算作為投資融資行業(yè)數據集統(tǒng)計分析的方法并結合garaphx完成了相關數據統(tǒng)計分析工作,給出了處理投資領域數據評分算法,結合實際實驗數據給出了優(yōu)化思路,并使用springMVC實現(xiàn)了微型WEB推薦系統(tǒng).但限于集群運算資源、數據資源、個人經驗等因素,還有許多需要加強與改進的地方.后續(xù)還有很多工作可以做:獲取更多的數據應用于實驗,增加數據分析的維度,更精細分類推薦,構造更好的評分算法、損失函數,實現(xiàn)為投資機構推薦好的創(chuàng)業(yè)項目等.
[1]ZAHARIA M,CHOWDHURY M,DAS T,et al.Fast and interactive analytics over Hadoop data with Spark[J].USENIX Login,2012,37(4):45-51.
[2]SHVACHKO K,KUANG H,RADIA S,et al.The hadoop distributed file system[C]//2010 IEEE 26th symposium on mass storage systems and technologies(MSST).IEEE,2010:1-10.
[3]DEAN J,GHEMAWAT S.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.
[4]VAVILAPALLIV K,MURTHY A C,DOUGLAS C,et al.Apache hadoop yarn:Yet another resource negotiator[C]//Proceedings of the 4th annual Symposium on Cloud Computing.ACM,2013:5.
[5]XIN R S,GONZALEZ J E,F(xiàn)RANKLIN M J,et al.Graphx:A resilient distributed graph system on spark[C]//First International Workshop on Graph Data Management Experiences and Systems.ACM,2013:2.
[6]MENG X,BRADLEY J,YAVUZ B,et al.Mllib:Machine learning in apache spark[J].Journal of Machine Learning Research,2016,17(34):1-7.
[7]ZAHARIA M,CHOWDHURY M,DAS T,et al.Resilient distributed datasets:A fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation.USENIX Association,2012:2.
[8]Lü L,MEDO M,YEUNG C H,et al.Recommender systems[J].Physics Reports,2012,519(1):1-49.
[9]KOREN Y,BELLR,VOLINSKY C.Matrix factorization techniquesforrecommendersystems[J].IEEE,Computer Journal,42(8),30-37.
[10]ZHOU Y,WILKINSON D,SCHREIBER R,et al.Large-scale parallel collaborative filtering for the netflix prize[C]//Algorithmic Aspectsin Information and Management,International Conference,Aaim 2008,Shanghai,China,June 23-25,2008.Proceedings.DBLP,2008:337-348.
[11]常建娥,蔣太立.層次分析法確定權重的研究[J].武漢理工大學學報(信息與管理工程版),2007,29(1):153-156.
[12]楊志偉.基于Spark平臺推薦系統(tǒng)研究[D].合肥:中國科學技術大學,2015.
Personalized Recommendation of Investment Institutions Based on Spark
CHEN Guitao,QU Jianqin,YAN Yikun
(Department of Computer Science and Technology,Shantou University,Shantou 515063,Guangdong,China)
In the big data technology platform of spark,analysis and modeling of the historical data of venture capital financing industry is based on alternating least squares algorithm.The personalized recommendation application solution is proposed and constructed for the industry. By recommending reliable investment institutions to startups,the solution can meet the needs of financing of enterprises faster and better,which has important practical significance and commercial value.Accordingtothe characteristics ofventure capital financingindustry,the graph calculation is proposed as the method of statistical analysis.A scoring algorithm is presented for dealing with data in the field of investment finance.The miniature WEB recommendation system with springMVC architecture is implemented and finally the recommended model evaluation criteria based on the actual experimental data is given and the ideas of optimization of the recommendation system is shown.
spark big data;alternating least squares algorithm;graph calculation;recommendation system;investment financing
1001-4217(2017)04-0056-08
TP3
A
2017-02-24
陳貴濤(1987—),男,河南信陽人,碩士,研究方向:大數據、軟件工程.E-mail:14gtchen@stu.edu.cn.