胡 迪
(成都錦城學(xué)院,四川 成都 610000)
在互聯(lián)網(wǎng)和電子商務(wù)的迅速發(fā)展下,電商平臺(tái)已經(jīng)成為人們主要的購(gòu)物方式之一[1-2]。然而,隨著電商平臺(tái)上商品種類的不斷增加和用戶需求的多樣化,用戶往往在面對(duì)大量商品時(shí)遇到信息過(guò)載的問(wèn)題,難以快速找到符合個(gè)人興趣和需求的商品。智能商品推薦系統(tǒng)作為一種幫助用戶在眾多商品中發(fā)現(xiàn)個(gè)性化推薦的工具變得越來(lái)越重要[3]。在上述問(wèn)題中,傳統(tǒng)的商品推薦方法基于人工規(guī)則和經(jīng)驗(yàn),存在推薦效果不佳、無(wú)法滿足用戶個(gè)性化需求等問(wèn)題。機(jī)器學(xué)習(xí)技術(shù)的快速發(fā)展促使基于機(jī)器學(xué)習(xí)的智能商品推薦系統(tǒng)成為研究的熱點(diǎn)和應(yīng)用的趨勢(shì)。基于機(jī)器學(xué)習(xí)的智能商品推薦系統(tǒng)通過(guò)分析用戶的歷史行為、興趣偏好、社交網(wǎng)絡(luò)等信息,利用機(jī)器學(xué)習(xí)算法挖掘隱藏在海量數(shù)據(jù)中的潛在關(guān)聯(lián),提供更準(zhǔn)確、個(gè)性化的商品推薦服務(wù)[4-5]。
為了解決上述問(wèn)題,本文設(shè)計(jì)了基于XGBoost分類器[6-7]的商品推薦系統(tǒng)。該系統(tǒng)采用基于內(nèi)容的過(guò)濾方法,包括數(shù)據(jù)庫(kù)、XGBoost分類器、總體預(yù)測(cè)、預(yù)測(cè)和推薦、推薦商品5個(gè)組件的協(xié)調(diào)工作。實(shí)驗(yàn)通過(guò)處理和分析某在線購(gòu)物平臺(tái)的10 000條數(shù)據(jù)集,展示系統(tǒng)在識(shí)別率和計(jì)算時(shí)間方面的良好性能。本文為電商平臺(tái)的商品推薦提供了一種有效的解決方案,未來(lái)的研究可進(jìn)一步優(yōu)化系統(tǒng)性能,提高推薦的準(zhǔn)確性和用戶體驗(yàn)。
推薦系統(tǒng)是一種用于過(guò)濾信息并預(yù)測(cè)用戶興趣和物品評(píng)價(jià)的平臺(tái),在許多應(yīng)用場(chǎng)景中得到廣泛應(yīng)用,如淘寶、拼多多、亞馬遜等電商平臺(tái)。推薦系統(tǒng)通常包含不同的組成部分,其中基于內(nèi)容的過(guò)濾和協(xié)同過(guò)濾是兩種常見(jiàn)的方法。產(chǎn)品推薦系統(tǒng)旨在為用戶生成各種項(xiàng)目和信息的推薦意見(jiàn),從而使購(gòu)買過(guò)程更加便捷和舒適。創(chuàng)建產(chǎn)品推薦系統(tǒng)的方法主要包括基于用戶-產(chǎn)品關(guān)系、用戶-用戶關(guān)系和產(chǎn)品-產(chǎn)品關(guān)系3種方式。用戶與產(chǎn)品之間的關(guān)系基于個(gè)人對(duì)產(chǎn)品的偏好,而用戶-用戶關(guān)系則是基于相同情境下的用戶,例如相同年齡、相同興趣等;產(chǎn)品-產(chǎn)品關(guān)系則是基于相似的補(bǔ)充產(chǎn)品,如鋼筆和鉛筆之間的關(guān)系。
在推薦系統(tǒng)中,機(jī)器學(xué)習(xí)技術(shù),特別是基于機(jī)器學(xué)習(xí)的推薦技術(shù),被廣泛應(yīng)用于數(shù)據(jù)過(guò)濾和預(yù)測(cè)過(guò)程中。本文采用的是基于內(nèi)容的過(guò)濾和協(xié)同過(guò)濾相結(jié)合的方法。其中,基于內(nèi)容的過(guò)濾是基礎(chǔ),該方法在提取用戶指標(biāo),例如用戶點(diǎn)擊次數(shù)、購(gòu)買的商品、訪問(wèn)的頁(yè)面、在網(wǎng)站上經(jīng)過(guò)的時(shí)間、產(chǎn)品類別等。根據(jù)這些信息,制作客戶檔案,并使用這些信息推薦該區(qū)域的商品。協(xié)同過(guò)濾基于用戶行為和優(yōu)先級(jí)提取信息,并預(yù)測(cè)用戶與其他用戶之間的相似性。例如,如果用戶1點(diǎn)草莓,用戶2也點(diǎn)草莓,那么系統(tǒng)會(huì)識(shí)別出這些用戶有相同的選擇,并向他們推薦一些類似的商品。
本文設(shè)計(jì)的推薦系統(tǒng)根據(jù)用戶之前的活動(dòng)和點(diǎn)擊信息提供基于內(nèi)容的過(guò)濾推薦項(xiàng)。圖 1 顯示了包含5個(gè)部分的系統(tǒng)架構(gòu),分別為數(shù)據(jù)庫(kù)、XGBoost分類器、總體預(yù)測(cè)、預(yù)測(cè)和推薦、推薦商品。
數(shù)據(jù)庫(kù)用于存儲(chǔ)用戶之前的活動(dòng)和點(diǎn)擊信息,例如用戶的歷史購(gòu)買記錄、瀏覽記錄、評(píng)價(jià)等。這些信息作為推薦系統(tǒng)的輸入數(shù)據(jù),用于構(gòu)建用戶的興趣模型。XGBoost分類器是系統(tǒng)的關(guān)鍵部分,用于構(gòu)建基于內(nèi)容的推薦模型。它通過(guò)訓(xùn)練一個(gè)梯度提升樹(shù)模型(XGBoost模型),基于用戶之前的活動(dòng)和點(diǎn)擊信息進(jìn)行特征提取和模型訓(xùn)練,從而得到一個(gè)強(qiáng)大的分類器,用于預(yù)測(cè)用戶對(duì)不同商品的興趣??傮w預(yù)測(cè)部分使用XGBoost分類器對(duì)所有商品進(jìn)行預(yù)測(cè),得到每個(gè)商品的興趣度得分。這些興趣度得分用于后續(xù)的推薦過(guò)程。在預(yù)測(cè)和推薦部分,系統(tǒng)根據(jù)用戶的歷史活動(dòng)和點(diǎn)擊信息,通過(guò)XGBoost分類器對(duì)用戶對(duì)所有商品的興趣度進(jìn)行預(yù)測(cè),并選擇得分較高的商品作為候選推薦項(xiàng)。這些候選推薦項(xiàng)會(huì)進(jìn)一步經(jīng)過(guò)過(guò)濾和排序的處理,從而得到最終的推薦商品列表。推薦商品部分將經(jīng)過(guò)過(guò)濾和排序的推薦商品列表呈現(xiàn)給用戶,用戶可以根據(jù)自己的興趣和需求選擇并進(jìn)行購(gòu)買。
這5個(gè)部分構(gòu)成了一個(gè)完整的基于內(nèi)容的推薦系統(tǒng)總體架構(gòu)。用戶的歷史活動(dòng)和點(diǎn)擊信息存儲(chǔ)在數(shù)據(jù)庫(kù)中,XGBoost分類器根據(jù)這些信息進(jìn)行模型訓(xùn)練,并通過(guò)總體預(yù)測(cè)對(duì)所有商品進(jìn)行興趣度預(yù)測(cè)。預(yù)測(cè)和推薦部分根據(jù)預(yù)測(cè)的興趣度得分對(duì)商品進(jìn)行過(guò)濾和排序,從而得到最終的推薦商品列表,呈現(xiàn)給用戶進(jìn)行選擇和購(gòu)買。
圖1 系統(tǒng)總體架構(gòu)
推薦系統(tǒng)中的算法體系結(jié)構(gòu)流程如圖2所示,第一部分為數(shù)據(jù)預(yù)處理,第二部分為預(yù)測(cè)過(guò)程,最后部分為產(chǎn)品推薦結(jié)果。
圖2 推薦系統(tǒng)中的算法體系結(jié)構(gòu)
XGBoost分類器是系統(tǒng)的關(guān)鍵算法。該算法是一種基于梯度提升樹(shù)的機(jī)器學(xué)習(xí)模型,用于解決分類和回歸問(wèn)題。
XGBoost通過(guò)集成多個(gè)弱學(xué)習(xí)器(本文采用決策樹(shù)[8-10])來(lái)構(gòu)建一個(gè)強(qiáng)大的分類模型。每個(gè)弱學(xué)習(xí)器都是在之前弱學(xué)習(xí)器的基礎(chǔ)上進(jìn)行訓(xùn)練,通過(guò)對(duì)之前弱學(xué)習(xí)器預(yù)測(cè)錯(cuò)誤的樣本進(jìn)行更加關(guān)注,從而不斷優(yōu)化模型的預(yù)測(cè)性能。另外,XGBoost采用了梯度提升的策略,通過(guò)迭代的方式不斷優(yōu)化模型的預(yù)測(cè)性能。在每一輪迭代中,XGBoost計(jì)算損失函數(shù)的負(fù)梯度(即殘差),然后將負(fù)梯度作為新的目標(biāo),構(gòu)建一個(gè)新的弱學(xué)習(xí)器,將其加入模型。這樣,模型在每一輪迭代中都會(huì)不斷提升,從而得到一個(gè)強(qiáng)大的模型。XGBoost還引入了正則化項(xiàng),包括了L1和L2正則化,用于防止過(guò)擬合。正則化項(xiàng)在目標(biāo)函數(shù)中添加了一個(gè)懲罰項(xiàng),限制模型的復(fù)雜度,從而提高模型的泛化能力。
XGBoost允許用戶自定義損失函數(shù),從而可以靈活地適應(yīng)不同的問(wèn)題和場(chǎng)景。用戶可以根據(jù)問(wèn)題的特點(diǎn)定義自己的損失函數(shù),并在訓(xùn)練過(guò)程中使用該損失函數(shù)進(jìn)行優(yōu)化。XGBoost的目標(biāo)函數(shù)包括了目標(biāo)函數(shù)和損失函數(shù),分別為:
Obj(Θ)=L(Θ)+Ω(Θ)
(1)
(2)
(1)初始化:首先,初始化模型的預(yù)測(cè)值,通??梢允褂镁底鳛槌跏贾?。
(2)計(jì)算殘差:通過(guò)計(jì)算預(yù)測(cè)值與實(shí)際標(biāo)簽之間的殘差,得到當(dāng)前模型的預(yù)測(cè)誤差。
(3)構(gòu)建弱學(xué)習(xí)器:使用弱學(xué)習(xí)器(通常是決策樹(shù))對(duì)預(yù)測(cè)誤差進(jìn)行建模,將其添加到模型中。
(4)更新模型:通過(guò)梯度下降法對(duì)模型的預(yù)測(cè)值進(jìn)行更新,從而減少預(yù)測(cè)誤差。
(5)迭代優(yōu)化:重復(fù)上述步驟,直到達(dá)到指定的迭代次數(shù)或者預(yù)定的停止條件。
(6)集成模型:最終將所有弱學(xué)習(xí)器集成,得到最終的XGBoost分類器。
實(shí)驗(yàn)設(shè)置如表1所示。本系統(tǒng)的所有實(shí)驗(yàn)和結(jié)果均在搭載Intel(R) Core(TM) i7-8700 CPU @3.20 GHz處理器、32 GB內(nèi)存的計(jì)算機(jī)上進(jìn)行。推薦系統(tǒng)采用了XGBoost機(jī)器學(xué)習(xí)算法。同時(shí),本系統(tǒng)所使用的庫(kù)和框架為Jupyter notebooks。在系統(tǒng)設(shè)計(jì)中,使用了WinPython-3.6.2作為編程語(yǔ)言。本研究中所使用的數(shù)據(jù)集來(lái)自某在線購(gòu)物商城的記錄,具體信息如表1所示。數(shù)據(jù)集總共包含10 000條記錄。每個(gè)用戶的最大點(diǎn)擊信息數(shù)為12次,最小點(diǎn)擊數(shù)為4次,因?yàn)樯儆?次點(diǎn)擊的信息無(wú)法提供足夠的推薦依據(jù)。本文將80%的數(shù)據(jù)作為訓(xùn)練集,20%的數(shù)據(jù)作為測(cè)試集。
表1 識(shí)別率和計(jì)算時(shí)間
為了剔除少于4次點(diǎn)擊的信息,本實(shí)驗(yàn)對(duì)驗(yàn)證系統(tǒng)的識(shí)別率和計(jì)算時(shí)間進(jìn)行了驗(yàn)證,表1展示了本系統(tǒng)10次實(shí)驗(yàn)的測(cè)試結(jié)果。最高的識(shí)別率達(dá)到了87%,而最短的計(jì)算時(shí)間為0.124 8 s。
經(jīng)過(guò)預(yù)測(cè)處理后,系統(tǒng)會(huì)推薦5個(gè)最接近預(yù)測(cè)商品的商品。表2展示了推薦結(jié)果。第一列顯示了預(yù)測(cè)的值,第二列顯示了文本值,第三列顯示了推薦的商品。通過(guò)將推薦的商品與用戶的點(diǎn)擊列表進(jìn)行對(duì)比,可以判斷推薦的商品是否出現(xiàn)在用戶的點(diǎn)擊列表中。為了在推薦系統(tǒng)中進(jìn)行處理,本文首先使用了標(biāo)簽編碼的過(guò)程,將收集到的數(shù)據(jù)進(jìn)行編碼,使其適用于推薦系統(tǒng)的使用。
表2 5個(gè)最近的推薦結(jié)果
在向用戶推薦項(xiàng)目后,為了進(jìn)一步處理標(biāo)簽編碼項(xiàng)目以轉(zhuǎn)換為真實(shí)的商品編號(hào)。表3顯示了將項(xiàng)目編號(hào)轉(zhuǎn)換為實(shí)際項(xiàng)目編號(hào)的結(jié)果。
表3 將推薦結(jié)果轉(zhuǎn)換為真實(shí)商品結(jié)果
推薦系統(tǒng)作為一種信息過(guò)濾和用戶興趣預(yù)測(cè)的平臺(tái),在現(xiàn)代電商平臺(tái)得到了廣泛應(yīng)用。然而,隨著電商平臺(tái)上商品種類的增多和用戶需求的多樣化,用戶面臨信息過(guò)載的問(wèn)題,難以快速找到符合個(gè)人興趣和需求的商品。為解決這一問(wèn)題,本文設(shè)計(jì)了一個(gè)基于XGBoost分類器的商品推薦系統(tǒng)。系統(tǒng)通過(guò)數(shù)據(jù)庫(kù)、XGBoost分類器、總體預(yù)測(cè)、預(yù)測(cè)和推薦、推薦商品5個(gè)部分的協(xié)調(diào)工作,實(shí)現(xiàn)了基于內(nèi)容的過(guò)濾推薦。經(jīng)過(guò)測(cè)試,實(shí)驗(yàn)結(jié)果表明該系統(tǒng)的識(shí)別率最高可達(dá)87%,計(jì)算時(shí)間最小為0.124 8秒。在商品推薦方面,系統(tǒng)通過(guò)預(yù)測(cè)過(guò)程后,推薦5個(gè)最接近預(yù)測(cè)商品的商品,并通過(guò)標(biāo)簽編碼的方式處理數(shù)據(jù),使其適用于推薦系統(tǒng)。通過(guò)與測(cè)試值的對(duì)比,可以判斷推薦的商品是否出現(xiàn)在用戶的點(diǎn)擊列表中,從而為用戶提供更為準(zhǔn)確的推薦。未來(lái)可以進(jìn)一步優(yōu)化系統(tǒng)性能,提高推薦準(zhǔn)確性和用戶體驗(yàn)。