吳文李 范小朋 周庚申 黃 羿 曹 旸 林桂嬋
1.中國長城科技集團股份有限公司,深圳,5180002.中國科學院深圳先進技術研究院,深圳,518000
在互聯網上,一個新產品從概念到成品的過程中,必然從周邊獲取大量的信息以支撐其具體的設計,而且獲取信息的耗時越短就越有機會跑贏市場、獲得商機。這一原則在工業(yè)制造領域內仍然成立。有研究表明,制造系統內部物品檢索所花費的時長占據產品設計周期的一半[1],但在現有條件下,產品研發(fā)廠商都不得不忍受這一過程。同時,隨著工業(yè)4.0的推進,系統集成度越來越高,數據呈現出爆炸性增長,物品信息檢索耗時過長與盡可能縮短產品設計時長之間的矛盾更加突出。由此,面向制造業(yè)物品檢索的推薦系統[1-4]應運而生。
目前,大部分產品在設計階段使用的信息系統內部用于定義知識主題(分類)的基礎均來源于物料清單(bill of materials,BOM)[1]?;诖耍扑]系統的實現方式包含四類:基于協同過濾推薦[2,5],基于內容推薦[6],基于知識推薦[3-4],基于組合推薦[1]。基于協同過濾推薦假設如果用戶行為相似,那么他們興趣也相仿。在推薦過程中,用戶個人興趣扮演著最重要的角色,這與“物品為主,人員為輔”的生產系統存在一定的沖突,僅僅考慮用戶行為容易忽略物品本身所包含的關聯信息,同時,它無法解決冷啟動[7-9]問題。基于內容推薦的系統僅僅衡量物品與物品之間的相似度,割裂了物品與用戶之間的關聯。基于知識推薦的方法從理論上更偏智能化。文獻[3-4]利用本體知識完成了舊產品到新產品的推演。但是,本體集對于整個制造行業(yè)來說是個很大的數據集,需要經過大量專家共同構建,而目前制造行業(yè)中大量的定制化需求致使其品種繁多,難以形成通用的本體集。因此,組合推薦經常作為一種取長補短的折中方案。然而,現有組合推薦模型[1]僅以公式的形式描繪了推薦的關鍵步驟,并非從實踐系統的角度出發(fā),在不考慮推薦項具體形態(tài)的情況下還忽略了推薦系統冷啟動等問題,不能直接應用于工業(yè)信息系統。
針對此,本文遵循以物品為主、用戶為輔的原則,考慮推薦物品具體形態(tài)(生產制造基礎信息BOM),在提出“物品-用戶”組合推薦模型的基礎上,以系統套件的方式實現了包括零部件、半成品、產品等多個維度的推薦系統。
(1)零部件tm。零部件是生產所需的原材料,是構成任意產品的最小單元,通常由工廠購買而來。
(2)半成品th。半成品由n個零部件和m個半成品組成(某一半成品可由多個半成品組成)(n>0,m≥0,且n、m為自然數),由工廠通過購買或生產而來,但不是賣給客戶的產品。
(3)成品tp。成品是由工廠生產且賣給客戶的最終產品,與th類似,是一個包含n個tm和m個th元素的集合。
(4)BOM。BOM是生產所使用的物料清單,其中,每個BOM對應一個tp或th。BOM的每一行表示一個物料,即th或tm。當th對應的BOM包含在tp的BOM中時,稱之為該成品BOM的子BOM。因此,BOM的文本清單中隱含成品、半成品和零件之間的包含關系。例如,假設產品A由半成品B和C組成,B由半成品D和諸多零部件組成,半成品C和D中只包含零部件,那么產品A對應的BOM如表1所示,表1包含子BOM表2、表3和表4,表2包含子BOM表4。
(5)BOM詞w。BOM詞是BOM中任意一個以空格作為分詞標志的詞,不一定是自然語言中的單詞,但刻畫了BOM所包含的特征。比如,表1“描述”列的第一行“主板機插組件OCZ-ZT550W-2 REV:001 A T26”包含“主板機插組件”、“OCZ-ZT550W-2”、“REV:001”、“A”、“T26”5個BOM詞。若用“|*|”表示基數,有tm={w1,w2,…,w|tm|},th={w1,w2,…,w|th|},tm={w1,w2,…,w|tp|}。
(6)BOM樹。用樹葉子節(jié)點N表示BOM中為tm的行,中間節(jié)點N表示BOM中為th的行,無向邊E表示BOM和子BOM的直接關聯,那么BOM是一棵由節(jié)點N和邊E組成的無序樹BT={N,E}。譬如,表1對應的BOM樹如圖1所示。若將樹用相鄰矩陣進行存儲,那么表5是產品A的矩陣表示。
(7)候選集。候選集T={t1,t2,…,t|t|},是推薦系統中推薦候選項的集合。t是tm、th和tp的統稱。
(8)候選項向量。候選項向量表示為V,Vt=(f(w1),f(w2),…,f(w|w|))是t= {w1,w2,…,w|t|}通過函數y=f(x)變換后形成的向量。
(9)物品類別(主題)。物品類別表示為C,C={c1,c2,…,c|C|},在封閉系統中C是一個有限的集合,|C|為該集合的基數。
(10)用戶集。用戶集表示為U,U={u1,u2,…,u|U|},其中,ui(i=1,2,…,|U|)表示單個用戶,|U|為用戶集的基數。
(11)發(fā)生概率(得分)。發(fā)生概率表示為R,并以下標區(qū)分不同事件的發(fā)生概率。
(12)用戶標簽集。用戶標簽集表示為L,L={l1,l2,…,l|L|}。|L|為該集合的基數,li(i=1,2,…,|L|)為單個用戶的某一特征標簽。

表1 產品A的BOMTab.1 The BOM of product A
說明:標簽列僅為了方便標注樹節(jié)點而添加標簽,不屬于BOM的內容。標簽標注規(guī)則見文獻[10]。

表2 半成品B的BOMTab.2 The BOM of semifinished product B

表3 半成品C的BOMTab.3 The BOM of semifinished produet C

表4 半成品D的BOMTab.4 The BOM of semifinished product D

圖1 產品A的BOM樹Fig.1 BOM tree of product A

表5 產品A的相鄰矩陣Tab.5 The adjacent matrix of product A
(13)興趣標簽。興趣標簽表示為L(u),是用戶u標簽集L中滿足一定條件的子集。
(14)問題定義。給定物品候選集T和用戶標簽集L,如果用戶滿意程度為s(臨界值為α),目標函數為s=f(L,T),假設當目標函數值s不小于臨界值α時滿足用戶需求,那么本文的問題是求解ST={ti∈T∶s=f(L,T)∩s≥α},返回用戶的推薦集合ST。
首先針對推薦內容維度,提出根據內容相似和結構相似來定義物品的距離并以此為基礎劃分其類別(主題) 。然后對另一個用戶標簽維度定義計算用戶近似度的公式,并給出量化用戶興趣的方法。最后,在不忽略系統冷啟動問題的基礎上,介紹本文所使用的推薦算法。
2.1.1基于內容相似的距離
假設空間中有2個分別包含n維詞匯信息的候選項向量V1(xw11,xw12, …,xw1n)和V2(xw21,xw22,…,xw2n),那么引入向量空間余弦相似度[11]后,它們的相似距離被定義為
(1)
其中,dc的取值范圍為[-1,1],dc取值越大,表示V1和V2相似度越高。xwi為wi經過函數f(wi)變換后的數值。由于tm所包含的w數量不多且結構單一,而th和tp包含數目過多的w且結構復雜,因此,本節(jié)針對兩種情況分別定義相應的f(w)函數。
(1)零部件內容文本向量化。零部件內容近似采用了詞頻向量法。詞頻向量法把BOM詞出現的頻率作為表征一句話或者一段文本的主要信息,并針對重要的詞語進行頻數統計,形成數學向量,從而實現文本到數學符號的轉換,即
ftm(w)=q(wi;tm)
(2)
式中,q(wi;tm)表示BOM詞wi在tm={w1,w2,…,w|w|}中的發(fā)生頻率。
例如,表1中的零部件tmJ和零部件tmK,通過詞頻變換后的向量如表6所示,分別為VtJ=(1,1,1,1,1,0,0,0,0)和VtK=(1,0,0,0,0,1,1,1,1)。

表6 詞頻轉化為向量Tab.6 From word frequency to vector
(2)半成品與成品內容文本向量化。此處采用了“詞頻-逆向文件頻率”法即BOM詞頻-逆向文件頻率法[12],公式如下:
fth|tp(w)=TFIDF(w,dBOM,D)=
TF(w,dBOM)·IDF(w,D)
(3)
(4)
式中,TF(w,dBOM)為BOM詞w在文檔dBOM中的出現次數;IDF(w,D)表示詞w在物料清單語料庫中的獨特性;DF(w)為包含了詞匯w的物料清單數;|D|為語料庫中的文檔總數。
2.1.2基于結構相似的距離
本節(jié)將計算半成品與成品BOM樹之間的近似程度轉換成計算樹相鄰矩陣之間的相似距離。其中,根據文獻[4]中的正交普氏分析過程,兩個相鄰矩陣MX和MY的相似距離被定義為
(5)
ds的取值范圍為[0,1]。當且僅當ds取值為1時,MY與MX相同或者其中一個矩陣是另一個矩陣的真子集。trace{A}表示矩陣A的對角線元素之和,矩陣P來自于MX和MY的正交普氏分析的結果。其中,對于正交普氏分析而言,MX為基準矩陣,MY為用于匹配的矩陣,P為自轉正交矩陣[13]。
2.1.3基于集成相似的距離
集成模型在統計、計算和表示上都比單一模型更有優(yōu)勢[14],因此,本文在計算tp、th之間的相似距離時,集成了BOM結構相似距離和內容相似距離的辦法。具體定義為:給定某兩個tp(th)的結構相似距離ds和內容相似距離dc,集成模型的距離計算公式為
dens=weq1ds+weq2dc
(6)
weq1=weq2=1/2
如文獻[11]所述,等權重集成雖然較為簡單,但簡單的方案可能在實際應用中效果很好。尤其是在面對依賴權重估計來做預測的模型時,等權重的辦法往往能避免模型性能的不穩(wěn)定及估計錯誤帶來的風險。
2.1.4基于相似距離分類
物品的主題或分類是推薦系統的重要依據?;谇拔膶嚯x的定義,本節(jié)實現了機器學習領域中的K-Means聚類算法[12]。它將3個模型所提供的距離作為K-Means的輸入,每個物品都是K-Means的“點”,近似值是“點”與“點”之間的距離。當算法1的輸入參數dDF為tm時,距離為式(1)的輸出。同理,當輸入參數為tp或th時,距離來自式(6)。算法1的復雜度為O(n)。
算法 1 frm-ModelCapability (distDF,k)
輸入:近似集dDF,可能存在的類別數k
輸出:K種分類
開始
1.for alld∈dDFdo∥d是dDF中的列
2. 初始化常數k
3. 隨機選取初始點為質心
4. while質心不再改變 do
5. 以d作為距離,掃描樣本與每個
質心之間的數值,將樣本歸類到
最相似的類中
6. 重新計算質心
7. end while
8.end for all
9.ReturnK種分類 ∥Score中包含模型的F1 Recall和Precision值
2.2.1用戶興趣量化
本節(jié)采用標簽來量化用戶的興趣,即以一種主動學習的方式為用戶打上相應的標簽,并形成針對每個用戶的興趣標簽描述矩陣(向量)。假設用戶u包含的標簽集合為L,那么u的興趣量化函數L(u)的定義為
L(u)={l∈L∶LP(u,l)≥θ}
(7)
其中,LP(u,l)表示標簽l相對用戶u的正樣本發(fā)生概率,θ為一個臨界值,可以判別標簽l是否達到用戶u的興趣水平。因此,如果假設發(fā)生概率過低的標簽均為興趣集的噪聲,θ的實際作用是去噪。例如某一標簽li在用戶ui的眾多標簽集中的發(fā)生概率僅為0.000 1,遠低于平均發(fā)生概率,那么它很可能是用戶偶然的點擊,尚未形成“興趣”。
這里包含兩個需要解決的問題,一是用戶標簽的來源,二是如何準確判別該標簽是否屬于當前用戶興趣范圍。解決問題的數據基礎是用戶的瀏覽歷史記錄和用戶自身屬性,如年齡、性別、所屬工廠等。
(1)類別和主題標簽。用戶的類別或主題標簽主要來源于搜索內容的類別(主題)劃分。2.1.4節(jié)對物品的歸類是本節(jié)類別標簽的來源。假設用戶u的瀏覽內容中包含物品分類集C={c1,c2,…,cn},并用下標區(qū)分不同用戶的標簽集,那么其對應的標簽為Lu? {lc1,lc2,…,lcn},興趣標簽的判斷條件為LP(u,lci)≥θ。
(2)關鍵字標簽。當用戶u標簽集中大部分LP(u,lci)<θ且lci∈Lu,那么僅按照瀏覽主題和標簽標注用戶的策略基本失效。為彌補此不足,本文中引入關鍵字標簽。這里的關鍵字全樣本集來源于BOM中的w,興趣標簽的判斷條件為LP(u,lwi)≥θ,關鍵字全樣本集的獲取如算法2所示。
算法 2 frm-KeyWrd(Boms)
輸入:BOM文本集
輸出:返回得分位于0.652 6之上的集合
開始
1. for allBom∈Bomsdo∥d是dDF中的列
2.Bom→{w1,w2,…,wn}
3. for allwrd∈{w1,w2,…,wn}Bomsdo
4.Scoring.add(TFIDF(w))
5. end for
6.end for all
7.Returntop-65.26%w∥返回65.26%的關鍵字集合
算法2采用了遞向詞頻法TFIDF。首先對過去兩年的BOM文本做預處理,預處理步驟包含分詞切割和計算TFIDF得分。在假設TFIDF得分服從正態(tài)分布的基礎上,將正態(tài)分布在σ內的w視為關鍵字樣本集。TFIDF法主要對文本進行處理,速度較快,算法的復雜度為O(n)。
(3)物品來源標簽。物品的來源標簽包含三種ltm、ltp、lth(零部件、成品和半成品)。該標簽的計算和統計方法與類別標簽相似。
(4)身份特征標簽。物料采購員、電路設計工程師、產品工程師等因個人偏好、身份特征、年齡等諸多因素導致其對信息的需求均不相同,因此,本文引入身份特征這一標簽,主要包含用戶個人的崗位ltitle、所屬工廠lfactory、年齡lage、性別lgen。同時,為將這些特征標簽融入興趣量化的公式中,我們在計算這些標簽是否滿足LP(u,l)≥θ條件時將LP(u,l)設定為1。
2.2.2用戶相似定義
協同推薦的基本假設為具有相同興趣的用戶具有相似的信息檢索需求,因此,度量兩個用戶的相似程度是開展推薦任務的基礎。假設用戶集里包含3個用戶u1、u2和u3,已知u1和u2的共同興趣標簽有8個,用戶u1和u3的共同興趣標簽數是2,那么u1和u2的近似程度要高于u1和u3的近似程度。基于此,本文度量用戶相似度的公式定義如下:
(8)
其中,L(ux)指的是用戶ux的標簽集,L(ux)∩L(uy)是所有用戶ux和uy的興趣標簽交集,L(ux)的計算方法見式(7)。
2.2.3用戶鄰域計算
用戶的鄰域計算是協同推薦的關鍵步驟,其中,鄰域用戶數的實現方式有靜態(tài)和動態(tài)之分。靜態(tài)辦法就是對所有當前用戶均選擇k個最近似的用戶作為其鄰域,而動態(tài)指的是利用臨界值來動態(tài)獲取近似度超過臨界值的鄰域。本文在系統實現中采用了預處理的靜態(tài)辦法,依據式(8),返回數據庫中與當前用戶最相似的k個用戶,具體如算法3所示。
算法 3 K-NearestUsers(ui,users)
輸入:當前用戶ui, 包含近似關系的用戶集users∥users之間的近似關系由預處理完成
輸出:top-k個最近的u集合
開始
1.userSet=users.containUi(ui)∥獲取與ui有du關系的所有用戶
2.userSet.sortByDu() ∥按du大小排序
3.ReturngetTopk(userSert)∥返回top-k個鄰域用戶
算法3包含了一個預處理的集合users,即預處理部分將用戶的近似關系持久化于數據庫中,僅在用戶有了新的標簽才對其作更新操作。
2.3.1基于內容推薦(CB)
本節(jié)在2.1節(jié)的基礎上為用戶提供基于內容近似的物品推薦。假設Ci是用戶ux瀏覽物品ti(i=m、h、p)的類別,T(Ci)函數表示獲取類別Ci的t集合,∧表示條件與,Tux為用戶ux的推薦候選集合,那么內容推薦則是從候選集Tux={t1,t2,…,t|t||ti∈T(Ci)∧Ci∈{C1,C2,C3,…,Cn}}中決策出top-kCB個與ti同分類且dens1距離最短的推薦項列表,如算法4所示。
算法 4 CB-RecommendationItems(ti,C,dens1)
輸入:物品類別矩陣C和ti距離列表dens1
輸出:top-kCB個最近的ti集合
開始
1.Ci=getC(ti) ∥獲取ti的類別
2.Tux=getItems(Ci)∥滿足{t1,t2,…,tn|ti∈T(Ci)∧Ci∈{C1,C2,C3,…,Cn}}
3.CBSets=TuxjoingetItemsWithDistance(dens1)∥為候選集添加距離屬性
4.ReturnSCB= {ti∈CBSets:0<=i 算法4與第1節(jié)中的推薦結果ST={ti∈T:s=f(L,T)∩s≥α}在形式上不是一一對應的。這里,我們將標簽L和類別C等同,那么目標函數為s=f(C,T),而目標達成的判斷依據s≥α在算法4中被轉換成三個條件:①返回的結果集的元素數量為top-kCB;②屬于Ci分類;③離ti的距離是top-kCB最短。 2.3.2協同過濾推薦(CF) 假設T(L(uy))函數表示用戶uy興趣標簽集所包含的物品集合,uy∈{u1,u2,…,uk}為ux的top-kCF個相似用戶,那么ux的推薦候選集為Tux={t1,t2,…,t|t||ti∈{T(L(u1)) ∪T(L(u2))∪…∪T(L(uy))∪…∪T(L(uk))}}。本節(jié)的任務是從候選集Tux中決策出top-kCF個當前用戶最感興趣的物品列表。為此,本節(jié)引入Resnick’s算法的評分公式[15]: (9) 算法5 CF-RecommendationItems(u,Tux) 輸入:用戶近似度矩陣u和物品列表矩陣Tux 輸出:top-kCF個評分最高的ti集合 開始 1.for alluy∈udo 2. 初始化常數kCF 4.end for all 5.ReturnSCF= {t1,t2,t3,…,tkCF} ∥返回top-kCF最高分的t集合 算法5對于問題定義ST={ti∈T:s=f(L,T)∩s≥α}而言,目標函數為s=f(L,T),條件s≥α的解釋為:①返回結果集的元素數量為top-kCF;②物品ti得分滿足式(9);③屬于top-kCF最高分的t集合。 2.3.3組合推薦 協同推薦基本上解決了基于內容推薦的品種單一問題,并易獲得較好的推薦質量,但正如前文所說,它無法解決系統的冷啟動或用戶信息量過少時的推薦問題[16],因此,本節(jié)以協同推薦為基礎,結合2.3.1節(jié)內容,定義組合推薦的公式如下: (10) 其中,當且僅當當前用戶有瀏覽歷史記錄但與其他用戶的標簽交集只有身份屬性時,采用基于內容推薦(content based,CB)即根據現有用戶的興趣標簽推薦同類型的物品。相反,如果當前用戶有瀏覽歷史記錄并與其他用戶有除身份標簽以外的共同興趣標簽時,采用2.3.2節(jié)的協同推薦方法。但是,如果用戶沒有物品瀏覽記錄,本文引入產品的停留時間作為生命力因子,區(qū)別對待在tm、th和tp的基礎上修訂并集成的頻繁集挖掘算法[17],為用戶推薦當前被頻繁使用的物品集合。 (1)成品的頻繁集合。由第1節(jié)的實體描述中可見,成品tp是一棵BOM樹。本節(jié)在提取tp頻繁集的時候,將其看成獨立的個體(每個BOM就是一個獨立的頻繁項)并以點擊率作為頻次的度量。因此,BOM集和頻度q如表7所示。 表7 BOM的頻度Tab.7 The click frequency of BOM 對頻次的頻率化處理公式如下: (11) RBOM,i表示頻繁集中第i個BOM的得分。推薦集FRE(BOM)={BOMi|BOMi∈{BOM1,BOM2,…,BOMn}}的獲取必須滿足3個條件:①屬于最近一段時間被點擊的物品集;②BOMi的停留時間不低于超參數κ;③RBOM,i得分不低于0.3。 (2)零部件和半成品的頻繁集。tm和th分別為BOM樹的葉子節(jié)點和子樹,因此,本節(jié)引入文獻[17]的辦法,對任意一個包含子節(jié)點Nc的父節(jié)點Np進行頻度計算,公式如下: qBTNp= (12) (13) 其中,B為BOM樹,h(B,N)表示節(jié)點N在樹中的高度,Q為樹節(jié)點中的零部件個數。式(13)是對頻次的頻率化處理。BNi表示以Ni為根節(jié)點的子樹,RBTNi,i表示數據庫中第i個子樹的得分,那么推薦集為SFRE(B) ={Ni|Ni∈{N1,N2,…,Nn}}。 實驗設置的第一個參數是實驗環(huán)境。實驗運行在64bit的Ubuntu上。該系統擁有一個2.4GHz第三代英特爾酷睿四核CPU、16GB的RAM內存、一個64GB SSD固態(tài)硬盤和一塊750GB硬盤。 實驗設置的第二個參數是實驗數據。本節(jié)實驗所用數據來自于真實的生產環(huán)境,約包含1154份BOM,350 000個物品的數據集。實驗所用數據集均從這份數據抽樣形成。 實驗設置的第三個參數是實驗對象。前三組實驗對象基本一致,分別是原始的信息搜索系統InfoSystem和本文的系統RecoSystem。第四組實驗分為三個部分,第一部分測試對象是系統參數k和θ,第二部分測試對象是結構近似度量Struct、內容近似度量Content和本文度量辦法Reco,第三部分是基于內容推薦(CB)、協同過濾推薦(CF)和本文的組合推薦模型RecoModel。其中,RecoSystem是本文推薦系統的實現,InfoSystem表示集成推薦系統前的生產信息系統,RecoModel是推薦引擎。RecoSystem和RecoModel屬于自主開發(fā),InfoSystem是商用系統。三者的關系為RecoSystem包含RecoModel,RecoSystem將集成到InfoSystem中去。 實驗設置的第四個參數是評價指標。第三組實驗的評價指標是響應時間,第二、第四組的評價指標是平均絕對誤差(mean absolute error,MAE)。假設R表示推薦項的得分集,|R|為推薦集大小,Rij表示元素Rij的真實得分,PRij為推薦系統的預測得分,MAE的計算公式如下: (14) 本文推薦系統RecoSystem涵蓋物料近似搜索、我的關注及能解決冷啟動問題的熱門產品推薦功能。InfoSystem主要查詢功能是物料的精確查詢,InfoSystem要求使用者精確記住每種物料的所有具體參數,當數據量逐步增大時,在InfoSystem中進行搜索將成為一種挑戰(zhàn)。同時,InfoSystem無法解決工廠業(yè)務上的需求,如拋開市場品牌標簽后查找近似零部件或用料非常接近的半成品和成品。然而,這些問題都將在推薦系統中得到解決,在RecoSystem中,用戶可通過關注收藏操作自定義個人興趣,由推薦系統綜合考慮用戶主被動兩種情況進行相應的推薦,用戶只需被動接收滿足需求的信息,另外,用戶亦可主動發(fā)起對物品近似搜索,所以既能夠提升信息獲取的效率,又能夠解決手工進行近似匹配的麻煩,因此,RecoSystem是現有信息系統的重要補充。 分別在不同的數據集上測試統計推薦引擎RecoModel推薦結果的MAE,測試結果如圖2所示。由圖2可見,本文推薦系統的MAE在隨機形成的數據集上基本恒定在85%的水平。一方面,由經驗可判斷85%的滿意程度屬于推薦系統中較好的水準,另一方面系統的MAE隨數據集的不同而呈現較為平穩(wěn)的波動,符合預期。 分別在不同的數據集上測試系統搜索功能集成前后推薦模型的響應時間,測試結果如圖3所示。圖3顯示RecoSystem與InfoSysttem的響應時間較為接近,并不因為多集成了推薦模型帶來多余的系統開銷。本文在InfoSystem的基礎上集成推薦模型時,推薦模型所使用的數據如推薦項距離、主題分類、部分標簽等通過系統預處理任務來完成,不占用系統響應開銷。同時,部分需要實時計算部分如用戶標簽、興趣標簽、鄰域等每次只更新變動過的部分。假設這部分的計算與搜索同時并發(fā)執(zhí)行,那么RecoSystem的響應時間為max{執(zhí)行時間, InfoSystem的響應時間},在推薦模型線上開銷盡可能小的前提下,InfoSystem并不因為多集成一個模型而使系統響應驟然變慢。 模型性能測試包含四個實驗,前三個實驗分別測試參數k、θ和相似距離定義策略的變化對系統性能的影響,最后一個實驗是本文與現有流行推薦系統的對比實驗。所有實驗結果均來自于多次(超過5次)執(zhí)行后的平均值。 (1)用戶鄰域數k取值對系統性能的影響。抽出式(10)中的協同推薦部分單獨測試用戶鄰域大小對其性能的影響。圖4測試結果顯示,當k=1時模型的性能最好,k取值從1~4的過程中模型MAE的波動不大,但k=4是模型的MAE從90%以上下降到83%的臨界點。考慮到不給k取過小的值,本文系統的用戶鄰域k取值為4。 圖4 鄰域數k取值的影響Fig.4 The effect of the neighborhood number k (2)θ取值對系統性能的影響。θ是本文用來判別當前標簽是否能成為用戶興趣標簽的依據。圖5的測試數據是包含35萬個物品記錄的數據集。測試結果顯示,θ以0.1的步長不斷遞增,模型MAE值隨其增大,當θ取到0.4時,模型MAE值達到峰值,因此,本文系統的超參數θ取0.4。 圖5 θ對系統性能影響Fig.5 The effect of θ on system performance (3)距離定義方法對系統性能的影響。Reco是Struct、Content和Ens(集成模型)的綜合,對tm采用Content辦法,對th和tp采用Ens方法。圖6的測試結果顯示,系統采用Reco時性能最好,隨著數據量增大,MAE波動平穩(wěn)。Struct和Content結果較為接近,Content的效果略優(yōu),尤其是在數據集全為tm時(數據集為50 000),Content優(yōu)勢凸顯,因為50 000數據集的物品全為tm,tm的結構是一個葉子節(jié)點,沒辦法通過結構度量tm與tm之間的相似程度,此時,系統處于隨機狀態(tài)。 圖6 距離度量方法對系統性能影響Fig.6 The effect of distance measure method on system performance (4)推薦系統性能對比實驗。圖7的實驗結果顯示,本文模型RecoModel較純CB模型有約10%的MAE優(yōu)勢,同時,在數據量小于70 000前純CF模型的MAE高于RecoModel的MAE,但當數據量大于70 000后,CF模型的MAE小于RecoModel的MAE并迅速下降。在穩(wěn)定性方面,RecoModel的MAE基本在83%~85%之間變化,且波動率不大,較純CB模型和純CF模型更穩(wěn)定。 圖7 推薦算法對比實驗Fig.7 The comparison experiment on Recommended algorithms 本文遵循以物品為主、用戶為輔的原則,在考慮推薦物品具體形態(tài)的基礎上,針對生產制造基礎信息BOM,實現可集成到現有生產制造系統的推薦系統。系統涵蓋三個模塊:用戶主動定制自身偏好模塊、推薦引擎、包含數據存儲和處理部分的用戶興趣挖掘模塊。自下而上看,系統在數據存儲和處理時,全面分析BOM中物品、半成品、成品等所包含的特征,提出基于內容相似、BOM結構相似及兩者集成的相似距離定義辦法,根據物品特征選擇合適的相似距離定義公式,并以距離為基準劃分物品的主題或分類。同時,基于用戶瀏覽產生的歷史記錄或用戶自行定義的自身偏好量化用戶興趣、定義用戶近似公式。最后由推薦引擎結合物品與用戶,實現包括基于內容推薦和基于協同過濾在內的組合推薦,決策出用戶所需的推薦列表。處理冷啟動時,引入頻繁集搜索算法,并結合生命周期的概念,在篩除過時集的基礎上再形成頻繁集合以提高推薦命中率。實驗表明,本文推薦模型能為用戶提供有效的近似搜索功能,是現有生產集成信息系統的補充,同時能有效推薦用戶所需信息,有效降低其主動搜索信息所耗費的精力。

3 推薦系統評價
3.1 參數設置
3.2 系統功能
3.3 推薦效果評價
3.4 系統性能測試
3.5 模型性能測試




4 結論