丁 一, 沈至榕, 謝穎華
(東華大學 信息科學與技術學院,上海 201620)
校園二手書交易網站推薦引擎的設計與實現
丁 一, 沈至榕, 謝穎華
(東華大學 信息科學與技術學院,上海 201620)

大學二手書交易同一般網絡購物不同,直接應用普通推薦算法設計推薦引擎不能很好地進行推薦。為了使大學生二手書購物網站能夠更好地為用戶推薦書籍,提高推薦結果的準確性及推薦效率,在原有推薦模塊的基礎上針對大學生用戶的特殊性提出了一種適用于二手書購物網站的推薦算法模塊優化推薦引擎。該算法模塊有以下特性:①在基于物品推薦算法的基礎上,結合書籍評分、新舊等因子優化推薦結果;②為方便用戶購書新增打包推薦功能,使用戶可以一鍵購買多本所需書籍;③根據用戶群體購書可預測的特性加入了基于時間節點的推薦算法,即按時得需,按需推薦。
推薦算法; 評分機制; 新舊因子; 打包推薦; 時間節點
隨著可持續發展理念的進一步加強,為了節約書本資源,二手書交易在高校蓬勃發展。在信息化時代的背景下,二手書互聯網交易平臺應運而生。二手書購物網站出售的書籍種類繁多,涉及到教材、課外讀物等多個領域,此外,教材類書籍又包含學校多個專業的不同教材,簡單的站內搜索引擎[1]已不能很好地滿足用戶需要,因此二手書購物網站同樣面臨著信息過載[2]的問題,個性化推薦引擎的應用與創新便更加具有價值。而大學二手書交易同一般網絡購物不同,大學二手書交易具有以下特點:①用戶群體的特殊性,均為在校大學生;②購書需求的特殊性及可預測性,一般為科本教材、輔導讀物等;③大學二手書與普通新書交易不同,具有新舊、時間等影響因子[3-4]。因此,直接應用普通推薦算法設計推薦引擎不能很好進行推薦。推薦算法是推薦引擎的核心內容,也是決定推薦效率以及推薦品質的關鍵。推薦的個性化以及合理化是衡量推薦算法的重要指標。本文結合實際情況合理設計與改進推薦算法,完善推薦引擎,使得網站的用戶能夠得到及時、有效且相對滿意的推薦結果。
1.1 基于物品的推薦算法的應用
第一部分:基于物品的推薦算法(Item-Based Method)[5],該算法是為物品分類標簽,將與用戶曾經購買過的物品屬性相同或相似的另一種物品推薦給該用戶。針對本次應用對象——大學生,本文將書籍分類為小說、課本、輔導書等,并且在各大類的每本書上加上相關標簽。例如《模擬電子技術基礎同步輔導及習題全解》這本書,其標簽有①作者:于登峰,邊文思;②類別:輔導書;③適用課程:模擬電子技術基礎④專業大類:電氣信息類等。如果該用戶之前買過《模擬電子技術基礎》這本書,便將該書推薦給該用戶。同時,基于用戶具有特殊性[6-7]的事實,根據用戶所在學院,專業以及年級的不同,對其進行相應的推薦,使推薦結果更具針對性,實效性。
第二部分:基于物品的協同過濾算法(Item-Based Collaborative Filtering Recommendation Algorithms)[8]。本文針對書籍的標簽機制[9-10],將該算法應用于此次推薦算法中。在兩本書之間有兩個以上的相同標簽的情況下,根據以下公式計算兩個物品之間的相似度[11-12]:
(1)
式中:N(u)是含有用戶喜歡的物品的集合;S(j,K)是和物品j最相似的K個物品的集合,這里根據書籍標簽相似度取K為10,即取與書籍j相似度排名前十的書籍的集合;wji是書籍j與書籍i的相似度;rui是用戶u對物品i的興趣。利用該公式以及標簽機制,可以在用戶數據缺乏的時候對用戶做出盡可能準確對推薦。
1.2 一般推薦算法未能解決的問題
以上算法是基本算法,利用物品之間對的相似度以及相互之間的聯系(課本與該課本輔導書的關系)對用戶進行推薦,這樣的好處是簡單高效。由于大學校園二手書交易的特殊性,這樣的算法有以下待解決的問題:①推薦結果未考慮二手書交易特有的影響因子——新舊程度;②重復推薦,即推薦給用戶其已有或不需要的物品,例如學生只需要1本關于《模擬電子技術基礎》的輔導書,而推薦給他內容相近的3本輔導書,那么對于用戶而言推薦后仍然需要篩選,降低推薦效率;③用戶購書需一本一本查找選擇,不能使用戶方便高效地購物;④推薦結果具有滯后性,不能預測用戶購物需求,即完全依賴用戶購買記錄,沒有用到用戶基本屬性的預測作用。⑤結合標簽機制的協同過濾算法面臨的問題是標簽數量有限導致相似度處于同一等級的書籍數量較多,會使推薦結果繁多。
2.1 推薦引擎的結構
2.1.1 推薦系統的結構功能[13]
(1) 數據收集和存儲模塊。UI系統負責給用戶展示網頁并和用戶交互。網站會通過日志系統將用戶在UI上的各種各樣的行為記錄到用戶行為日志中(見圖1)。

圖1 推薦引擎結構圖
(2) 推薦引擎模塊。它是推薦系統的最核心部分,采用的推薦技術決定著推薦系統的性能優劣(見圖2)。本文所采用的推薦函數一共有4個,分別對應下文結合新舊因子的推薦、基于評分機制的推薦、打包推薦、基于時間節點的推薦算法的應用。

圖2 推薦引擎模塊結構
2.1.2 數據庫設計
數據庫用于保存和管理用戶行為數據和所售商品的特征數據,是推薦引擎的數據存儲模塊。本文針對此次應用實例將數據庫設計如圖3所示。

圖3 數據庫ER圖
2.2 推薦算法模塊的設計
推薦算法模塊是推薦引擎的核心部分,該部分所采用的推薦技術直接決定推薦引擎推薦效果的品質。本文針對大學校園二手書交易平臺的實際情況設計完善推薦引擎的推薦算法模塊,以解決上文分析的待解決的問題。
2.2.1 結合新舊因子的推薦
二手書交易不同于新書購物,具有特定影響因子:新舊程度。可以為書本增添新的標簽用來記錄書本新舊程度。書籍上架前,由工作人員根據一定的標準將書籍劃分為1~4個等級,其中等級1為九成新;等級2為八成新;等級3為七成新;等級4為六成新及以下。等級對應書籍品質參閱京東網對二手書分級標準,結果見表1。
將二手書新舊等級賦值變量Icr用于推薦價值計算。
2.2.2 基于評分機制的推薦算法
針對原有基于物品推薦算法的重復推薦的問題,本文采用建立評分機制[14],并結合書籍熱度對推薦結果進行優化的方法(見圖4)。在本文中熱度指的是一本書被評分的次數。為了避免因出現一本書雖然評分人數較少但卻評分很高這種情況,導致其推薦次序靠后的問題,本文采用對評分結果和熱度進行加權相加來計算推薦價值的大小。
針對基于物品的協同過濾算法計算相似度式(1)做出以下調整:N(u)表示所有含有用戶喜歡的標簽的書的集合,rui的值:當用戶u對書籍i評分過為“1”,否則為“0”;并增添wji的求解公式[11-12]:

表1 二手書新舊程度對應等級表
注:常見問題1殘缺、粘連、水漬、變形、蟲蛀、修補;常見問題2墨跡、污損、簽章、磨損

圖4 基于評分機制的推薦算法流程圖
(3)
式中:Mji為M對書籍j和書籍i評分過的用戶;Iui對書籍i評分過的用戶數;Juj為對書籍j評分過的用戶數。
推薦價值計算公式如下:
(4)
式中:Pi為書籍i的推薦價值;a、b為比例系數,本文采用a=b=0.5;Si為書籍i的評分值;Hi為書籍i的熱度(即被評分次數),Ion為書籍新舊等級。
加入評分機制后,可以更加客觀地對書籍的推薦價值進行排名,基于“擇優推薦”的基本構想,便可以大大提高推薦質量;同時為對推薦數量進行限制,進一步優化推薦結果;結合熱度的加權算法可以提高推薦結果的準確度。
2.2.3 打包推薦功能
在原有推薦算法模塊的基礎上,結合用戶群體的特質進行改進,加入打包推薦的功能。通過調查,用戶購書高峰期一般為學期末和開學前,用戶主要購書需求是對下一學年所開課程的課本。二手書購物網的書籍一般是按本出售的,所以用戶面臨的問題是①一學期所開設的課程內容需要到學校教務網查詢;②挑選課本時需要按課程表一一查找,費時費力。針對以上問題在原有的算法基礎上加入了“打包推薦”的理念,在后臺服務系統中將學院不同專業各個學期所開設的課程以及課程所需課本(不含輔導書)記錄下來,將其中所設計的圖書打包為“XXX專業大X第X學期課本包”,將這一選項添加到推薦結果中去。
增加該功能的優點是可以將多本圖書一步推薦,同時解決了學生不清楚課本的種類的問題,免去了學生查詢教務網、按課表一一查找的繁瑣,提高了推薦效率和用戶使用體驗。該項功能的缺點是需要保證后臺數據的正確性與實時性,即專業課程安排要正確,并且當學校課程安排有變化時要及時更新打包推薦的內容。同時要確保推薦內容與推薦對象的匹配正確,即推薦內容要與用戶的專業和學期相對應。
2.2.4 基于時間節點的推薦算法
通過分析得出購書高峰期為學期末或學期始,這時候大家對下學期的課本具有需求,我們可以發現這之間有一個很明確的關系:時間與需求的關系。即在不同的時間推薦不同的書籍[15],其流程見圖5。
該算法將原本的根據購物數據的推薦拓展為結合時間的動態推薦,這樣能在不同的時刻滿足用戶不同的需求,及時提供他們需要的商品推薦,或者潛在需要的商品,例如用戶本學期按學校安排需要參加CET4的考試,那么在本學期開學前便將《星火英語-黑旋風試卷》(上海交大出版社出版)推薦給他,在推薦給他的同時也起到了提醒作用。
3.1 結合新舊因子及評分機制推薦算法的實現
為每一本書添加“用戶評分”標簽,使用戶在購買或瀏覽圖書時能為書籍進行評分,根據用戶的評分對書籍進行排名,將用戶普遍評分高的書籍推薦給有需求的用戶;結合書籍熱度利用加權求和的算法將推薦結果進行優化,同時結合書籍新舊因子計算推薦價值,

圖5 基于時間節點的推薦算法流程圖
將最終推薦價值較高的書推薦給用戶,這樣便可以實現對推薦結果的優化。
部分相關php代碼如下:
?
〈head〉
〈meta http-equiv="Content-Type" content="text/html; charset=utf-8" /〉
〈title〉推薦規則4_新上架的10(非專業)本書按照評價數量(熱度)來推薦〈/title〉
〈/head〉
〈?php
function function_recommend_rule4(db)
{
$query="select book_id from (select * from book where course_id=111 order by register_timedesc limit 0,10) as temp order by book_heatdesc "; //無輸入,返回rcmd_rule4數組
$result=mysqli_query(db,query);
$num_result=mysqli_num_rows(result);
for($i=0;$i<$num_result;$i++)
{
$row=mysqli_fetch_assoc(result);
$output_rcmd_rule4[i]=row[‘book_id’];
}
mysqli_free_result(result);
return output_rcmd_rule4;
}
?>
?
$like_book=a_array_unique(like_book);
foreach (like_book as key=>value)//對評分進行排序
{
$id[$key] = $value[‘id’];
$score[key] = value[‘score’];
}
array_multisort(score,SORT_DESC,SORT_NUMERIC,$like_book);
foreach ($like_book as $key=>value)//只返回id
{
$id[key] = $value[‘id’];
$score[$key] = $value[‘score’];
}
return id;
}
?>
?
3.2 打包推薦功能的實現
采用從學校教務處對課程安排進行統計,確保課程包的正確性,同時隨時關注教務網的動態,一旦有課程更新,及時對課程包數據進行修正。針對推薦匹配問題,采用的解決辦法為:在用戶注冊時要求用戶注明自己的院系專業及入學年份,記錄在用戶數據庫中,可以直接根據其記錄屬性進行相關推薦。
3.3 基于時間節點推薦算法的實現
首先這是根據時間節點的推薦算法,那么就要將用戶的時間分為幾個部分,首先是假期,在該時間段內學生處于無功課狀態,此時便可以為其推薦能力提高類,旅游娛樂類,文學作品類,以再提高和休息娛樂為主要目的進行推薦,在這幾類推薦給用戶的同時也讓他們發現新的興趣點,得到意外驚喜發掘出潛在需求,例如該學生本來對文學作品不太感興趣,對推薦結果中的書名《盜墓筆記》產生一點點興趣,他開始去嘗試,結果使他喜歡上了小說,從而獲得驚喜。然后是在校期間,這個時間段還會繼續細分成開學前、期中和期末,同時要根據安排加入社會考試時期,如四六級、計算機二級等。在開學前(期末),就推薦課本包,將本(下)一學期要用到的課本打包推薦給用戶,同時要對本(下)學期有社會考試的同學進行相關題庫復習資料的推薦;在期中時則對有期中考試的同學進行題庫、復習資料的推薦;期末同期中類似也是針對考試進行備考資料的推薦。
部分相關php代碼如下:
?
〈head〉
〈meta http-equiv="Content-Type" content="text/html; charset=utf-8" /〉
〈title〉推薦規則3(在選課以及開學期間推送新學期所用到的專業書)
〈/head〉
〈body〉
〈?php
function
function_recommend_rule3(&phpmajor,&$cur_grade,$db)
{
$query="select book_id from major,course,book where major.major_id=phpmajor
andmajor.course_id=course.course_id
andcourse.course_term=cur_grade
andcourse.course_id=book.course_id";
$result=mysqli_query($db,$query);
$num_result=mysqli_num_rows($result);
if($num_result==0)
return;
for($i=0;$i { $row=mysqli_fetch_assoc($result); $output_rcmd_rule3[$i]=$row[‘book_id’]; } mysqli_free_result(result); return output_rcmd_rule3; } ?〉 〈/body〉 ? 3.4 算法檢驗結果分析 為了驗證新設計的算法的性能,采用對比應用傳統基于物品的推薦算法Item-Based Method以及Item-Based Collaborative Filtering Recommendation Algorithms這兩種算法與應用設計后的算法的推薦結果指標的方法。采用本校信息學院各專業學生作為測試數據集,推薦指標采用準確P[1]率和平均購書時間Ta。其中測試平均購書時間的數據集為4個專業隨機挑選的5名學生,分別為:電氣專業1名(男),大三;通信專業2名(男、女)大三;自動化專業1名(男),大二;電子專業1名(女)大一。測量準確率的數據集為隨機抽取購書學生50名通過走訪各班,以問卷調查方式得出其對推薦欄書的滿意度。 測試方法為線下本地測試。在同學有較大購書需求的學期初,通過邀請本學院不同學生(數據集上文已介紹),先使用傳統推薦算法進行本地運行,使學生進行購書行為,利用后臺記錄其操作數據,并發放問卷對第一次滿意度和準確率進行調查;再加入新的推薦算法再次使同一用戶進行購書行為,記錄其操作數據,發放問卷調查第二次滿意度及準確率。 平均購書時間Ta:該指標為檢測新算法的加入是否提高了用戶的購書效率,計算公式為 (5) 式中:T為用戶從登錄購物網頁到完成下單操作所使用的全部時間;n為該用戶購買書籍的本書。 準確率:推薦列表中用戶喜歡的產品和所有被推薦產品的比率,計算方法為 (6) 式中:Nrs推薦內容中用戶喜歡的產品個數;Nr用戶喜歡的所有產品的個數;Ns為所有被推薦產品的個數。 從圖6中數據可以看出單純使用基于物品的推薦算法Item-Based Method以及Item-Based Collaborative Filtering Recommendation Algorithms的算法用戶平均購買時間絕大部分是要高于加入新算法后用戶平均購買時間的,可以反映出用戶購書效率有了一定程度的提高。 從圖7中可以得出,準確率在加入新的算法后有了一定程度的提升,而在用戶購買書本較少時由于推薦書本數一般大于用戶購買數,所以導致準確率較低;當用戶購買的書本在5~6本時準確率最高,此時推薦滿意度最好;當購買書籍超過6本后準確率變化不大,維持在一個恒定水平。由于購書用戶通常一次購買書籍不超過10本所以沒有測得當用戶一次購書超過10本的數據。同時課本打包推薦的加入也極大的提高了推薦的準確率。 圖6 平均購書時間Ta前后對比圖7 準確率隨購買本書變化及前后對比圖 針對推薦引擎直接應用普通推薦算法不能很好地滿足大學校園二手書交易平臺推薦需求這一問題,提出了應用結合新舊因子的推薦、基于評分機制的推薦,增加打包推薦功能以及采用基于時間節點的推薦的方法。結合新舊因子的方法將所售書籍中成色較好的優先推薦給用戶;引入評分機制后可以將大多數用戶評價較高的書籍推薦給用戶;增加一鍵購書功能后可以使用戶更方便更快捷地完成購物;應用基于時間節點的推薦算法[16]后使推薦結果更加貼近用戶群體(大學生)的學習、生活,能及時滿足用戶的購書需求。通過對用戶購買數據的統計,以準確率和平均購買時間為評價指標,得出的結果顯示此次算法的改進進一步提高了推薦引擎的推薦質量。以上方法的使用極大地優化了二手書交易平臺的推薦功能,使用戶有了更好的使用體驗,為大學校園二手書交易發展提供了推動力。 而在本次研究應用中,由于學生購書本書一般不超過10本,故所獲得數據缺乏購書本書更多的數據,不能進一步驗證當一次性購書較多時本系統對推薦準確率和效率的影響;而當購書本書較少時,由于推薦本書較多,所以準確率會偏低,這也是未解決的問題之一。希望后續工作者能研究解決。 [1] 王國霞,劉賀平.個性化推薦系統綜述[J].計算機工程與應用,2012(7):66-76. [2] Resnick P,Iacovou N,etal. GroupLens: an open architecture for collaborative filtering of netnews[C]// Proceedings of the 1994 ACM con-Ference on Computer Supported Cooperative Work.ChapelHill,NorthCarolina,UnitedStates,October 22-26,1994. [3] Adomavicius G,Sankaranarayanan R,Shahana S,etal.Incorpo-rating contextual information in recommendation systems using a multidimensional approach[J].ACM Transactions on Infor- mation Systems,2005,23(1):103-145. [4] Weng S S,Lin B S,Chen W J.Using contextual information and multidimensional approach for recommendation[J].ExpertSystem with Applications,2009(36):1268-1279. [5] 劉 瑋.電子商務系統中的信息推薦方法研究[J].情報科學,2006, 24(2):300-303. [6] Zhao Jinghe,Liu Guiquan.Automatic modeling based on interest clustering[J].AI Commun,2001,14(3):129-147. [7] Zhang Yulian,Wang Quan.User profile mining of combining Web behavior and content analysis[J].New Technology of Library and Information Service,2007(6):52-55. [8] 查大元. 個性化推薦系統的研究和實現[J]. 計算機應用與軟件, 2011,28(1): 47-49,98. [9] Zhou T C, Ma H, King I,etal. UserRec: A user recommendation framework in social tagging systems[C]//In: Proc. of the 24th AAAI Conf. on Artificial Intelligence. AAAI Press, 2010. 1486-1491. [10] Wu L, Chen EH, Liu Q,etal. Leveraging tagging for neighborhood-aware probabilistic matrix factorization. In: Proc. of the ACM Int’l Conf. on Information and Knowledge Management. ACM Press, 2012. 1854-1858. [doi: 10.1145/ 2396761.2398531] [11] 項 亮.推薦系統實踐[M].北京:人民郵電出版社,2012. [12] Luke Welling,Laura Thomson.PHP和MySQL Web開發[M].北京:機械工業出版社,2009. [13] 許海玲.互聯網推薦系統比較研究[J].軟件學報,2009,20(2): 350-362. [14] Liu Q, Chen EH, Xiong H,etal. Enhancing collaborative filtering by user interests expansion via personalized ranking[J]. IEEE Trans on Systems, Man and Cybernetics—B, 2012,42(1):218-233. [doi: 10.1109/TSMCB.2011.2163711] [15] Li B, Zhu XQ, Li RJ,etal. Cross-domain collaborative filtering over time[C]//In: Proc. of the 22nd Int’l Joint Conf. on Artificial Intelligence. IJCAI/AAAI Press, 2011. 2292-2298. [doi: 10.5591/978-1-57735-516-8/IJCAI11-382] [16] 孫光福, 吳 樂, 劉 淇, 等.基于時序行為的協同過濾推薦算法[J].軟件學報,2013,24(11):2721-2733. Design and Implementation of Recommendation Engine Based on University Campus’ Used Book Shopping Network DINGYi,SHENGZhirong,XIEYinghua (School of Information Science and Technology, Donghua University, Shanghai 201620, China) College used book trade is different from the general online shopping. Recommendation engine applied common recommendation algorithm cannot be very good to recommend. In order to make students’ used book shopping site better to recommend books to users, to improve the accuracy of the results and the efficiency of recommendation, based on the original recommendation module, the paper proposed a suitable mode for shopping website of used books recommendation engine with an optimal recommendation algorithm module. The new algorithm module has the following characteristics: (1) Based on the items of the recommendation algorithm, books’ scores and "old and new" factors are taken into consideration to optimize recommendation results; (2) For the convenience of users purchase, a new packaged recommendation function is added, so users can buy the required books by pushing one key; (3) According to the fact that the needs of students can be predicted, the recommendation algorithm was designed based on time nodes. recommendation algorithm; scoring mechanism; “old and new” factors; packaged recommendation function; time-based 2016-08-22 丁 一(1994-),男,河北張家口人,本科生,主要研究方向:數據挖掘。Tel.:18818010121;E-mail:200188881@qq.com 謝穎華(1972-),女,上海人,碩士,副教授,主要研究方向:大數據。Tel.:13701773541;E-mail:yh_xie@dhu.edu.cn TP 39 A 1006-7167(2017)05-0148-06
4 結 語