郭玉芝 林朝陽(yáng)
摘 ?要:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來(lái)越多的電商服務(wù)平臺(tái)使用推薦算法來(lái)提高用戶(hù)的購(gòu)物體驗(yàn),以此促進(jìn)消費(fèi)。該平臺(tái)主要研究基于協(xié)同過(guò)濾推薦算法實(shí)現(xiàn)服裝推薦功能,并實(shí)現(xiàn)店鋪入駐、服裝商品管理、商品交易、服裝推薦、消息會(huì)話(huà)、圈子發(fā)現(xiàn)功能。平臺(tái)采用前后端分離的開(kāi)發(fā)方式,運(yùn)用Spring Boot+MySQL+MyBatis+Vue等技術(shù)完成平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)。
關(guān)鍵詞:推薦算法;Spring Boot;服務(wù)平臺(tái);Vue
中圖分類(lèi)號(hào):TP311 ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2021)12-0107-03
Abstract: With the development of internet technology, more and more e-commerce service platforms use recommendation algorithms to improve the users' shopping experience, thereby promoting consumption. For the platform, we mainly study the realization of clothing recommendation function based on collaborative filtering recommendation algorithm, and realize the functions of store entry, clothing commodity management, commodity transaction, clothing recommendation, message conversation and circle discovery. Adopting the development mode of front and rear end separation, the platform is designed and implemented by using Spring Boot+MySQL+MyBatis+Vue and other technologies.
Keywords: recommendation algorithm; Spring Boot; service platform; Vue
0 ? 引 ?言
近年來(lái),隨著互聯(lián)網(wǎng)科技的發(fā)展,電商的崛起給實(shí)體店帶來(lái)巨大沖擊。新興技術(shù)顛覆了人們傳統(tǒng)的生活方式,特別是在服裝、購(gòu)物等領(lǐng)域變化顯著。推薦算法能夠根據(jù)用戶(hù)的歷史行為、物品屬性或者上下文等信息進(jìn)行建模,預(yù)測(cè)用戶(hù)對(duì)給定項(xiàng)目的偏好。協(xié)助消費(fèi)用戶(hù)從大量信息中找到符合其需求的產(chǎn)品,幫助賣(mài)家提升商品的關(guān)注度,這是推薦算法要解決的核心問(wèn)題。研究設(shè)計(jì)該平臺(tái)以實(shí)現(xiàn)實(shí)體店發(fā)展線(xiàn)上銷(xiāo)售渠道的目的,并通過(guò)用戶(hù)信息、瀏覽記錄來(lái)設(shè)計(jì)推薦算法,實(shí)現(xiàn)對(duì)不同用戶(hù)的個(gè)性化推薦以此提高用戶(hù)體驗(yàn)感,達(dá)到解決目前推薦算法影響因素單一,推薦內(nèi)容具有大眾化趨勢(shì)的問(wèn)題。
1 ?國(guó)內(nèi)外研究現(xiàn)狀
在國(guó)外,互聯(lián)網(wǎng)行業(yè)發(fā)展較早,推薦算法的應(yīng)用也比較普及。Amazon發(fā)明了基于物品的協(xié)同過(guò)濾推薦ItemCF算法,該算法是根據(jù)用戶(hù)已經(jīng)購(gòu)買(mǎi)并已進(jìn)行評(píng)分的商品,尋找用戶(hù)可能喜歡的商品為用戶(hù)推薦商品。谷歌利用個(gè)性化推薦技術(shù)推出了優(yōu)先級(jí)收件箱功能,其是通過(guò)分析用戶(hù)的行為,將用戶(hù)感興趣的郵件放在一個(gè)專(zhuān)門(mén)的收件箱里。谷歌的研究表明,該方法幫助用戶(hù)節(jié)省了6%的時(shí)間。社交網(wǎng)絡(luò)應(yīng)用代表Facebook和Twitter也是通過(guò)個(gè)性化推薦為用戶(hù)推薦內(nèi)容和好友。Facebook還推出一個(gè)推薦API(稱(chēng)為InstantPersonalization),該工具根據(jù)用戶(hù)好友信息,為用戶(hù)推薦其好友喜歡的物品。關(guān)于個(gè)性化展示廣告,雅虎是這方面的研究代表,曾發(fā)表大量個(gè)性化廣告方面的論文。另外,知名閱讀網(wǎng)站Google Reader、Zite、新聞閱讀網(wǎng)站Digg也都使用個(gè)性化推薦技術(shù)為用戶(hù)推薦感興趣的內(nèi)容,提高用戶(hù)的活躍度。
在國(guó)內(nèi),推薦技術(shù)被各大互聯(lián)網(wǎng)巨頭廣泛地應(yīng)用于自家的平臺(tái)上,如“京東”“阿里巴巴”等電商巨頭都在自己的平臺(tái)上大力發(fā)展推薦技術(shù),以提高用戶(hù)體驗(yàn)和用戶(hù)黏性,從而增強(qiáng)自身的盈利能力和競(jìng)爭(zhēng)力。
2 ?功能需求分析
該系統(tǒng)包含三種用戶(hù)角色,分別是消費(fèi)者用戶(hù)、店鋪員工、店鋪管理員。所有角色都具備個(gè)人信息管理功能,其中包括修改個(gè)人信息、登入、登出,消費(fèi)者用戶(hù)也可以通過(guò)瀏覽商品并進(jìn)行購(gòu)物生成訂單。為提高用戶(hù)對(duì)該平臺(tái)的使用體驗(yàn),需要為用戶(hù)提供服裝的個(gè)性化推薦,還需要具備動(dòng)態(tài)的功能來(lái)為店鋪發(fā)布消息或進(jìn)行活動(dòng)推廣。為保障消費(fèi)者與店鋪員工之間的溝通,該系統(tǒng)還提供客服功能。為確保店鋪與店鋪之間的隔離性,用戶(hù)需要選擇一個(gè)已參加的店鋪為當(dāng)前店鋪,并進(jìn)行商品的瀏覽和購(gòu)買(mǎi)。店鋪管理員相對(duì)于店鋪員工角色多了管理員工和管理店鋪下用戶(hù)的功能,并享有店鋪信息管理和查看店鋪流量可視化信息的功能。綜合三類(lèi)用戶(hù)的功能,系統(tǒng)整體用例圖如圖1所示。
3 ?系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 ?系統(tǒng)設(shè)計(jì)
通過(guò)對(duì)該服裝店鋪服務(wù)平臺(tái)的系統(tǒng)分析,劃分出該系統(tǒng)的主要構(gòu)成模塊,分別為服裝商品模塊、首頁(yè)配置模塊、用戶(hù)模塊、購(gòu)物車(chē)模塊、訂單模塊、動(dòng)態(tài)模塊、店鋪模塊、流量可視化模塊。系統(tǒng)總體結(jié)構(gòu)圖如圖2所示。
3.2 ?系統(tǒng)部分功能實(shí)現(xiàn)
3.2.1 ?推薦功能
該系統(tǒng)的服裝推薦功能主要是基于用戶(hù)數(shù)據(jù)協(xié)同過(guò)濾的推薦算法來(lái)實(shí)現(xiàn)的,使用余弦相似度的度量方法來(lái)計(jì)算用戶(hù)與用戶(hù)之間的相似性,最終將相似度較高的服裝商品推薦給用戶(hù)。
首先保存用戶(hù)瀏覽數(shù)據(jù),并完成點(diǎn)擊量的統(tǒng)計(jì),再調(diào)用推薦模塊工具類(lèi)中的方法,使用余弦相似度公式來(lái)計(jì)算兩個(gè)用戶(hù)之間的相似度。把計(jì)算出的用戶(hù)相似度數(shù)據(jù)保存到用戶(hù)相似度數(shù)據(jù)表中,如果已經(jīng)存在就會(huì)更新兩用戶(hù)之間的相似度數(shù)據(jù)。具體代碼為:
for (UserSimilarityDTO usim : similarityList) {
if (userSimilarityService.isExistsUserSimilarity(usim)) {
boolean flag = userSimilarityService.updateUserSimilarity (usim);
if (!flag) {
userSimilarityService.saveUserSimilarity(usim);
}}}
//得到某個(gè)消費(fèi)者用戶(hù)與其余用戶(hù)的相似度列表主要代碼
public List<UserSimilarityDTO> listUserSimilarityByUId (Long userId) {
if (userId == null) {return null; }
List<UserSimilarityDTO> userSimilarityList = this.userSimilarityMapper.listUserSimilarityByUId(userId);
return userSimilarityList;}
//找出與該用戶(hù)瀏覽行為相似度最高的兩個(gè)用戶(hù)
PriorityQueue<UserSimilarityDTO> minHeap = new PriorityQueue<UserSimilarityDTO>(new Comparator<UserSimilarityDTO> (){
public int compare(UserSimilarityDTO o1, UserSimilarity DTO o2) {
if (o1.getSimilarity() - o2.getSimilarity() > 0) { return 1;
} else if (o1.getSimilarity() - o2.getSimilarity() == 0) { return 0;
} else { return -1;
}}});
//把得到最大相似度用戶(hù)的id取出來(lái)
for (UserSimilarityDTO userSimilarityDTO : userSimilarity DTOList) {
if (minHeap.size() < topN) {
minHeap.offer(userSimilarityDTO);
System.out.println(minHeap.peek().getSimilarity());
} else if (minHeap.peek().getSimilarity() < userSimilarityDTO. getSimilarity()) {
minHeap.poll();
minHeap.offer(userSimilarityDTO);
}}
List<Product> recommendateProducts = new ArrayList <Product>();
找出二級(jí)類(lèi)目中的所有商品,將當(dāng)前二級(jí)類(lèi)目中點(diǎn)擊量最大的商品推薦給用戶(hù)
for (Long category2Id : recommendateCategory2) {
List<ProductDTO> productList = productService.listProductByCategory2Id(category2Id);
Product maxHitsProduct = RecommendUtils.findMaxHitsProduct(productList);
recommendateProducts.add(maxHitsProduct); }
在實(shí)現(xiàn)動(dòng)態(tài)推薦功能時(shí),實(shí)現(xiàn)方式類(lèi)似,效果圖如圖3所示。
3.2.2 ?店鋪流量數(shù)據(jù)可視化功能
流量可視化功能前端使用Echart對(duì)該系統(tǒng)銷(xiāo)量、營(yíng)業(yè)額、訂單數(shù)進(jìn)行數(shù)據(jù)渲染。首先初始化Echart實(shí)例,指定圖表的配置項(xiàng)和數(shù)據(jù),最后顯示圖表。代碼為:
myChart = window.echarts.init(document.getElementById ('zoom'))
const option = {
title: {text: '系統(tǒng)折線(xiàn)圖'},
tooltip: {},
legend: {data: ['新增注冊(cè)', '付費(fèi)用戶(hù)', '活躍用戶(hù)', '訂單數(shù)', '當(dāng)日總收入']},
toolbox: {feature: {saveAsImage: {}}},
grid: {left: '3%', right: '4%', bottom: '3%', containLabel: true},
xAxis: [ ]}
myChart.setOption(option)} })
onUnmounted(() => {
myChart.dispose()}
3.2.3 ?用戶(hù)管理功能
店鋪管理員可以通過(guò)該功能來(lái)管理店鋪的消費(fèi)者用戶(hù)賬號(hào),可以進(jìn)行消費(fèi)者用戶(hù)賬號(hào)的禁用與解除禁用,以下代碼完成查看信息功能。代碼為:
User user = userMapper.getById(userId);
UserDetailVO userDetailVO = new UserDetailVO();
BeanUtil.copyProperties(user, userDetailVO);
List<Role> roleList = userDetailVO.getRoleList();
if (i != roleList.size() - 1) {
userDetailVO.setRoleIds(roleList.get(i).getId() + ",");
} else {
userDetailVO.setRoleIds(roleList.get(i).getId() + "");
}
4 ?結(jié) ?論
該系統(tǒng)主要面向服裝店鋪,為服裝店鋪向線(xiàn)上轉(zhuǎn)型提供了平臺(tái),服裝店鋪可以在該平臺(tái)發(fā)展屬于自己店鋪的線(xiàn)上銷(xiāo)售渠道。該系統(tǒng)采用個(gè)性化服裝推薦算法為用戶(hù)提供更加精確的服裝推薦。但目前現(xiàn)有的主流推薦算法只是根據(jù)該系統(tǒng)設(shè)計(jì)的,系統(tǒng)也是以用戶(hù)行為記錄為主,通過(guò)增加用戶(hù)身高體重的外貌特征來(lái)提高推薦算法的準(zhǔn)確性。該系統(tǒng)產(chǎn)生的用戶(hù)瀏覽記錄是一個(gè)不可逆的過(guò)程,所以當(dāng)用戶(hù)誤操作后也會(huì)對(duì)系統(tǒng)向該用戶(hù)推薦的商品產(chǎn)生影響;但隨著數(shù)據(jù)的增多這種少量的數(shù)據(jù)并不會(huì)對(duì)總體數(shù)據(jù)產(chǎn)生影響。
參考文獻(xiàn):
[1] HE X N,LIAO L L,ZHANG H W,et al. Neural collaborative filtering [C]//WWW '17:Proceedings of the 26th International Conference on World Wide Web.Perth:International World Wide Web Conferences Steering Committee,2017:173-182.
[2] 陳軍,謝衛(wèi)紅,陳揚(yáng)森.國(guó)內(nèi)外大數(shù)據(jù)推薦算法領(lǐng)域前沿動(dòng)態(tài)研究 [J].中國(guó)科技論壇,2018(1):173-181.
[3] 林偉婷.C/S與B/S架構(gòu)技術(shù)比較分析 [J].科技資訊,2018,16(13):15-16.
[4] LIU J,WANG D,DING Y. PHD:A Probabilistic Model of Hybrid Deep Collaborative Filtering for Recommender Systems [J].Journal of Machine Learning Research,2017:224-239.
[5] 雷曼,龔琴,王紀(jì)超,等.基于標(biāo)簽權(quán)重的協(xié)同過(guò)濾推薦算法 [J].計(jì)算機(jī)應(yīng)用,2019,39(3):634-638.
作者簡(jiǎn)介:郭玉芝(1985.01—),女,漢族,山東即墨人,副教授,碩士研究生,研究方向:軟件質(zhì)量管理、數(shù)據(jù)庫(kù)應(yīng)用。