郭玉芝 林朝陽(yáng)
摘 ?要:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來(lái)越多的電商服務(wù)平臺(tái)使用推薦算法來(lái)提高用戶的購(gòu)物體驗(yàn),以此促進(jìn)消費(fèi)。該平臺(tái)主要研究基于協(xié)同過(guò)濾推薦算法實(shí)現(xiàn)服裝推薦功能,并實(shí)現(xiàn)店鋪入駐、服裝商品管理、商品交易、服裝推薦、消息會(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
中圖分類號(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ù)用戶的歷史行為、物品屬性或者上下文等信息進(jìn)行建模,預(yù)測(cè)用戶對(duì)給定項(xiàng)目的偏好。協(xié)助消費(fèi)用戶從大量信息中找到符合其需求的產(chǎn)品,幫助賣家提升商品的關(guān)注度,這是推薦算法要解決的核心問(wèn)題。研究設(shè)計(jì)該平臺(tái)以實(shí)現(xiàn)實(shí)體店發(fā)展線上銷售渠道的目的,并通過(guò)用戶信息、瀏覽記錄來(lái)設(shè)計(jì)推薦算法,實(shí)現(xiàn)對(duì)不同用戶的個(gè)性化推薦以此提高用戶體驗(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ù)用戶已經(jīng)購(gòu)買并已進(jìn)行評(píng)分的商品,尋找用戶可能喜歡的商品為用戶推薦商品。谷歌利用個(gè)性化推薦技術(shù)推出了優(yōu)先級(jí)收件箱功能,其是通過(guò)分析用戶的行為,將用戶感興趣的郵件放在一個(gè)專門的收件箱里。谷歌的研究表明,該方法幫助用戶節(jié)省了6%的時(shí)間。社交網(wǎng)絡(luò)應(yīng)用代表Facebook和Twitter也是通過(guò)個(gè)性化推薦為用戶推薦內(nèi)容和好友。Facebook還推出一個(gè)推薦API(稱為InstantPersonalization),該工具根據(jù)用戶好友信息,為用戶推薦其好友喜歡的物品。關(guān)于個(gè)性化展示廣告,雅虎是這方面的研究代表,曾發(fā)表大量個(gè)性化廣告方面的論文。另外,知名閱讀網(wǎng)站Google Reader、Zite、新聞閱讀網(wǎng)站Digg也都使用個(gè)性化推薦技術(shù)為用戶推薦感興趣的內(nèi)容,提高用戶的活躍度。
在國(guó)內(nèi),推薦技術(shù)被各大互聯(lián)網(wǎng)巨頭廣泛地應(yīng)用于自家的平臺(tái)上,如“京東”“阿里巴巴”等電商巨頭都在自己的平臺(tái)上大力發(fā)展推薦技術(shù),以提高用戶體驗(yàn)和用戶黏性,從而增強(qiáng)自身的盈利能力和競(jìng)爭(zhēng)力。
2 ?功能需求分析
該系統(tǒng)包含三種用戶角色,分別是消費(fèi)者用戶、店鋪員工、店鋪管理員。所有角色都具備個(gè)人信息管理功能,其中包括修改個(gè)人信息、登入、登出,消費(fèi)者用戶也可以通過(guò)瀏覽商品并進(jìn)行購(gòu)物生成訂單。為提高用戶對(duì)該平臺(tái)的使用體驗(yàn),需要為用戶提供服裝的個(gè)性化推薦,還需要具備動(dòng)態(tài)的功能來(lái)為店鋪發(fā)布消息或進(jìn)行活動(dòng)推廣。為保障消費(fèi)者與店鋪員工之間的溝通,該系統(tǒng)還提供客服功能。為確保店鋪與店鋪之間的隔離性,用戶需要選擇一個(gè)已參加的店鋪為當(dāng)前店鋪,并進(jìn)行商品的瀏覽和購(gòu)買。店鋪管理員相對(duì)于店鋪員工角色多了管理員工和管理店鋪下用戶的功能,并享有店鋪信息管理和查看店鋪流量可視化信息的功能。綜合三類用戶的功能,系統(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è)配置模塊、用戶模塊、購(gòu)物車模塊、訂單模塊、動(dòng)態(tài)模塊、店鋪模塊、流量可視化模塊。系統(tǒng)總體結(jié)構(gòu)圖如圖2所示。
3.2 ?系統(tǒng)部分功能實(shí)現(xiàn)
3.2.1 ?推薦功能
該系統(tǒng)的服裝推薦功能主要是基于用戶數(shù)據(jù)協(xié)同過(guò)濾的推薦算法來(lái)實(shí)現(xiàn)的,使用余弦相似度的度量方法來(lái)計(jì)算用戶與用戶之間的相似性,最終將相似度較高的服裝商品推薦給用戶。
首先保存用戶瀏覽數(shù)據(jù),并完成點(diǎn)擊量的統(tǒng)計(jì),再調(diào)用推薦模塊工具類中的方法,使用余弦相似度公式來(lái)計(jì)算兩個(gè)用戶之間的相似度。把計(jì)算出的用戶相似度數(shù)據(jù)保存到用戶相似度數(shù)據(jù)表中,如果已經(jīng)存在就會(huì)更新兩用戶之間的相似度數(shù)據(jù)。具體代碼為:
for (UserSimilarityDTO usim : similarityList) {
if (userSimilarityService.isExistsUserSimilarity(usim)) {
boolean flag = userSimilarityService.updateUserSimilarity (usim);
if (!flag) {
userSimilarityService.saveUserSimilarity(usim);
}}}
//得到某個(gè)消費(fèi)者用戶與其余用戶的相似度列表主要代碼
public List<UserSimilarityDTO> listUserSimilarityByUId (Long userId) {
if (userId == null) {return null; }
List<UserSimilarityDTO> userSimilarityList = this.userSimilarityMapper.listUserSimilarityByUId(userId);
return userSimilarityList;}
//找出與該用戶瀏覽行為相似度最高的兩個(gè)用戶
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;
}}});
//把得到最大相似度用戶的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í)類目中的所有商品,將當(dāng)前二級(jí)類目中點(diǎn)擊量最大的商品推薦給用戶
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)方式類似,效果圖如圖3所示。
3.2.2 ?店鋪流量數(shù)據(jù)可視化功能
流量可視化功能前端使用Echart對(duì)該系統(tǒng)銷量、營(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)折線圖'},
tooltip: {},
legend: {data: ['新增注冊(cè)', '付費(fèi)用戶', '活躍用戶', '訂單數(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 ?用戶管理功能
店鋪管理員可以通過(guò)該功能來(lái)管理店鋪的消費(fèi)者用戶賬號(hào),可以進(jìn)行消費(fèi)者用戶賬號(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)主要面向服裝店鋪,為服裝店鋪向線上轉(zhuǎn)型提供了平臺(tái),服裝店鋪可以在該平臺(tái)發(fā)展屬于自己店鋪的線上銷售渠道。該系統(tǒng)采用個(gè)性化服裝推薦算法為用戶提供更加精確的服裝推薦。但目前現(xiàn)有的主流推薦算法只是根據(jù)該系統(tǒng)設(shè)計(jì)的,系統(tǒng)也是以用戶行為記錄為主,通過(guò)增加用戶身高體重的外貌特征來(lái)提高推薦算法的準(zhǔn)確性。該系統(tǒng)產(chǎn)生的用戶瀏覽記錄是一個(gè)不可逆的過(guò)程,所以當(dāng)用戶誤操作后也會(huì)對(duì)系統(tǒng)向該用戶推薦的商品產(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)用。