本發(fā)明屬于服務(wù)計(jì)算、云計(jì)算和云原生服務(wù)領(lǐng)域,涉及一種多樣化云原生服務(wù)推薦方法。
背景技術(shù):
1、服務(wù)計(jì)算和云計(jì)算的發(fā)展推動(dòng)著云原生時(shí)代的到來,云原生是指在云場(chǎng)景(私有云、混合云、多云等)中構(gòu)建、部署和管理現(xiàn)代應(yīng)用程序的軟件方法。為了構(gòu)建可拓展性強(qiáng)、松耦合、彈性負(fù)載的應(yīng)用程序,現(xiàn)代組織和企業(yè)通常采取軟件即服務(wù)、函數(shù)即服務(wù)、基礎(chǔ)設(shè)施即服務(wù)、平臺(tái)即服務(wù)等模式,將算力資源、應(yīng)用程序和業(yè)務(wù)邏輯封裝為云原生服務(wù),以滿足用戶不斷更新的需求。例如,中國(guó)專利號(hào)為:cn202110119460.6,名稱為:一種kubernetes環(huán)境下的云原生服務(wù)的共享配置資源實(shí)現(xiàn)方法,利用標(biāo)記檢測(cè)和網(wǎng)關(guān)路由更新配置數(shù)據(jù)解析規(guī)則,通過為api配置添加分布式鎖解決相同配置資源重復(fù)更新問題。中國(guó)專利號(hào)為:cn202110867082.x,名稱為:面向云原生的用戶面功能微服務(wù)系統(tǒng),實(shí)現(xiàn)了網(wǎng)元功能彈性動(dòng)態(tài)的云化編排,為云原生理念的推進(jìn)提供了基礎(chǔ)的用戶面功能平臺(tái)。中國(guó)專利號(hào)為:cn202311654058.3,名稱為:一種基于云原生架構(gòu)的數(shù)據(jù)服務(wù)發(fā)布方法和系統(tǒng),設(shè)計(jì)了服務(wù)腳本調(diào)試、編譯、持久化等過程,從而降低了服務(wù)開發(fā)成本和難度,增強(qiáng)了服務(wù)的高并發(fā)性和高可用性。
2、上述三項(xiàng)專利在一定程度上解決了云原生背景下的服務(wù)系統(tǒng)部署、服務(wù)發(fā)布、服務(wù)資源配置等問題,但仍存在以下缺陷和不足:
3、(1)沒有將服務(wù)發(fā)現(xiàn)、服務(wù)調(diào)用、服務(wù)組合等環(huán)節(jié)納入云原生服務(wù)生命周期。
4、(2)忽視了云原生服務(wù)的存量、結(jié)構(gòu)、模態(tài)對(duì)開發(fā)者帶來的干擾,沒有考慮服務(wù)信息過濾問題。
5、服務(wù)推薦技術(shù)能海量、異構(gòu)、多模態(tài)的云原生服務(wù)中快速有效地找到滿足開發(fā)者需求的服務(wù),有利于過濾冗雜的服務(wù)信息,提高服務(wù)發(fā)現(xiàn)效率,近年來受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。例如,中國(guó)專利號(hào)為cn202010322193.8,名稱為一種應(yīng)用在云服務(wù)推薦中基于圖模型的qos預(yù)測(cè)方法,提出了包含多源信息的全圖模型對(duì)服務(wù)場(chǎng)景進(jìn)行建模,通過考慮多源信息對(duì)于qos的影響,自適應(yīng)地融合局部與全局的特征,以提高qos的預(yù)測(cè)精度。中國(guó)專利號(hào)為cn201510004844.8,名稱為面向云平臺(tái)應(yīng)用的服務(wù)推薦方法、設(shè)備及系統(tǒng),根據(jù)所述服務(wù)狀態(tài)信息獲得與所述目標(biāo)服務(wù)類型匹配的服務(wù),將所述服務(wù)作為待推薦的服務(wù),從而提高了應(yīng)用的開發(fā)效率,提高了推薦的服務(wù)和目標(biāo)應(yīng)用的匹配度。上述方法提高了服務(wù)推薦的精確度和相關(guān)性,但缺少對(duì)多樣化服務(wù)推薦需求的考慮。
6、目前,仍不存在一種行之有效的方法,在兼顧推薦精確度和相關(guān)性的同時(shí),能夠向開發(fā)者推薦多樣化的云原生服務(wù)。
技術(shù)實(shí)現(xiàn)思路
1、為了克服已有技術(shù)的不足,為了優(yōu)化服務(wù)推薦體驗(yàn),提高服務(wù)推薦結(jié)果的多樣性程度,本發(fā)明提出一種基于跨視圖對(duì)比學(xué)習(xí)的多樣化云原生服務(wù)推薦方法。該方法首先從服務(wù)數(shù)據(jù)集中抽取出多種不同的圖結(jié)構(gòu),并進(jìn)行多樣化推薦視圖劃分;其次,利用圖編碼器將多樣化推薦視圖中的圖結(jié)構(gòu)轉(zhuǎn)化為用戶向量、云原生服務(wù)向量和服務(wù)組合向量。然后,構(gòu)建用戶樣本對(duì)和服務(wù)樣本對(duì),并進(jìn)行跨視圖對(duì)比學(xué)習(xí);最后,基于服務(wù)推薦分?jǐn)?shù)和列表內(nèi)相似性進(jìn)行多樣化服務(wù)推薦。
2、本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
3、一種基于跨視圖對(duì)比學(xué)習(xí)的多樣化云原生服務(wù)推薦方法,所述方法包括以下步驟:
4、步驟1:創(chuàng)建服務(wù)數(shù)據(jù)集,抽取圖結(jié)構(gòu),包括用戶-服務(wù)圖、用戶-組合圖和組合-服務(wù)圖,然后,進(jìn)行多樣化推薦視圖劃分;
5、步驟2:針對(duì)多樣化推薦視圖中的圖結(jié)構(gòu),利用圖編碼器進(jìn)行編碼,構(gòu)建單項(xiàng)服務(wù)視圖的用戶向量、云原生服務(wù)向量,以及組合服務(wù)視圖的用戶向量、云原生服務(wù)向量和服務(wù)組合向量;
6、步驟3:對(duì)單項(xiàng)服務(wù)視圖以及組合服務(wù)視圖中的用戶、云原生服務(wù)向量進(jìn)行數(shù)據(jù)增強(qiáng)操作,構(gòu)造用戶樣本對(duì)和服務(wù)樣本對(duì),基于用戶樣本對(duì)和服務(wù)樣本對(duì)開展跨視圖對(duì)比學(xué)習(xí);
7、步驟4:基于su、sa、mu、ma和mm計(jì)算服務(wù)推薦分?jǐn)?shù)和列表內(nèi)相似性,根據(jù)服務(wù)推薦分?jǐn)?shù)和列表內(nèi)相似性進(jìn)行多樣化服務(wù)推薦。
8、進(jìn)一步,所述步驟1的過程如下:
9、1.1、創(chuàng)建服務(wù)數(shù)據(jù)集:利用爬蟲程序收集云原生服務(wù)、服務(wù)組合和用戶信息,對(duì)收集結(jié)果進(jìn)行數(shù)據(jù)預(yù)處理,以此構(gòu)成服務(wù)數(shù)據(jù)集;
10、1.2、抽取用戶-服務(wù)圖:從服務(wù)數(shù)據(jù)集中抽取用戶和云原生服務(wù)之間的交互信息,將其轉(zhuǎn)化為用戶-服務(wù)圖;
11、1.3、抽取用戶-組合圖:從服務(wù)數(shù)據(jù)集中抽取用戶和服務(wù)組合之間的交互信息,將其轉(zhuǎn)化為用戶-組合圖;
12、1.4、抽取組合-服務(wù)圖:從服務(wù)數(shù)據(jù)集中抽取云原生服務(wù)與服務(wù)組合之間的組合關(guān)系,將其轉(zhuǎn)化為組合-服務(wù)圖;
13、1.5、多樣化推薦視圖劃分:將抽取得到的用戶-服務(wù)圖、用戶-組合圖和組合-服務(wù)圖劃分為單項(xiàng)服務(wù)視圖和組合服務(wù)視圖,視圖是一種集合關(guān)系,同一視圖內(nèi)的數(shù)據(jù)具有類似的特性,多樣化推薦視圖由單項(xiàng)服務(wù)視圖和組合服務(wù)視圖構(gòu)成;所述步驟1.1中,服務(wù)數(shù)據(jù)集包含以下信息:
14、1.1.1、云原生服務(wù):私有云、混合云、多云場(chǎng)景上部署和交付的服務(wù)化的應(yīng)用程序編程接口api,屬性和功能由服務(wù)描述文檔和服務(wù)標(biāo)簽描述,用符號(hào)a表示;
15、1.1.2、服務(wù)化:以soap、restful等方式發(fā)布云原生服務(wù)的過程稱之為服務(wù)化;
16、1.1.3、服務(wù)描述文檔:對(duì)云原生服務(wù)中消息類型、操作和端口信息進(jìn)行描述和規(guī)定的文檔,用符號(hào)w表示;
17、1.1.4、服務(wù)標(biāo)簽:以自然語(yǔ)言形式描述云原生服務(wù)功能類型的短文本,用符號(hào)t表示;
18、1.1.5、服務(wù)組合:以兩項(xiàng)及兩項(xiàng)以上云原生服務(wù)組合形成的服務(wù),用符號(hào)m表示;
19、1.1.6、組合關(guān)系:若兩項(xiàng)及兩項(xiàng)以上的云原生服務(wù)構(gòu)成了服務(wù)組合,則稱此類云原生服務(wù)與該服務(wù)組合之間存在組合關(guān)系;
20、1.1.7、用戶:調(diào)用云原生服務(wù)或服務(wù)組合的開發(fā)者,用符號(hào)u表示;
21、1.1.8、數(shù)據(jù)預(yù)處理:對(duì)爬蟲程序收集的數(shù)據(jù)進(jìn)行重排序、去重復(fù)、填補(bǔ)缺失值操作;
22、1.1.9、交互關(guān)系:指用戶與云原生服務(wù)或服務(wù)組合之間存在的調(diào)用關(guān)系。所述步驟1.2中,用戶-服務(wù)圖的構(gòu)建過程如下:
23、1.2.1、建立用戶-服務(wù)圖,用符號(hào)gua表示,gua的點(diǎn)集用符號(hào)vua表示,gua的邊集用eua表示;
24、1.2.2、遍歷服務(wù)數(shù)據(jù)集,將第i次取到的用戶記為ui;
25、1.2.3、遍歷服務(wù)數(shù)據(jù)集,將第j次取到的服務(wù)記為aj;
26、1.2.4、若ui和aj之間存在交互關(guān)系,則跳轉(zhuǎn)至步驟1.2.5,否則跳轉(zhuǎn)至步驟1.2.2;
27、1.2.5、將ui轉(zhuǎn)換為節(jié)點(diǎn)vi;
28、1.2.6、將aj轉(zhuǎn)換為節(jié)點(diǎn)vj;
29、1.2.7、建立一條連接vi和vj的無向邊,用符號(hào)eij表示;
30、1.2.8、若vua中不含有vi,則將vi加入vua中;若vua中不含有vj,則將vj加入vua中;
31、1.2.9、若eua中不含有eij,則將eij加入eua中;
32、1.2.10、返回構(gòu)建完畢的gua。
33、所述步驟1.3中,用戶-組合圖的構(gòu)建過程如下:
34、1.3.1、建立用戶-組合圖,用符號(hào)gum表示,gum的點(diǎn)集用符號(hào)vum表示,
35、gum的邊集用eum表示;
36、1.3.2、遍歷服務(wù)數(shù)據(jù)集,將第i次取到的用戶記為ui;
37、1.3.3、遍歷服務(wù)數(shù)據(jù)集,將第k次取到的服務(wù)組合記為mk;
38、1.3.4、若ui和mj之間存在交互關(guān)系,則跳轉(zhuǎn)至步驟1.3.5,否則跳轉(zhuǎn)至步驟1.3.2;
39、1.3.5、將ui轉(zhuǎn)換為節(jié)點(diǎn)vi;
40、1.3.6、將mk轉(zhuǎn)換為節(jié)點(diǎn)vk;
41、1.3.7、建立一條連接vi和vk的無向邊,用符號(hào)eik表示;
42、1.3.8、若vua中不含有vi,則將vi加入vam中;若vam中不含有vk,則將vk加入vum中;
43、1.3.9、若eum中不含有eik,則將eik加入eum中;
44、1.3.10、返回構(gòu)建完畢的gum;
45、所述步驟1.4中,捆綁交互圖結(jié)構(gòu)的構(gòu)建過程如下:
46、1.4.1、建立組合-服務(wù)圖,用符號(hào)gam表示,gam的點(diǎn)集用符號(hào)vam表示,gam的邊集用eam表示;
47、1.4.2、遍歷服務(wù)數(shù)據(jù)集,將第i次取到的服務(wù)記為ai;
48、1.4.3、遍歷服務(wù)數(shù)據(jù)集,將第k次取到的服務(wù)組合記為mk;
49、1.4.4、若ai和mj之間存在組合關(guān)系,則跳轉(zhuǎn)至步驟1.4.5,否則跳轉(zhuǎn)至步驟1.4.2;
50、1.4.5、將ai轉(zhuǎn)換為節(jié)點(diǎn)vi;
51、1.4.6、將mk轉(zhuǎn)換為節(jié)點(diǎn)vk;
52、1.4.7、建立一條連接vi和vk的無向邊,用符號(hào)eik表示;
53、1.4.8、若vam中不含有vi,則將vi加入vam中;若vam中不含有vk,則將vk加入vam中;
54、1.4.9、若eam中不含有eik,則將eik加入eam中;
55、1.4.10、返回構(gòu)建完畢的gam。
56、所述步驟1.5中,多樣化推薦視圖的構(gòu)建過程如下:
57、1.5.1、基于步驟1.2、1.3和1.4,構(gòu)建用戶-服務(wù)圖,用戶-組合圖以及組合
58、-服務(wù)圖,分別使用符號(hào)gua、gum、gma表示;
59、1.5.2、建立單項(xiàng)服務(wù)視圖,用符號(hào)single表示,單項(xiàng)服務(wù)視圖反應(yīng)了用戶與云原生服務(wù)之間的交互關(guān)系;
60、1.5.3、建立組合服務(wù)視圖,用符號(hào)multi表示,組合服務(wù)視圖反應(yīng)了用戶與服務(wù)組合之間的交互關(guān)系,以及云原生服務(wù)與服務(wù)組合之間的組合關(guān)系;
61、1.5.4、將gua加入single;
62、1.5.5、將gum、gma加入multi;
63、1.5.6、返回single和multi作為多樣化推薦視圖構(gòu)建結(jié)果。
64、再進(jìn)一步,所述步驟2的過程如下:
65、2.1、圖編碼器:圖編碼器是一種圖神經(jīng)網(wǎng)絡(luò),將輸入的圖結(jié)構(gòu)轉(zhuǎn)化為向量;
66、2.2、構(gòu)建單項(xiàng)服務(wù)視圖中的用戶向量和云原生服務(wù)向量:利用圖編碼器對(duì)單項(xiàng)服務(wù)視圖中的用戶-服務(wù)圖進(jìn)行編碼,將用戶節(jié)點(diǎn)轉(zhuǎn)化為單項(xiàng)服務(wù)視圖中的用戶向量,使用符號(hào)su表示,將云原生服務(wù)節(jié)點(diǎn)轉(zhuǎn)化為單項(xiàng)服務(wù)視圖中的云原生服務(wù)向量,用符號(hào)sa表示;
67、2.3、構(gòu)建組合服務(wù)視圖中的用戶向量、云原生服務(wù)向量和服務(wù)組合向量:利用圖編碼器對(duì)組合服務(wù)視圖中的用戶-組合圖和組合-服務(wù)圖進(jìn)行編碼,將用戶節(jié)點(diǎn)轉(zhuǎn)化為組合服務(wù)視圖中的用戶向量,使用符號(hào)mu表示,將云原生服務(wù)節(jié)點(diǎn)轉(zhuǎn)化為單項(xiàng)服務(wù)視圖中的云原生服務(wù)向量,用符號(hào)ma表示,將服務(wù)組合節(jié)點(diǎn)轉(zhuǎn)化為服務(wù)組合向量,用符號(hào)mm表示;
68、所述步驟2.2中,單項(xiàng)服務(wù)視圖中的用戶向量和云原生服務(wù)向量的構(gòu)建過程如下:
69、2.2.1、遍歷gua中的節(jié)點(diǎn)集,將第i次取到的節(jié)點(diǎn)記為vi;
70、2.2.2、若節(jié)點(diǎn)vi由步驟1.2.5創(chuàng)建,則將其記為用戶節(jié)點(diǎn);否則,將其記為云原生服務(wù)節(jié)點(diǎn);
71、2.2.3、按階數(shù)遍歷節(jié)點(diǎn)vi的n階鄰居節(jié)點(diǎn),同階鄰居節(jié)點(diǎn)構(gòu)成的集合記為vni,鄰居節(jié)點(diǎn)是指從節(jié)點(diǎn)vi出發(fā)可以到達(dá)的其他節(jié)點(diǎn),節(jié)點(diǎn)vi和鄰居節(jié)點(diǎn)之間最短的路徑長(zhǎng)度稱為階數(shù),用符號(hào)n表示;
72、2.2.4、創(chuàng)建向量sui和向量sai,并將其初始化為空向量;
73、2.2.5、將vi和vni輸入圖編碼器,得到向量e,若vi為用戶節(jié)點(diǎn),則將e賦值給sui;否則,將其賦值給sai;
74、2.2.6、創(chuàng)建單項(xiàng)服務(wù)視圖下的用戶向量su,和云原生服務(wù)向量sa,并將其初始化為空向量;
75、2.2.7、對(duì)向量sui進(jìn)行聚合,并將結(jié)果賦值給用戶向量su,該過程可以用公式表示,其中,符號(hào)“=”代表賦值操作,符號(hào)“(”和“)”為數(shù)學(xué)中的括號(hào)運(yùn)算符,符號(hào)“+”代表加法運(yùn)算,符號(hào)“×”代表乘法運(yùn)算,符號(hào)|su|代表非空向量sui的總數(shù),符號(hào)|sa|
76、代表非空向量sai的總數(shù);
77、2.2.8、對(duì)向量sai進(jìn)行聚合,并將結(jié)果賦值給用戶向量sa,該過程可以用公式表示;
78、2.2.9、返回su和sa。
79、所述步驟2.3中,組合服務(wù)視圖中的用戶向量、云原生服務(wù)向量和服務(wù)組合向量的構(gòu)建過程如下:
80、2.3.1、遍歷gum中的節(jié)點(diǎn)集,將第j次取到的節(jié)點(diǎn)記為vj;
81、2.3.2、遍歷gma中的節(jié)點(diǎn)集,將第k次取到的節(jié)點(diǎn)記為vk;
82、2.3.3、若節(jié)點(diǎn)vj由步驟1.3.5創(chuàng)建,則將其記為用戶節(jié)點(diǎn);否則,將其記為服務(wù)組合節(jié)點(diǎn);
83、2.3.4、若節(jié)點(diǎn)vk由步驟1.4.5創(chuàng)建,則將其記為云原生服務(wù)節(jié)點(diǎn);否則,將其記為服務(wù)組合節(jié)點(diǎn);
84、2.3.5、按階數(shù)遍歷節(jié)點(diǎn)vj的n階鄰居節(jié)點(diǎn),同階鄰居節(jié)點(diǎn)構(gòu)成的集合記為vnj;
85、2.3.6、創(chuàng)建向量muj和向量mnj,并將其初始化為空向量;
86、2.3.7、將vj和vnj輸入圖編碼器,得到向量e1,若vj為用戶節(jié)點(diǎn),則將e1賦值給muj;否則,將其賦值給mnj;
87、2.3.8、按階數(shù)遍歷節(jié)點(diǎn)vk的n階鄰居節(jié)點(diǎn),同階鄰居節(jié)點(diǎn)構(gòu)成的集合記為vnk;
88、2.3.9、創(chuàng)建向量mmk和向量mak,并將其初始化為空向量;
89、2.3.10、將vk和vnk輸入圖編碼器,得到向量e2,若vk為云原生服務(wù)節(jié)點(diǎn),則將e2賦值給mak;否則,將其賦值給mmk;
90、2.3.11、創(chuàng)建組合服務(wù)視圖下的用戶向量mu、云原生服務(wù)向量ma和服務(wù)組合向量mm,并將其初始化為空向量;
91、2.3.12、聚合向量muj,將結(jié)果賦值給mu,該過程用公式mu=表示,符號(hào)|mu|代表非空向量mu的總數(shù),符號(hào)
92、|mn|代表非空向量mn的總數(shù);
93、2.3.13、聚合向量maj,將結(jié)果賦值給ma,該過程用公式ma=表示,符號(hào)|mm|代表非空向量mm的總數(shù),符號(hào)|ma|代表非空向量ma的總數(shù);
94、2.3.14、聚合向量mnj,將結(jié)果賦值給mm_1,該過程用公式mm_1=表示;
95、2.3.15、聚合向量mmk,將結(jié)果賦值給mm_2,該過程用公式mm_2=表示;
96、2.3.16、將mm_1和mm_2相加,結(jié)果的一半賦值給mm,該過程用公式
97、mm=(mm_1+mm_2)÷2表示;
98、2.3.17、返回mu、ma、mm。
99、更進(jìn)一步,所述步驟3的過程如下:
100、3.1、數(shù)據(jù)增強(qiáng):數(shù)據(jù)增強(qiáng)是對(duì)比學(xué)習(xí)中常用的數(shù)據(jù)構(gòu)造方法,指通過對(duì)原數(shù)據(jù)樣本進(jìn)行掩碼、反轉(zhuǎn)、置亂操作,構(gòu)造出新的數(shù)據(jù)樣本的過程;
101、3.2、用戶樣本對(duì):用符號(hào)“du”表示通過數(shù)據(jù)增強(qiáng)構(gòu)造出的用戶向量,du和su構(gòu)成單項(xiàng)服務(wù)視圖中的用戶樣本對(duì),用符號(hào)<su,du>表示;du和mu構(gòu)成組合服務(wù)視圖中的用戶樣本對(duì),用符號(hào)<mu,du>表示;
102、3.3、服務(wù)樣本對(duì):用符號(hào)“da”表示通過數(shù)據(jù)增強(qiáng)構(gòu)造出的服務(wù)向量,da和sa構(gòu)成單項(xiàng)服務(wù)視圖中的服務(wù)樣本對(duì),用符號(hào)<sa,da>表示;da和ma構(gòu)成組合服務(wù)視圖中的服務(wù)樣本對(duì),用符號(hào)<ma,da>表示;
103、3.4、通過數(shù)據(jù)增強(qiáng)操作,構(gòu)造用戶樣本對(duì)和服務(wù)樣本對(duì):利用伯努利分布構(gòu)造掩碼向量x,將su、sa、mu、ma與x進(jìn)行逐位與操作,對(duì)應(yīng)步驟3.2和3.3,將生成結(jié)果記為du和da,在此基礎(chǔ)上,將su、sa、mu、ma和du、da組成用戶樣本對(duì)和服務(wù)樣本對(duì);
104、3.5、基于用戶樣本對(duì)和服務(wù)樣本對(duì)開展跨視圖對(duì)比學(xué)習(xí):使用對(duì)比學(xué)習(xí)損失函數(shù)對(duì)<su,du>、<mu,du>、<sa,da>、<ma,da>開展跨視圖對(duì)比學(xué)習(xí),使用優(yōu)化器進(jìn)行隨機(jī)梯度下降。
105、所述步驟3.4中,通過數(shù)據(jù)增強(qiáng)操作,構(gòu)造用戶樣本對(duì)和服務(wù)樣本對(duì)的過程如下:
106、3.4.1、創(chuàng)建掩碼向量x,并使用伯努利分布對(duì)其進(jìn)行初始化,掩碼概率設(shè)置為p,p為超參數(shù),是[0,1]區(qū)間內(nèi)的實(shí)數(shù);
107、3.4.2、創(chuàng)建向量du,并將其初始化為空向量;
108、3.4.3、逐位取su、mu與x的向量值,將第i次取到的向量值記為su[i]、
109、mu[i]和x[i];
110、3.4.4、若x[i]為1,則保留su[i]和mu[i];否則,修改su的向量值,將su[i]賦值為0,修改mu的向量值,將mu[i]賦值為0;
111、3.4.5、用符號(hào)“su_t”和“mu_t”表示逐位修改后的su和mu;
112、3.4.6、將su_t賦值給du并創(chuàng)建單項(xiàng)服務(wù)視圖中的用戶樣本對(duì)<su,du>;3.4.7、將mu_t賦值給du并創(chuàng)建組合服務(wù)視圖中的用戶樣本對(duì)<mu,du>;3.4.8、創(chuàng)建掩碼向量y,并使用伯努利分布對(duì)其進(jìn)行初始化,掩碼概率設(shè)置為q,q為超參數(shù),是[0,1]區(qū)間內(nèi)的實(shí)數(shù);
113、3.4.9、創(chuàng)建向量da,并將其初始化為空向量;
114、3.4.10、逐位取sa、ma與y的向量值,將第j次取到的向量值記為sa[j]、ma[j]和y[j];
115、3.4.11、若y[j]為1,則保留sa[j]和ma[j];否則,修改sa的向量值,將sa[j]賦值為0,修改ma的向量值,將ma[j]賦值為0;
116、3.4.12、用符號(hào)“sa_t”和“ma_t”表示逐位修改后的sa和ma;
117、3.4.13、將sa_t賦值給da,創(chuàng)建單項(xiàng)服務(wù)視圖中的服務(wù)樣本對(duì)<sa,da>;3.4.14、將ma_t賦值給da,創(chuàng)建組合服務(wù)視圖中的用戶樣本對(duì)<ma,da>;3.4.15、返回<su,du>、<mu,du>、<sa,da>、<ma,da>。
118、所述步驟3.5中,跨視圖對(duì)比學(xué)習(xí)的過程如下:
119、3.5.1、定義優(yōu)化器optimizer;
120、3.5.2、定義對(duì)比損失函數(shù)loss_user;
121、3.5.3、定義溫度系數(shù)t,t為超參數(shù),是[0,1]區(qū)間內(nèi)的實(shí)數(shù);
122、3.5.4、定義樣本對(duì)<su,du>、<mu,du>之間的相似度,分別用符號(hào)sim(su,du)和sim(mu,du)表示;
123、3.5.5、計(jì)算su和du之間的向量點(diǎn)積,然后除以各自的向量模,并將結(jié)果賦值給sim(su,du),向量點(diǎn)積是指兩個(gè)向量在歐幾里得空間中的標(biāo)準(zhǔn)內(nèi)積,向量模是指向量在空間中的長(zhǎng)度;
124、3.5.6、計(jì)算mu和du之間的向量點(diǎn)積,然后除以各自的向量模,并將結(jié)果賦值給sim(mu,du);
125、3.5.7、將sim(su,du)除以t,并進(jìn)行以自然常數(shù)e為底的指數(shù)運(yùn)算,結(jié)果用符號(hào)exp(sim(su,du)÷t)表示,符號(hào)exp代表指數(shù)運(yùn)算;
126、3.5.8、將sim(mu,du)除以t,并進(jìn)行以自然常數(shù)e為底的指數(shù)運(yùn)算,結(jié)果用符號(hào)exp(sim(mu,du)÷t)表示;
127、3.5.9、將exp(sim(su,du)÷t)除以exp(sim(mu,du)÷t),取對(duì)數(shù)后賦值給loss_user;
128、3.5.10、定義對(duì)比損失函數(shù)loss_api;
129、3.5.11、定義樣本對(duì)<sa,da>、<ma,da>之間的相似度,分別用符號(hào)sim(sa,da)和sim(ma,da)表示;
130、3.5.12、計(jì)算sa和da之間的向量點(diǎn)積,然后除以各自的向量模,并將結(jié)果賦值給sim(sa,da);
131、3.5.13、計(jì)算ma和da之間的向量點(diǎn)積,然后除以各自的向量模,并將結(jié)果賦值給sim(ma,da);
132、3.5.14、將sim(sa,da)除以t,并進(jìn)行以自然常數(shù)e為底的指數(shù)運(yùn)算,結(jié)果用符號(hào)exp(sim(sa,da)÷t)表示;
133、3.5.15、將sim(ma,da)除以t,并進(jìn)行以自然常數(shù)e為底的指數(shù)運(yùn)算,結(jié)果用符號(hào)exp(sim(ma,da)÷t)表示;
134、3.5.16、將exp(sim(sa,da)÷t)除以exp(sim(ma,da)÷t),取對(duì)數(shù)后賦值給loss_api;
135、3.5.17、定義對(duì)比損失函數(shù)loss,將loss_user和loss_api相加后賦值給loss;
136、3.5.18、定義訓(xùn)練批次epoch,epoch代表訓(xùn)練次數(shù);
137、3.5.19、使用optimizer進(jìn)隨機(jī)梯度下降,從而降低loss的取值;
138、3.5.20、將epoch-1;
139、3.5.21、若epoch=0,則結(jié)束隨機(jī)梯度下降過程。
140、所述步驟4的過程如下:
141、4.1、服務(wù)推薦分?jǐn)?shù):[0,1]區(qū)間內(nèi)的實(shí)數(shù),使用符號(hào)score表示,代表云原生服務(wù)被推薦給用戶的概率,該分?jǐn)?shù)越高,被推薦的概率越大;
142、4.2、服務(wù)推薦列表:由推薦給用戶的云原生服務(wù)構(gòu)成的列表,用符號(hào)list表示,列表的長(zhǎng)度用符號(hào)l表示,l為超參數(shù);
143、4.3、列表內(nèi)相似性:[0,1]區(qū)間內(nèi)的實(shí)數(shù),使用符號(hào)“ilr”表示,代表服務(wù)推薦列表的多樣性程度,ilr的取值越大,說明服務(wù)推薦列表中云原生服務(wù)之間的相似度越高,服務(wù)推薦列表的多樣性越差;
144、4.4、多樣性閾值:超參數(shù),[0,1]區(qū)間內(nèi)的實(shí)數(shù),使用符號(hào)“mg”表示;
145、4.5、計(jì)算服務(wù)推薦分?jǐn)?shù):拼接su和mu向量,拼接sa、ma向量,計(jì)算拼接后向量的乘積,得到服務(wù)推薦分?jǐn)?shù);
146、4.6、根據(jù)服務(wù)推薦分?jǐn)?shù)和列表內(nèi)相似度進(jìn)行多樣化服務(wù)推薦:根據(jù)服務(wù)推薦分?jǐn)?shù)的高低對(duì)服務(wù)組合進(jìn)行排列,取分?jǐn)?shù)最高的前l(fā)項(xiàng)云原生服務(wù),構(gòu)成服務(wù)推薦列表,計(jì)算服務(wù)推薦列表的ilr,若ilr小于mg,則將服務(wù)推薦列表中的云原生服務(wù)作為多樣化服務(wù)推薦結(jié)果。
147、所述步驟4.3中,列表內(nèi)相似性的計(jì)算過程過程如下:
148、4.3.1、定義列表內(nèi)相似性ilr,并將其初始化為0;
149、4.3.2、定義總相似度total_sim、相似度上限max_sim;
150、4.3.3、遍歷list,將第i次取到的云原生服務(wù)記為ai;
151、4.3.4、遍歷list,將第j次取到的云原生服務(wù)記為aj;
152、4.3.5、定義ai和aj之間的相似度sim(ai,aj);
153、4.3.6、拼接ai對(duì)應(yīng)的向量sai、mai和mmi,結(jié)果用符號(hào)
154、表示;
155、4.3.7、拼接aj對(duì)應(yīng)的向量saj、maj和mmj,結(jié)果用符號(hào)
156、表示;
157、4.3.8、計(jì)算與與之間的向量點(diǎn)積,然后除以各自的向量模,將計(jì)算結(jié)果賦值給sim(ai,aj);
158、4.3.9、若i和j不相等,則將total_sim和sim(ai,aj)相加,并將max_sim和1相加;
159、4.3.10、結(jié)束遍歷,將total_sim除以max_sim,并將結(jié)果賦值給ilr;
160、4.3.11、返回ilr。
161、所述步驟4.5中,服務(wù)推薦分?jǐn)?shù)的計(jì)算過程如下:
162、4.5.1、將多樣化服務(wù)推薦的目標(biāo)用戶定義為ui;
163、4.5.2、遍歷服務(wù)數(shù)據(jù)集,將第j次取到的服務(wù)記為aj;
164、4.5.3、將ui和aj之間的服務(wù)推薦分?jǐn)?shù)定義為socrei,j;
165、4.5.4、將單項(xiàng)服務(wù)視圖中的ui和aj相應(yīng)的用戶向量、云原生服務(wù)向量定義為sui與sai;將組合服務(wù)視圖中的ui和aj相應(yīng)的用戶向量、云原生服務(wù)向量定義為mui與mai;
166、4.5.5、拼接su和mu向量,結(jié)果用符號(hào)表示,符號(hào)表示向量的拼接運(yùn)算;
167、4.5.6、拼接sa和ma向量,結(jié)果用符號(hào)表示;
168、4.5.7、對(duì)進(jìn)轉(zhuǎn)置,結(jié)果用符號(hào)表示。轉(zhuǎn)置是線性代數(shù)中的數(shù)學(xué)運(yùn)算,指交換向量或矩陣行和列,用符號(hào)“t”表示轉(zhuǎn)置操作;
169、4.5.8、計(jì)算的乘積,將結(jié)果賦值給socrei,j;
170、4.5.9、返回服務(wù)推薦分?jǐn)?shù)socrei,j。
171、所述步驟4.6中,多樣化服務(wù)推薦的過程如下:
172、4.6.1、針對(duì)目標(biāo)用戶ui,基于步驟4.5獲取服務(wù)推薦分?jǐn)?shù);
173、4.6.2、取分?jǐn)?shù)最高的l項(xiàng)云原生服務(wù),構(gòu)成服務(wù)推薦列表list,剩余的云原生服務(wù)構(gòu)成的列表用符號(hào)“l(fā)eft”表示;
174、4.6.3、基于步驟4.3計(jì)算list的ilr;
175、4.6.4、若ilr小于mg,跳轉(zhuǎn)至步驟4.6.8;否則跳轉(zhuǎn)至步驟4.6.5;
176、4.6.5、若ilr大于mg,且left為空列表,則跳轉(zhuǎn)至步驟4.6.8;否則跳轉(zhuǎn)至步驟4.6.6;
177、4.6.6、隨機(jī)刪去list中的任意一項(xiàng)云原生服務(wù),在left中取分?jǐn)?shù)最高的云原生服務(wù),將其從left中刪去,然后加入list;
178、4.6.7、跳轉(zhuǎn)至步驟4.6.3;
179、4.6.8、將list中的云原生服務(wù)作為多樣化服務(wù)推薦結(jié)果返回給ui。
180、本發(fā)明的有益效果主要表現(xiàn)在:
181、(1)面向服務(wù)場(chǎng)景提出多種不同的圖結(jié)構(gòu)和多樣化推薦視圖,有效地表達(dá)了服務(wù)交互關(guān)系和服務(wù)組合關(guān)系;
182、(2)將編碼器與跨視圖對(duì)比學(xué)習(xí)技術(shù)相結(jié)合,能充分提取圖結(jié)構(gòu)特征,并將其轉(zhuǎn)化為向量表示;
183、(3)同時(shí)利用服務(wù)推薦分?jǐn)?shù)和列表內(nèi)相似度進(jìn)行服務(wù)推薦,提高了服務(wù)推薦結(jié)果的多樣性,優(yōu)化用戶體驗(yàn)。