王 輝 李昌剛
(浙江萬里學院 浙江 寧波 315100)
目前,隨著云計算與大數據技術的不斷發展,電子商務展現出井噴式的發展速度,這為企業帶來了龐大的消費者。同時,數據庫技術的發展使得企業能夠輕松地采集并存儲消費者在產生購買行為時的信息。得益于以上條件,越來越多的企業形成以“客戶”為核心驅動的營銷模式,通過識別現有或潛在客戶可能感興趣的新商品來改進產品以滿足客戶期望[1]。配合柔性供應鏈,這種營銷模式不僅能夠縮短商品的生命周期,擴大營業規模,同時也能針對不同類別的客戶采取不同的客戶管理模型以支持企業在市場的特定部分領先于競爭對手。因此,采取有效的辦法,從而快速、正確地識別不同客戶的購買偏好以及其所對應的商品特性,并將之歸納到不同的集群中,是客戶管理的重點。
為解決這些問題,研究以某服裝公司在亞馬遜平臺上的數據作為實驗對象。首先采用K-means算法與PCA分析與挖掘更多的數據,例如客戶的行為信息、描述商品的文本信息等,其中PCA將彌補K-means算法聚類結果不準確的缺點。數據分析的目的是為了形成更準確且更可解釋的客戶行為模式集群,分析人員可充分依據分類后的結果來了解顧客的消費模式,并制定相應的營銷策略。其次,本文還構建了客戶預測模型,模型在預測個人客戶的購買模式方面提供了更好的適應性和性能。管理人員可以更方便地使用預測分析結果進一步開展客群定位和溝通策略的工作。
商品特性表征和客戶偏好預測本質上是對客戶所產生的歷史數據進行挖掘,并分析出客戶的購買行為模式以及所對應的商品特性。因此,完成以上任務的關鍵在于選擇合適的數據挖掘方法,總體的研究可分為兩類:一是對文本數據的挖掘,通常是對商品的描述性文本以及對客戶的評論進行挖掘;二是對數值型數據進行挖掘,對數據庫中的海量數據進行聚類或者關聯分析。
對于文本數據挖掘而言,使用不同的數據挖掘方法旨在分析出客戶對各種商品特征的偏好[2]。文獻[3]基于客戶在購買商品后的評論中,通過層次關注機制增強了長期短期記憶網絡,該機制包括目標層次關注和句子層次關注。還回顧了用于文本數據挖掘的各種算法以及數據的預處理技術。近年來,文本數據挖掘還引入了深度學習方法。文獻[4]研究了基于客戶評論的情緒分析的深度學習方法的比較審查,發現了基于在線評論的意見挖掘來提取客戶偏好和商品屬性的各種方法。Lee[5]提出了一種有監督的機器學習方法,用于從在線評論中識別客戶偏好。Wang等[6]提出了一種系統的方法,用于從在線評論中提取商品屬性,并使用貝葉斯線性回歸開發客戶偏好模型。
由于客戶的評論或者采訪數據會存在較大的主觀偏差,這導致文本數據挖掘方法在實際應用中取得的性能低于在訓練數據上表現。因此在學術界更傾向于使用數值型數據來分析客戶行為,這些方法基于從過去的購買行為中提取客戶的潛在特征,其觀念是觀察到的行為是潛在隨機過程的結果[7]。這種客戶行為偏好預測的方法可以稱為特征方法,Jahromi等[8]根據過去的購買信息開發了一個模型,用于預測客戶是否在某個規定的未來時間范圍內進行購買。他們提出了客戶特征,例如,過去時間框架中觀察到的交易數量、上次交易的時間以及客戶總支出的相對變化,從而發現了一種自適應增強方法在測試數據上表現最佳,AUC值為0.92。雖然該模型在特定的數據集上去取得了較高的AUC,但不可否認的是,對于一般數據集或者一般預測任務而言,存在兩個可以改善的區域:一是特征的數量還可以繼續增加,二是預測的時間范圍還可以再縮短,因為在企業經營中較短的時間框架是有益的。此外,由于客戶偏好與設計或商品屬性之間的關系可能非常復雜和非線性[9],因此,迄今為止還沒有開發出能夠模擬復雜關系的理論模型。為了解決這個問題,已經采用了相當多的模糊方法,包括模糊推理方法[10]、基于模糊規則的系統、基于非線性規劃的模糊回歸[11]和模糊線性回歸等[12]。
對相關工作進行梳理后發現,針對商品特性表征和客戶偏好預測研究存在以下三方面問題:① 將文本挖掘與數據挖掘結合在一起的較少;② 特征的選取數目還可以進一步增加;③ 將商品特性表征與客戶偏好預測結合在一起的研究不多;④ 預測模型往往是單一模型,單一模型可能在特定的數據集上表現出良好的性能,但是實際應用中會由于缺乏泛化能力而導致過擬合。
K-means算法[13-15]是一種無監督算法,其機理是通過最小化每個點與其最近的聚類均值(質心)之間的平方距離之和,將N個數據點分組為k個聚類。該目標函數稱為平方和誤差(SSE)。
模型首先選擇k個隨機數據點作為初始質心集,然后通過兩個后續步驟進行改進。在賦值步驟中,每個點都放入最近的質心的簇中。在更新步驟中,每個群集的質心將重新計算為分配給群集的所有數據點的平均值。這兩個步驟一起構成了K-means的一次迭代來微調簇邊界和質心位置,同時可以人為設置迭代次數直到收斂(即沒有獲得進一步的改進)。
主成分分析(PCA)[16]是一種通用的降維和數據分析工具,主要用于模式識別、人工智能和數據挖掘等重要研究領域。PCA的本質是通過線性變換將高維空間中的數據樣本投影到低維空間,同時盡可能地保留原始數據特征。假設X=[x1,x2,…,xn]是輸入數據集,其中每列的維度為d。進一步,假設數據集中每個特征的平均值等于零(E(X)=0),正交變換A用于將X映射到新空間Y中,表示如下:
Y=AX
(1)
假設E(X)=0,則E(Y)=0且Y的協方差矩陣為:
RY=ARXAT
(2)
式中:RX是X的協方差矩陣。當A的行是RX的特征向量,則使用該變換;變換后,樣本在新空間中變得不相關。注意到,樣本在特征空間(映射)空間中是d維的,然而,PCA變換的目標是創建k Stacking集成學習方法[17]的原理是堆疊泛化,這是一種最小化一個或多個基礎分類器的泛化誤差的方案。通過將基分類器的預測結果作為元分類器的輸入來形成Stacking集成模型。當有多個基分類器時,可以將堆疊泛化視為更復雜的交叉驗證,利用比交叉驗證相比更復雜的策略結合各個基分類器,并使用元學習器來估計基分類器在特定數據集合上形成預測錯誤的可能性。一個簡單的兩層Stacking集成學習模型的流程如算法1所示。 算法1Stacking集成學習模型 Input:訓練集:S1={(x1,y1),(x2,y2),…,(xm,ym)} 保留集:Shold-out={(x1,y1),(x2,y2),…,(xl,yl)} 測試集:S2={(x1,y1),(x2,y2),…,(xm,ym)} 基分類器:ζ1,ζ2,…,ζL 元分類器:ζmeta Step1:fori=1,2,…,l doζifit(xi,yi)->生成l個基分類器 end Step2:fori=1,2,…,l doPi=ζi.predicthold-out(xi,yi)->生成l個保留集上的預測向量 doHi=ζi.predictS2->生成l個測試集上的預測向量 end Step3:P=((p1∪p2∪…∪pl),yi) H=(h1∪h2∪…∪hl) ζmetafitP Step4:ζmetapredictH Output:生成測試集上的預測值 由于Stacking模型使用基分類器在第一層產生的預測值作為第二層的輸入,這意味著基分類器與元學習器所使用的訓練數據必須不同,否則數據會被過渡學習,導致模型的過擬合。因此在分割原始數據集時,第一要保證每份數據都有訓練集和保留集,使用基分類器在保留集上的預測數據作為第二層的訓練數據;第二在分割時間序列數據時,要保持數據的同分布,不能簡單地以時間線來分割數據集。這些工作會讓模型有更好的性能提升和泛化能力。 表1 K個客戶交易信息的原始數據 根據數據描述,本文研究需要解決的問題如下: (1) 正確的商品特性表征與客戶群細分。由于本次研究的最終目的為預測客戶的購買偏好以及該偏好所對應的商品特性表征,因此,首先需要完成的是對商品特性的正確分類,在此基礎之上,結合原始數據產生有效的訓練數據,訓練數據需要囊括每一類客戶的消費習慣,并能夠標記該客戶的類別。隨之而帶來的問題是需要從表1中的數據中識別出客戶、商品、交易之間的關聯性,即需要在樣本空間中形成各類簇,每一簇代表不同的客戶群體并對其進行標簽,同時這些客戶群體要滿足充分代表總體樣本以及群體個數準確的條件。 整個實驗流程依次為:數據描述、數據處理、商品聚類、客戶聚類、客戶偏好預測。研究通過結合PCA、K-means和Stacking集成方法模型來解決3.1節中所提出的問題。實驗流程如圖1所示。 圖1 實驗流程 其中,PCA將被用于兩點: 1) 利用PCA能夠有效過濾掉不相關屬性的特點,將PCA應用于文本數據挖掘,在大量的描述詞中篩選出最重要的關鍵詞來協助商品聚類。 2) 由于K-means算法的初始質心數目需要人為指定,這會帶來不正確的聚類結果,利用PCA降低維數的特性幫助在應用K-means算法時為數據集定義合適的初始質心。 在執行完PCA分析之后,使用K-means完成數據集的聚類,研究將評估聚類結果并結合實際數據來解釋聚類結果。 此外,設計Stacking集成學習模型將用來解決問題2。這是由于聚類結果將以數據標簽的形式應用分類算法構建對數據集的監督分類。Stacking集成學習模型不僅保持對現有數據集的高精度預測,而且在新數據集上具有相同的良好性能。以下說明各個步驟的處理方法與結果。 1) 數據描述與處理。本次實驗數據來自某公司在亞馬遜平臺上的數據庫記錄信息。數據由541 909個樣本組成,其中,特征變量有8個,特征變量的字段與表示信息如表2所示。 表2 變量信息與示例 對于數據挖掘模型,良好的數據質量是提高模型性能的關鍵因素。缺失數據或者異常數據會讓數據的分布變得不規律,從而無法讓模型從數據中學習到更多的經驗以及讓模型無法獲得抗干擾能力。因此對原始數據進行清洗處理:刪除空值和刪除交易異常數據。清洗處理后的數據共有22 190行,8列。 2) 商品特性表征。在顧客的類別預測中,判斷顧客將會購買哪種種類的商品是預測的目的之一,也是管理者最關注的問題之一,預測結果將協助管理者對顧客指定更個性化的營銷策略與維護策略。然而,不可能將顧客與每一種商品一一對應,重要的是預測出顧客可能喜歡的某種類型的商品。通過定義一個商品集群,不僅能夠最大程度地給顧客提供可選擇的空間,也是降低了企業的銷售風險。另外,由于只對商品進行分類,因此數據不用包含所有商品,即使企業在未來有新商品推出,也可基于預測的類別標簽對顧客進行商品推薦。 在原始數據集中,涉及到商品的維度有“StockCode”與“Description”,應該對商品描述中的文本信息進行挖掘,從而形成若干個可描述的商品類別。為現實正確的商品類別分類,首先從Description變量中提取有用信息。在谷歌云平臺Colab中,定義信息抓取程序,程序將實現以下功能: (1) 提取商品描述中出現的名稱。 (2) 針對每個名稱,提取單詞的詞根并聚合與此特定根所關聯的名稱集合。 (3) 計算每個詞根在數據框架中出現的次數。 (4) 當超過某個閾值的單詞集同時擁有某個詞根時,程序判定與此詞根相關的最短詞匯為“關鍵詞”。 程序將返回四種信息,分別為:關鍵詞、關鍵詞與詞根形成的字典、關鍵詞的個數。接著在程序中導入Python提供的自然語言工具包NLTK來進行文本處理。返回的部分信息如表3所示。 表3 文本處理的部分結果 在將關鍵字數目從字典轉換為列表結構后,得到的列表包含1 400多個關鍵詞,其中最常見的出現在200多個商品中。值得注意的是,有些名稱是無用的,攜帶的信息不足。因此,考慮將無用關鍵詞從列表中刪除,只留下出現次數超過13的關鍵詞,數量為193。完成文本分析后,為了便于使用K-means算法將商品分類,將所有商品進行one-hot編碼,形成矩陣X。若商品i的描述中含有關鍵詞j,則ai,j=1,否則為0,如表4所示。 表4 編碼結果 由于只挑選了193個關鍵詞,所以矩陣X會存在大量的0元素,可能會導致分類的結果不平衡,因此引入價格區間使元素數量更加均衡。將所有商品的單價放入0~10、跨度為1的區間內,共形成6個區間,各區間的商品數量如表5所示。在矩陣中增加6列,表示商品的價格范圍,最終組成可作為K-means模型的輸入數據。 表5 商品價格區間及對應數量 實驗在初始階段設置K-means的聚類簇個數為3~10,在觀察不同數量的聚類簇個數下模型的silhouette得分后,發現當聚類簇個數超過5個時,有些聚類簇只包含很少的元素。因此,選擇將聚類簇數確定為5,并反復迭代,直到得到可能的最佳silhouette得分,在本次研究中,多次迭代后的最佳silhouette得分為0.145 5。為了評估分類的質量,計算不同聚類簇中每個元素的輪廓分數并將其可視化在圖2中。可以看到:雖然聚類簇2與聚類簇3的所包含的元素最多,但總體上各集群的元素數量比較平衡,另外,當具有5個聚類簇個數時,K-means模型的silhouette得分為0.145 5,很顯然各聚類簇的silhouette得分超過了0.145 5。因此當聚類簇個數的取值為5時,商品的分類是合理的。 圖2 不同聚類簇中的元素的輪廓得分 完成商品聚類后,可以查看每個聚類簇表示的對象類型。為了獲得各聚類簇內容的全局視圖可以生成形容每類商品的詞云,如圖3所示。可以發現,其中一個集群包含可以與禮物關聯的對象(關鍵字:圣誕節、包裝、卡片)。另一個聚類簇更多包含奢侈品和珠寶(關鍵詞:項鏈、手鐲、蕾絲和銀色)。通過此種方法將客戶所購買的商品特性進行表征,以此從客戶所購買的繁雜的商品類別中構建在客戶購買偏好與商品之間的聯系,當預測出客戶的購買偏好時,管理者可根據預測結果中商品所對應的類別進行產品推薦。 圖3 不同聚類簇中的關鍵詞 3) 客戶分類。將客戶分成各種類別是本次研究的重點,每一類都代表某個群體的共同偏好。各類中的客戶偏好信息包含:客戶所偏好的商品、價格段、購買數量和消費金額。這些信息將充分地幫助管理者進行客戶偏好的評估并制定相應的營銷策略。綜上考慮,研究將客戶分類任務分成三部分: (1) 第一部分整合數據。在3.1節中,已經將不同的商品分為五個聚類簇。為了準備剩下的分析,第一步是將此信息引入訂單信息的數據框架,訂單信息為客戶ID。為此,首先建立變量“購物金額”表示客戶在包括本次訂單在內,一共在平臺上所消費的金額。其次,加入“金額_n”表示客戶在不同商品類別中所消費的金額,目的是從側面反應各客戶的購買能力。為添加更多的信息來補充客戶類別信息,引入客戶購買的數量、購買金額的最大、最小和平均值,最后還定義了距離某次訂單產生時間的第一次購買以來的天數和自上次購買以來的天數。將這些信息整合,形成如表6的數據框架。 表6 整理后的客戶信息 (2) 第二部分是分割數據集,表6包含為期12個月的信息。然而本次研究的目標之一是開發一個模型,該模型能夠描述和預測客戶在第一次訪問站點后的購買習慣。為了能夠模擬真實的情形,將數據集進行了分割,前10個月的信息作為訓練集,后兩個月的信息作為測試集。 (3) 第三部分可分為兩小部分,首先為數據編碼部分,由于訂單號對客戶分類并沒有影響,將此信息刪除,并將剩余數據做標準化處理。目的是為了讓數據不受量綱的影響。其次是客戶分類部分,在分類之前,使用PCA對輸入數據進行降維處理,目的為了幫助選擇K-means的聚類簇個數數量,同時也能夠驗證不同簇的聚類質量。圖4顯示了執行PCA的分析結果,包括主成分與其解釋方差。可以觀察到,當主成分超過6時,可解釋近全部的方差。因此在選擇K-means聚類簇個數時,結合管理經驗,在7-15區間選擇整數聚類簇個數。經觀察,發現當聚類簇個數為11時,模型取得了最高的silhouette得分:0.213。由于不同聚類簇的規模存在著一定的差異。因此使用PCA的結果來理解這些集群內容,以便驗證這種分類結果。 圖4 PCA分析結果 實驗將各聚類簇的結果顯示在6個主成分上,如圖5所示。可以看出,第一個主成分允許將最小的集群與其他聚類簇分開。更一般地說,可以到觀察到總是存在一種表示,其中兩個聚類簇看起來是不同的。另外,圖6顯示了不同聚類簇中元素的silhouette得分。各聚類簇的分數均超過了0.2。因此確定將客戶分為11類。 圖5 不同客戶聚類簇在主成分上的分布 圖6 不同客戶聚類簇的silhouette得分 完成客戶分類后,重要的是得到每個客戶群體的消費偏好。為此,首先在表7加入“客戶群體”列,表示各客戶屬于哪一群體,形成新的數據框架。其次,通過選擇不同的客戶群體來平均數據框架中的內容并加入每個群體的客戶數量,形成全局數據框架,如表7所示。并將其可視化,如圖7所示。可以看到全局視圖表達出了各個群體的消費習慣,例如,可以看出,前5個群體對應于某一特定商品類別的購買占很大的優勢。其他組別會與顧客總消費額或總瀏覽次數有所不同。管理者基于此信息可以正確制定客戶管理方案以及營銷方案。 圖7 不同客戶聚類簇的消費偏好的全局視圖 表7 不同客戶群體的消費習慣 (4) 客戶偏好預測。首先通過在表6中加入每個客戶的分類結果來構建用于分類算法建模的訓練集和測試集,其次,定義模型使用網格搜索與交叉驗證來為每個模型選擇超參數。在此次研究中,選擇使用了支持向量機、邏輯回歸、K近鄰算法、決策樹、隨機森林和Gradient Boosting模型作為基分類器。在使用Stacking集成學習模型之前,需要評估每個模型的差異性。因此選擇觀察各基學習器在不同訓練樣本上的學習曲線來考察各分類模型的性能。圖8顯示了在訓練集上使用交叉驗證方法后,各模型在訓練集上與驗證集上的精度。 圖8 單一模型在訓練集與驗證集上的精度對比 從圖8可以看到各模型的性能之間存在明顯差別,交叉驗證中表現最好的為隨機森林模型,其取得了90.03%的準確率。然而基于樹模型的決策樹、隨機森林、Gradient模型有過擬合的風險。雖然支持向量機、邏輯回歸、K近鄰模型在交叉驗證中形成了典型的低方差建模。綜上,將以上6種算法作為基分類器,并選擇XGBoost作為Stacking集成學習模型的元分類器,搭建集成學習框架如圖9所示。 圖9 Stacking集成學習框架 在完成Stacking集成學習的框架搭建后,使用表1所述的算法在已經分好的數據集中完成模型的訓練,并產生最終結果。為了體現Stacking模型的泛化能力,實驗還設計了普通的組合模型,將其所取得的精度與Stacking模型的作對比。實驗使用Precision來衡量模型的精度,其計算式如式(3)所示。其中:TP為真實值與預測值相同的個數,FP為預測錯誤個數。表8為各模型在測試集上的預測精度對比。 (3) 表8 各類模型的Precision值(%) 從表8看出,Stacking集成學習模型相對單一模型精度最高提升了14百分點,雖然組合模型一定程度上提升了預測的精準性,但相比單一模型的最高精度,其只提升了1百分點。而Stacking集成學習相對提升了7百分點。當顧客數量龐大時,性能提升帶來的價值較為客觀。這也證明了Stacking模型在客戶偏好類別預測中的有效性。 本次研究旨在通過數據挖掘的方式從購買數據中預測出客戶的消費偏好以及與該偏好對應的商品特性,并能夠在新用戶在第一次產生交易記錄時預測出其所屬類別。跟其他文獻研究不一樣的是,本文不僅對數值型數據進行了分析與挖掘,而且還對文本數據進行挖掘。本文提出使用了Stacking集成學習方法來預測客戶所屬類別。實證結果表明,結合K-means與PCA基于購買數據正確地生成了5類商品聚類簇與11類客戶聚類簇;相比于單一模型,Stacking集成學習方法在測試集上取得了更高的預測精度,以81.37%的準確率預測出了客戶的偏好類別,能夠對管理者在客戶管理與營銷計劃制定內容上提供決策支持。然而本次研究需要分析人員具有較高的建模能力,而且模型未能部署在運營系統中。未來還將繼續研究可部署在企業運營信息系統中的自動數據挖掘方法,其勢必能夠幫助企業在大數據時代取得比競爭對手更大的市場。2.3 Stacking集成學習方法
3 問題描述及實驗方案
3.1 問題描述



3.2 實驗流程
















4 結 語