郭玉芝 林朝陽



摘 ?要:隨著互聯網技術的發展,越來越多的電商服務平臺使用推薦算法來提高用戶的購物體驗,以此促進消費。該平臺主要研究基于協同過濾推薦算法實現服裝推薦功能,并實現店鋪入駐、服裝商品管理、商品交易、服裝推薦、消息會話、圈子發現功能。平臺采用前后端分離的開發方式,運用Spring Boot+MySQL+MyBatis+Vue等技術完成平臺的設計與實現。
關鍵詞:推薦算法;Spring Boot;服務平臺;Vue
中圖分類號:TP311 ?文獻標識碼:A 文章編號: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 ? 引 ?言
近年來,隨著互聯網科技的發展,電商的崛起給實體店帶來巨大沖擊。新興技術顛覆了人們傳統的生活方式,特別是在服裝、購物等領域變化顯著。推薦算法能夠根據用戶的歷史行為、物品屬性或者上下文等信息進行建模,預測用戶對給定項目的偏好。協助消費用戶從大量信息中找到符合其需求的產品,幫助賣家提升商品的關注度,這是推薦算法要解決的核心問題。研究設計該平臺以實現實體店發展線上銷售渠道的目的,并通過用戶信息、瀏覽記錄來設計推薦算法,實現對不同用戶的個性化推薦以此提高用戶體驗感,達到解決目前推薦算法影響因素單一,推薦內容具有大眾化趨勢的問題。
1 ?國內外研究現狀
在國外,互聯網行業發展較早,推薦算法的應用也比較普及。Amazon發明了基于物品的協同過濾推薦ItemCF算法,該算法是根據用戶已經購買并已進行評分的商品,尋找用戶可能喜歡的商品為用戶推薦商品。谷歌利用個性化推薦技術推出了優先級收件箱功能,其是通過分析用戶的行為,將用戶感興趣的郵件放在一個專門的收件箱里。谷歌的研究表明,該方法幫助用戶節省了6%的時間。社交網絡應用代表Facebook和Twitter也是通過個性化推薦為用戶推薦內容和好友。Facebook還推出一個推薦API(稱為InstantPersonalization),該工具根據用戶好友信息,為用戶推薦其好友喜歡的物品。關于個性化展示廣告,雅虎是這方面的研究代表,曾發表大量個性化廣告方面的論文。另外,知名閱讀網站Google Reader、Zite、新聞閱讀網站Digg也都使用個性化推薦技術為用戶推薦感興趣的內容,提高用戶的活躍度。
在國內,推薦技術被各大互聯網巨頭廣泛地應用于自家的平臺上,如“京東”“阿里巴巴”等電商巨頭都在自己的平臺上大力發展推薦技術,以提高用戶體驗和用戶黏性,從而增強自身的盈利能力和競爭力。
2 ?功能需求分析
該系統包含三種用戶角色,分別是消費者用戶、店鋪員工、店鋪管理員。所有角色都具備個人信息管理功能,其中包括修改個人信息、登入、登出,消費者用戶也可以通過瀏覽商品并進行購物生成訂單。為提高用戶對該平臺的使用體驗,需要為用戶提供服裝的個性化推薦,還需要具備動態的功能來為店鋪發布消息或進行活動推廣。為保障消費者與店鋪員工之間的溝通,該系統還提供客服功能。為確保店鋪與店鋪之間的隔離性,用戶需要選擇一個已參加的店鋪為當前店鋪,并進行商品的瀏覽和購買。店鋪管理員相對于店鋪員工角色多了管理員工和管理店鋪下用戶的功能,并享有店鋪信息管理和查看店鋪流量可視化信息的功能。綜合三類用戶的功能,系統整體用例圖如圖1所示。
3 ?系統設計與實現
3.1 ?系統設計
通過對該服裝店鋪服務平臺的系統分析,劃分出該系統的主要構成模塊,分別為服裝商品模塊、首頁配置模塊、用戶模塊、購物車模塊、訂單模塊、動態模塊、店鋪模塊、流量可視化模塊。系統總體結構圖如圖2所示。
3.2 ?系統部分功能實現
3.2.1 ?推薦功能
該系統的服裝推薦功能主要是基于用戶數據協同過濾的推薦算法來實現的,使用余弦相似度的度量方法來計算用戶與用戶之間的相似性,最終將相似度較高的服裝商品推薦給用戶。
首先保存用戶瀏覽數據,并完成點擊量的統計,再調用推薦模塊工具類中的方法,使用余弦相似度公式來計算兩個用戶之間的相似度。把計算出的用戶相似度數據保存到用戶相似度數據表中,如果已經存在就會更新兩用戶之間的相似度數據。具體代碼為:
for (UserSimilarityDTO usim : similarityList) {
if (userSimilarityService.isExistsUserSimilarity(usim)) {
boolean flag = userSimilarityService.updateUserSimilarity (usim);
if (!flag) {
userSimilarityService.saveUserSimilarity(usim);
}}}
//得到某個消費者用戶與其余用戶的相似度列表主要代碼
public List<UserSimilarityDTO> listUserSimilarityByUId (Long userId) {
if (userId == null) {return null; }
List<UserSimilarityDTO> userSimilarityList = this.userSimilarityMapper.listUserSimilarityByUId(userId);
return userSimilarityList;}
//找出與該用戶瀏覽行為相似度最高的兩個用戶
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取出來
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>();
找出二級類目中的所有商品,將當前二級類目中點擊量最大的商品推薦給用戶
for (Long category2Id : recommendateCategory2) {
List<ProductDTO> productList = productService.listProductByCategory2Id(category2Id);
Product maxHitsProduct = RecommendUtils.findMaxHitsProduct(productList);
recommendateProducts.add(maxHitsProduct); }
在實現動態推薦功能時,實現方式類似,效果圖如圖3所示。
3.2.2 ?店鋪流量數據可視化功能
流量可視化功能前端使用Echart對該系統銷量、營業額、訂單數進行數據渲染。首先初始化Echart實例,指定圖表的配置項和數據,最后顯示圖表。代碼為:
myChart = window.echarts.init(document.getElementById ('zoom'))
const option = {
title: {text: '系統折線圖'},
tooltip: {},
legend: {data: ['新增注冊', '付費用戶', '活躍用戶', '訂單數', '當日總收入']},
toolbox: {feature: {saveAsImage: {}}},
grid: {left: '3%', right: '4%', bottom: '3%', containLabel: true},
xAxis: [ ]}
myChart.setOption(option)} })
onUnmounted(() => {
myChart.dispose()}
3.2.3 ?用戶管理功能
店鋪管理員可以通過該功能來管理店鋪的消費者用戶賬號,可以進行消費者用戶賬號的禁用與解除禁用,以下代碼完成查看信息功能。代碼為:
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 ?結 ?論
該系統主要面向服裝店鋪,為服裝店鋪向線上轉型提供了平臺,服裝店鋪可以在該平臺發展屬于自己店鋪的線上銷售渠道。該系統采用個性化服裝推薦算法為用戶提供更加精確的服裝推薦。但目前現有的主流推薦算法只是根據該系統設計的,系統也是以用戶行為記錄為主,通過增加用戶身高體重的外貌特征來提高推薦算法的準確性。該系統產生的用戶瀏覽記錄是一個不可逆的過程,所以當用戶誤操作后也會對系統向該用戶推薦的商品產生影響;但隨著數據的增多這種少量的數據并不會對總體數據產生影響。
參考文獻:
[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] 陳軍,謝衛紅,陳揚森.國內外大數據推薦算法領域前沿動態研究 [J].中國科技論壇,2018(1):173-181.
[3] 林偉婷.C/S與B/S架構技術比較分析 [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].計算機應用,2019,39(3):634-638.
作者簡介:郭玉芝(1985.01—),女,漢族,山東即墨人,副教授,碩士研究生,研究方向:軟件質量管理、數據庫應用。