本發(fā)明涉及商品組合模式中最優(yōu)模式集推薦領域,更具體地說是一種基于多目標優(yōu)化的商品組合模式的挖掘方法。
背景技術:
隨著互聯網時代的到來,很多現實中的基于任務驅動的應用正在浮現,在此領域中,用戶正不斷嘗試實現一個由許多日志數據中的子任務組成任務。通常這個日志數據可能會被描繪成事務數據庫,每個事務包含了由用戶挑選的子任務?;谶@種事務數據庫的基礎上,商品組合模式挖掘致力于發(fā)現頻繁和最完整模式的推薦方法。目前,現有的模式挖掘算法中,要求用戶指定最低限度的支持度臨界值min_sup,最低限度的占有度臨界值min_occ,以及在兩項指標之間,相關重要性優(yōu)先權λ。然而,對于用戶來說,選擇這些先驗參數常常是很難的,尤其是當應用場景中沒有先驗的知識供用戶參考的情況下。
目前商品組合模式挖掘中的最優(yōu)商品組合模式集推薦問題包含兩類研究方法:
一類研究方法是基于事務數據庫的dofia算法,采用“字典子集樹”來枚舉頻繁模式,字典子集樹表示了算法的整個搜索空間,通過深度優(yōu)先遍歷(depthfirstsearch,dfs)結合剪枝的策略來進行搜索,得到最終的事務數據庫的字典子集樹。但dofia需要用戶預先設定必要的參數,即,min_sup,min_occ和λ。在用戶缺乏相應領域的先驗知識的前提下,用戶很難給出一個合理的參數來運行算法,并且參數的設置無論對于算法的運行時間還是運行結果上都有著很大影響,如果參數設置過小則會導致算法運行緩慢,用戶難以忍受,而如果參數設置過大又會令算法在搜索過程中過量剪枝從而使得最優(yōu)解被剪掉。
一類研究方法是基于時序數據庫的dofra算法,dofia和dofra算法流程中有很多相似之處,只是針對的數據集不同。雖然算法會對字典子集樹進行剪枝,然而剪枝的效率跟效果受參數影響很大,難以通用。最后,傳統(tǒng)算法采用的方式是古典多目標優(yōu)化時期的數學規(guī)劃的方式,通過對多個目標進行線性加權轉換為單目標后再進行優(yōu)化搜索。但這種方法正如古典多目標優(yōu)化方法的缺陷一樣,每次算法只能得到一個最優(yōu)解,而用戶可能更加需要的是從一組折衷的解中選擇出最合適自己的解,因此對于傳統(tǒng)算法來講只能通過修改目標之間的權重比例λ來多次運行算法來得到不同的解,較為麻煩。
技術實現要素:
本發(fā)明為克服現有技術的不足之處,提供=一種基于多目標優(yōu)化的商品組合模式的挖掘方法,以期能提高商品數據庫中商品組合模式推薦的準確性和有效性,從而為用戶推薦一組最優(yōu)的top-k模式集,使用戶可以根據自己的需求選擇最優(yōu)的商品組合模式。
本發(fā)明為解決技術問題采用如下技術方案:
本發(fā)明一種基于多目標優(yōu)化的商品組合模式的挖掘方法的特點是按如下步驟進行:
步驟1、令商品事務數據庫為d,d={x1,x2,…,xi,…,x|τ|}表示所述商品事務數據庫中所有商品組合模式的集合,xi表示第i個商品組合模式,|τ|為商品組合模式的總數;遍歷商品事務數據庫d中總數為|τ|的商品組合模式,得到每個商品組合模式下的商品項數目以及所述商品事務數據庫d中不同種類商品項的數目|n|;
將任意一個商品組合模式x的挖掘問題轉換為如式(1)所示的多目標優(yōu)化問題maximizef(x):
maximizef(x)=(supp(x),occu(x),area(x))t(1)
式(1)中,supp(x)表示所述商品組合模式x的支持度,并有:
supp(x)=freq(x)/|τ|(2)
式(2)中,freq(x)表示所述商品組合模式x的頻繁度;
式(1)中,occu(x)表示所述商品組合模式x的占有度,并有:
式(3)中,|x|表示所述商品組合模式x中商品項的數目,τx是所有包含商品組合模式x的支持事務;t表示任意一個包含商品組合模式x的支持事務;
式(1)中,area(x)表示所述商品組合模式x的覆蓋域,且:
步驟2、利用基于適應度計算的多目標優(yōu)化方法對所述商品事務數據庫d中所有的商品組合模式所轉換多目標優(yōu)化問題的進行優(yōu)化,從而得到最優(yōu)的一組商品組合模式集;
步驟2.1、種群編碼:
根據所述商品事務數據庫d中所有商品組合模式的商品項種類數目,采用二進制方式對商品組合模式x中的所有商品項進行編碼,得到商品組合模式的一個個體x={x1,x2,…,xi,…,x|n|};xi表示商品組合模式x中第i個商品項,若xi=1表示商品組合模式x中存在第i個商品項,若xi=0表示商品組合模式x中不存在第i個商品項;從而對|τ|個商品組合模式進行編碼,得到編碼后的商品事務數據庫d′;
根據所述商品事務數據庫d中不同種類商品項的數目|n|,令商品項y的編碼為“1”,其余|n|-1個商品項的編碼為“0”,從而得到商品元模式的一個個體;
步驟2.2、初始化種群:
步驟2.2.1、定義種群大小為popsize;令popsize=(|n|/50+1)×50;
若popsize/2≤|n|,則從商品元模式的|n|個個體中隨機選擇popsize/2構成初始化種群的一半;從商品事務模式的|τ|個體中隨機選擇popsize/2構成初始化種群的另一半;
若popsize/2>|n|,則選擇商品元模式中的|n|個個體作為初始化種群的一部分;剩余部分從商品事務模式的|n|個個體中隨機選擇;
步驟2.2.2、遍歷所述編碼后的商品事務數據庫d′,從而對所述初始化種群中的所有個體進行匹配,并利用式(1)計算得到所述初始化種群中的所有個體的相應的支持度、頻繁度和覆蓋域;
步驟2.2.3、利用非支配排序算法對所述初始化種群進行排序,得到排序后的具有多個前沿面的種群;
步驟2.2.4、根據歐式距離計算所述排序后的具有多個前沿面的種群的擁擠距離,并根據所得到的擁擠距離,對所述排序后的具有多個前沿面的種群進行降序排序,得到再次排序后的具有多個前沿面的種群;
步驟2.3、種群進化:
步驟2.3.1、初始化迭代次數l=0;
步驟2.3.2、采用錦標賽選擇的策略對所述再次排序后的具有多個前沿面的種群進行選擇,得到交配池,作為第l次迭代的種群;
步驟2.3.3、對所述第l次迭代的種群中的個體進行交叉變異產生第l+1次迭代的種群;
步驟2.3.4、遍歷所述編碼后的商品事務數據庫d′,從而對所述第l+1次迭代的種群中的所有個體進行匹配,并利用式(1)計算得到第l+1次迭代的種群中的所有個體的相應的支持度、頻繁度和覆蓋域;
步驟2.3.5、利用非支配排序對所述第l+1次迭代的種群進行排序,得到排序后的第l+1次迭代的具有多個前沿面的種群;
步驟2.3.6、根據歐式距離計算所述排序后的第l+1次迭代的具有多個前沿面的種群的擁擠距離,并根據所得到的擁擠距離,對所述排序后的第l+1次迭代的具有多個前沿面的種群進行降序排序,得到根據擁擠距離降序排序后的第l+1次迭代的具有多個前沿面的種群;
步驟2.3.7、將l+1賦值給l;并重復執(zhí)行步驟2.3.2,直到得到連續(xù)σ代種群之間的相似度滿足閾值條件為止,從而得到最終迭代后的種群;
步驟2.4、利用非支配排序算法對最終迭代后的種群中的個體進行排序,得到排序后的具有多個前沿面的候選種群;
步驟2.5、從所述排序后的具有多個前沿面的候選種群中選擇第一個前沿面中所有個體;
步驟2.6、從所述第一個前沿面中所有個體選擇top-k個個體作為最優(yōu)的一組商品組合模式集輸出。
與已有技術相比,本發(fā)明有益效果體現在:
1、本發(fā)明將商品事務數據庫中的商品組合模式挖掘問題轉化為基于多目標優(yōu)化的商品組合模式挖掘問題,通過利用多目標進化算法來解決商品組合模式挖掘問題;該方法通過正確的定義目標函數以及適應度的計算,就可以獲得商品事務數據庫中的一組最優(yōu)商品組合模式集,使用戶的選擇多樣化;該方法不需要考慮先驗參數的設置,可以解決搜索效率跟效果受參數影響很大的問題,同時可以解決dofra和dofia中字典子集樹過于龐大而導致搜索效率大大下降的問題,從而很大程度上提高了商品組合模式挖掘的效率。
2、目前的挖掘方法中,所得到的挖掘結果為單個模式,非常單一,無法滿足多樣用戶的需求,本發(fā)明通過基于多目標優(yōu)化的方法,利用適應度的計算可以很好的解決這一難題,從而為用戶推薦一組最優(yōu)商品組合模式集,供用戶根據自己的需求選擇,使挖掘結果呈現多樣性。
3、本發(fā)明不需設置先驗參數min_sup,min_occ和λ,避免了先驗參數設置不準確帶來的挖掘模式數目過多或者挖掘過程中遺漏重要模式的問題,使挖掘結果更加完整。
4、本發(fā)明針對商品組合模式挖掘難題,提出一個總體初始化策略,這種策略可以保證初始化生成的個體都是有用的,并且在實際應用中保留了一個很好的多樣性。
5、本發(fā)明通過多目標進化算法,利用適應度計算來推薦最優(yōu)商品組合模式問題,所述方法不需要太過擔心dofia和dofra算法中枚舉的空間將會隨著事務數據庫中項的增加而呈現出指數級增長的趨勢,這在很大程度上提高了模式挖掘的有效性和準確性。
附圖說明
圖1為本發(fā)明方法流程圖;
圖2a為本發(fā)明的問題轉換與種群編碼的示意圖;
圖2b為本發(fā)明多目標進化算法流程圖;
圖2c為本發(fā)明最優(yōu)商品組合模式推薦圖。
具體實施方式
本實施例中,一種基于多目標優(yōu)化的商品組合模式的挖掘方法是將商品事務數據庫中商品搭配問題轉化為基于多目標優(yōu)化的商品組合模式的挖掘問題,通過適應度的計算來解決商品事務數據庫中最優(yōu)商品組合模式的推薦問題,從而得到商品事務數據庫中最終的最優(yōu)商品組合模式集;如圖1所示,具體地說是按如下步驟進行:
步驟1、令商品事務數據庫為d,d={x1,x2,…,xi,…,x|τ|}表示所述商品事務數據庫中所有商品組合模式的集合,xi表示第i個商品組合模式,|τ|為商品組合模式的總數;遍歷商品事務數據庫d中總數為|τ|的商品組合模式,得到每個商品組合模式下的商品項數目以及所述商品事務數據庫d中不同種類商品項的數目|n|;
將任意一個商品組合模式x的挖掘問題轉換為如式(1)所示的多目標優(yōu)化問題maximizef(x):
maximizef(x)=(supp(x),occu(x),area(x))t(1)
式(1)中,supp(x)表示所述商品組合模式x的支持度,并有:
supp(x)=freq(x)/|τ|(2)
式(2)中,freq(x)表示所述商品組合模式x的頻繁度;
式(1)中,occu(x)表示所述商品組合模式x的占有度,并有:
式(3)中,|x|表示所述商品組合模式x中商品項的數目,τx是所有包含商品組合模式x的支持事務;t表示任意一個包含商品組合模式x的支持事務;
式(1)中,area(x)表示所述商品組合模式x的覆蓋域,且:
步驟2、利用基于適應度計算的多目標優(yōu)化方法對所述商品事務數據庫d中所有的商品組合模式所轉換多目標優(yōu)化問題的進行優(yōu)化,從而得到最優(yōu)的一組商品組合模式集;圖2a,圖2b以及圖2c為本發(fā)明的一個簡單流程示意圖,如圖2a上半部分所示為轉換后的多目標優(yōu)化問題;
步驟2.1、種群編碼:
根據所述商品事務數據庫d中所有商品組合模式的商品項種類數目,采用二進制方式對商品組合模式x中的所有商品項進行編碼,得到商品組合模式的一個個體x={x1,x2,…,xi,…,x|n|};xi表示商品組合模式x中第i個商品項,若xi=1表示商品組合模式x中存在第i個商品項,若xi=0表示商品組合模式x中不存在第i個商品項;從而對|τ|個商品組合模式進行編碼,得到編碼后的商品事務數據庫d′;如圖2a下半部分所示為商品事務數據庫d中某五個商品組合模式的編碼示例,以其中一個商品事務模式w={a,b,d}為例,因為商品項{c,e}沒有出現,從而商品事務模式w的編碼為{1,1,0,1,0};
根據所述商品事務數據庫d中不同種類商品項的數目|n|,令商品項y的編碼為“1”,其余|n|-1個商品項的編碼為“0”,從而得到商品元模式的一個個體;
步驟2.2、初始化種群:
步驟2.2.1、定義種群大小為popsize;令popsize=(|n|/50+1)×50;
若popsize/2≤|n|,則從商品元模式的|n|個個體中隨機選擇popsize/2構成初始化種群的一半;從商品事務模式的|τ|個體中隨機選擇popsize/2構成初始化種群的另一半;
若popsize/2>|n|,則選擇商品元模式中的|n|個個體作為初始化種群的一部分;剩余部分從商品事務模式的|n|個個體中隨機選擇;
步驟2.2.2、遍歷所述編碼后的商品事務數據庫d′,從而對所述初始化種群中的所有個體進行匹配,并利用式(1)計算得到所述初始化種群中的所有個體的相應的支持度、頻繁度和覆蓋域;
步驟2.2.3、利用非支配排序算法對所述初始化種群進行排序,得到排序后的具有多個前沿面的種群;
步驟2.2.4、根據歐式距離計算所述排序后的多層面的種群的擁擠距離,并根據所得到的擁擠距離,對所述排序后的具有多個前沿面的種群進行降序排序,得到根據擁擠距離降序排序后的具有多個前沿面的種群;
步驟2.3、種群進化:
步驟2.3.1、初始化迭代次數l=0;
步驟2.3.2、采用錦標賽選擇的策略對所述根據擁擠距離降序排序后的具有多個前沿面的種群進行選擇,得到交配池,即第l次迭代的種群;
步驟2.3.3、對所述第l次迭代的種群中的個體進行交叉變異產生第l+1次迭代的種群;
步驟2.3.4、遍歷所述編碼后的商品事務數據庫d′,從而對所述第l+1次迭代的種群中的所有個體進行匹配,并利用式(1)計算得到第l+1次迭代的種群中的所有個體的相應的支持度、頻繁度和覆蓋域;
步驟2.3.5、利用非支配排序對所述第l+1次迭代的種群進行排序,得到排序后的第l+1次迭代的具有多個前沿面的種群;
步驟2.3.6、根據歐式距離計算所述排序后的第l+1次迭代的具有多個前沿面的種群的擁擠距離,并根據所得到的擁擠距離,對所述排序后的第l+1次迭代的具有多個前沿面的種群進行降序排序,得到根據擁擠距離降序排序后的第l+1次迭代的具有多個前沿面的種群;
步驟2.3.7、將l+1賦值給l;并重復執(zhí)行步驟2.3.2,直到得到連續(xù)σ代種群之間的相似度滿足閾值條件為止,從而得到最終迭代后的種群;如圖2b所示,迭代結束,并得到最終迭代后的種群;
步驟2.4、利用非支配排序算法對最終迭代后的種群中的個體進行排序,得到排序后的具有多個前沿面的候選種群;
步驟2.5、從所述排序后的具有多個前沿面的候選種群中選擇第一個前沿面中所有個體;
步驟2.6、從所述第一個前沿面中所有個體選擇top-k個個體作為最優(yōu)的一組商品組合模式集輸出。如圖2c所示,得到第一個前沿面中所有的商品組合模式,并選擇top-k個商品組合模式作為最優(yōu)的一組商品組合模式推薦給用戶,供用戶選擇。