本發(fā)明具體涉及一種基于用戶興趣的個性化推薦方法。
背景技術:
隨著經濟技術的發(fā)展和人們生活水平的提高,消費者對于更高品質的生活的追求也越來越明顯。
中國作為一個餐飲大國,菜品的種類和樣式隨著經濟的發(fā)展不斷增加和豐富,各式各樣的餐廳、飯店等餐飲服務場所越來越多,同時隨著互聯(lián)網經濟和網上消費的發(fā)展,海量的在線餐飲服務平臺也如雨后春筍般出現(xiàn)。然而,伴隨著各種不同的餐飲服務平臺的出現(xiàn),越來越多的用戶在就餐時,對于菜品的選擇則花費了更多的時間和精力。
推薦系統(tǒng)在電子商務領域有廣泛的應用,也有針對美食和餐廳的推薦系統(tǒng),但還沒有真正意義上針對菜品的推薦系統(tǒng),能夠為用戶某次就餐提供菜品的推薦。而且,現(xiàn)在推薦系統(tǒng)普遍采用協(xié)同過濾算法,該算法是一種基于“人以群分”理念的算法,即興趣偏好相同的人對商品的偏好也是相似的。因此,協(xié)同過濾推薦最重要的是找到和目標用戶興趣相似的最近鄰居,根據最近鄰居對推薦對象的評分來預測目標用戶對未評分的推薦對象的評分,選擇預測評分最高的的若干個推薦對象作為推薦結果反饋給用戶。
但協(xié)同過濾推薦算法存在冷啟動、數據稀疏和系統(tǒng)可擴展性等問題:傳統(tǒng)協(xié)同過濾算法中存在的問題在菜品推薦時尤為突出,新用戶就餐時常常需要推薦,但此時新用戶還沒有產生就餐記錄;用戶點菜數相對較少,導致用戶菜品矩陣稀疏;餐廳中用戶數量和菜品數會隨著時間逐漸增加,推薦系統(tǒng)中的數據量會因此驟增,傳統(tǒng)算法的應對能力也會因此下降。此外,即使傳統(tǒng)算法能處理海量的數據,但是由于基于用戶的協(xié)同過濾中“最近鄰搜索”過程隨著用戶數量的增加,計算量也會線性增長,如何實時的為上千萬的用戶提供推薦,并且能夠應對新用戶的注冊和新商品的添加則是現(xiàn)在大多數推薦系統(tǒng)都面臨的嚴重問題;最后,現(xiàn)在大多的協(xié)同過濾推薦系統(tǒng)都需要用戶顯示輸入評分信息才能為其提供服務,雖然在獲取信息方面有用戶的積極參與可以提高信息的準確度,但是給用戶使用系統(tǒng)也帶來了不便。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種計算效率高、菜品推薦準確率高、菜品推薦效果好的基于用戶興趣的個性化推薦方法。
本發(fā)明提供的這種基于用戶興趣的個性化推薦方法,包括如下步驟:
對菜品進行分類的步驟;
獲取每個用戶在每個餐廳的就餐數據,并依據用戶的就餐數據將用戶在每個餐廳進行專家用戶類別劃分;
依據每個用戶的興趣,為每個用戶進行興趣建模的步驟;
當用戶在某餐廳發(fā)起菜品推薦請求時,選取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的初步推薦菜品的步驟;
計算用戶與候選專家的相似度的步驟;
依據用戶與候選專家的相似度,進行最終的菜品推薦的步驟。
所述的對菜品進行分類為按照層次進行分類,具體分為兩類:第一層分類為按照烹飪方法、主食、飲品和外國菜進行分類,第二層分類為依據食材進行分類。
所述的將用戶在每個餐廳進行專家用戶類別劃分,具體為采用如下步驟進行分類:
1.依據獲取的每個用戶在每個餐廳的就餐數據,將餐廳中所有的數據劃分為n個用戶菜品矩陣,所述n為預定義的菜品種類個數,用戶菜品矩陣中的每一項對應用戶對某種菜品的品嘗次數;
2.利用HITS模型計算每個用戶在不同類別的專家權威度。
所述的利用HITS模型計算每個用戶在不同類別的專家權威度,具體為采用如下步驟進行計算:
1)設置初始權威值和樞紐值為用戶點菜次數;
2)采用如下公式計算某一類別中某菜品的權威值:
式中dc.a表示類別c中菜品d的權威值;uc.h表示用戶對類別c的樞紐值,且
3)用An和Hn分別表示餐廳中第n輪的權威值和樞紐值,M表示用戶菜品矩陣,并通過下述兩個公式的迭代計算得到最終每個用戶和菜品的相應得分:
An=MT·M·An-1
Hn=M·MT·Hn-1
4)選取擁有較高樞紐分數的用戶作為某類型的專家用戶。
所述的為每個用戶進行興趣建模,具體為采用用戶就餐數據中的菜品信息構建種類權重樹對用戶興趣進行建模。
所述的利用種類權重樹對用戶興趣進行建模,具體為采用如下步驟進行建模:
A.利用用戶就餐數據中的點菜記錄映射到一個偏好權重樹,所述偏好權重樹中的節(jié)點權重值TF表示用戶對該類菜品的原始偏好;
B.計算菜品的逆向文件頻率IDF;
C.將步驟A得到的節(jié)點權重值和步驟B得到的逆向文件頻率相乘得到用戶種類權重樹的每個節(jié)點的權重值,具體為采用如下算式進行計算:
式中第一部分是用戶u點菜記錄中種類c'的TF值,第二部分表示該種類的IDF值;|{u.di:di.c=c'}|表示用戶對種類c’的品嘗次數,|u.D|表示用戶點的所有菜品的總數,{uj.c′:uj∈U}表示餐廳所有用戶u中點過種類c’菜品的用戶總和。
所述的選取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的推薦菜品,具體為采用興趣感知算法進行計算和獲取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的初步推薦菜品。
所述的興趣感知算法進行計算和獲取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的初步推薦菜品,具體包括如下步驟:
a.當用戶在T時刻在餐廳R發(fā)出菜品推薦請求,且要求請求推薦的菜品為K種,則系統(tǒng)計算將產生2K種推薦菜品;
b.專家的選擇從用戶興趣對應的種類權重樹的底層開始進行:若底層的菜品推薦結果的數量不能滿足要求,就移動到種類權重樹的上一層繼續(xù)進行推薦;
c.在某一層進行菜品選擇推薦時,首先選擇擁有最小權重值的結點或種類,然后使用公式|u.wc/wmin|計算k值,從而確定種類c中需要選擇本地專家的個數,并將排名前k位的用戶作為候選專家集合e;
d.將候選專家集合e中每個專家的點菜記錄加入到候選菜品集合D中,同時將候選專家集合e加入到專家集合E中,直至菜品數量達到要求或者專家數目達到餐廳R中的用戶總數,從而得到初步的菜品推薦結果。
所述的計算用戶與候選專家的相似度,具體為采用如下步驟進行計算:
Ⅰ.利用如下公式計算用戶興趣對應的種類權重樹的同一層次間的相似度,重疊結點c中的最小偏好權重用于表示用戶間的共同興趣;
Ⅱ.采用如下公式計算每層的熵,所述每層的熵用于表示用戶偏好的多樣性:
式中P(c)為用戶點種類為c的菜品的可能性;
Ⅲ.利用如下公式計算兩個用戶興趣對應的種類權重樹間的相似度:
式中β用來平衡不同層次的權重。
所述的依據用戶與候選專家的相似度進行最終的菜品推薦,具體為采用協(xié)同過濾算法計算最終的菜品推薦。
所述的采用協(xié)同過濾算法計算最終的菜品推薦,具體為采用如下步驟進行計算:
ⅰ.采用如下公式計算用戶的遺忘函數F(t):
式中e為自然對數,a、b、c、t0、t均為變量,其中t表示用戶請求時間T距離用戶最近一次對菜品評分的時間差,單位為天;
ⅱ.選取a=20,b=0.42,c=0.0225,t0=0.00255;
ⅲ.采用如下算式計算得到考慮了時間遺忘因子的用戶菜品偏好預測值:
式中o(u',d)為用戶u’點菜品d的次數,sim(u,u')為用戶的相似度,F(xiàn)(t)為步驟ⅱ得到的遺忘函數。
本發(fā)明提供的這種基于用戶興趣的個性化推薦方法,結合用戶的興趣偏好分布,所處餐廳的專家用戶意見和用戶用餐的時間,為用戶推薦滿足其個性化需求的菜品,提高了菜品推薦的效率和準確率,同時精確的實時推薦結果可轉化為消費行為,提高用戶滿意度和商家效益;而且,興趣感知選擇算法通過選擇每種類別的專家用戶減輕相似性計算的運算量,從而實現(xiàn)對用戶菜品的實時推薦,通過菜品分類的方法有效解決了菜品多別名,新用戶冷啟動和系統(tǒng)的可擴展性問題;通過引入時間因子,改進興趣感知算法和菜品偏好預測效果,進一步提高推薦的準確率。
附圖說明
圖1為本發(fā)明方法的系統(tǒng)結構圖。
圖2為本發(fā)明的用戶菜品種類權重樹示意圖。
圖3為本發(fā)明的興趣感知選擇算法的流程示意圖。
具體實施方式
如圖1所示為本發(fā)明方法的系統(tǒng)結構圖:本發(fā)明提供的這種基于用戶興趣的個性化推薦方法,包括如下步驟:
對菜品進行分類的步驟;具體分為兩類:第一層分類為按照烹飪方法、主食、飲品和外國菜進行分類,第二層分類為依據食材進行分類
獲取每個用戶在每個餐廳的就餐數據,并依據用戶的就餐數據將用戶在每個餐廳進行專家用戶類別劃分;具體為采用如下步驟進行分類:
1.依據獲取的每個用戶在每個餐廳的就餐數據,將餐廳中所有的數據劃分為n個用戶菜品矩陣,所述n為預定義的菜品種類個數,用戶菜品矩陣中的每一項對應用戶對某種菜品的品嘗次數;
2.利用HITS模型計算每個用戶在不同類別的專家權威度:
1)設置初始權威值和樞紐值為用戶點菜次數;
2)采用如下公式計算某一類別中某菜品的權威值:
式中dc.a表示類別c中菜品d的權威值;uc.h表示用戶對類別c的樞紐值,且
3)用An和Hn分別表示餐廳中第n輪的權威值和樞紐值,M表示用戶菜品矩陣,并通過下述兩個公式的迭代計算得到最終每個用戶和菜品的相應得分:
An=MT·M·An-1
Hn=M·MT·Hn-1
4)選取擁有較高樞紐分數的用戶作為某類型的專家用戶;
上述的獲取每個用戶在每個餐廳的就餐數據,并依據用戶的就餐數據將用戶在每個餐廳進行專家用戶類別劃分的步驟,為在離線狀態(tài)下進行,并且用于在線推薦時使用,從而能夠有效減少在線部分的計算量,保證系統(tǒng)的可擴展性和快速響應的特性;
依據每個用戶的興趣,為每個用戶進行興趣建模的步驟;具體為采用用戶就餐數據中的菜品信息構建種類權重樹(示意圖如2所示)對用戶興趣進行建模:
A.利用用戶就餐數據中的點菜記錄映射到一個偏好權重樹,所述偏好權重樹中的節(jié)點權重值TF表示用戶對該類菜品的原始偏好;
B.計算菜品的逆向文件頻率IDF;
C.將步驟A得到的節(jié)點權重值和步驟B得到的逆向文件頻率相乘得到用戶種類權重樹的每個節(jié)點的權重值,具體為采用如下算式進行計算:
式中第一部分是用戶u點菜記錄中種類c'的TF值,第二部分表示該種類的IDF值;|{u.di:di.c=c'}|表示用戶對種類c’的品嘗次數,|u.D|表示用戶點的所有菜品的總數,{uj.c′:uj∈U}表示餐廳所有用戶u中點過種類c’菜品的用戶總和;
當用戶在某餐廳發(fā)起菜品推薦請求時,選取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的初步推薦菜品的步驟;具體為采用興趣感知算法(如圖3所示)進行計算和獲取當前餐廳中對用戶興趣具有權威的候選專家用戶,并獲取該候選專家用戶的初步推薦菜品:
a.當用戶在T時刻在餐廳R發(fā)出菜品推薦請求,且要求請求推薦的菜品為K種,則系統(tǒng)計算將產生2K種推薦菜品;
b.專家的選擇從用戶興趣對應的種類權重樹的底層開始進行:若底層的菜品推薦結果的數量不能滿足要求,就移動到種類權重樹的上一層繼續(xù)進行推薦;
c.在某一層進行菜品選擇推薦時,首先選擇擁有最小權重值的結點或種類,然后使用公式|u.wc/wmin|計算k值,從而確定種類c中需要選擇本地專家的個數,并將排名前k位的用戶作為候選專家集合e;
d.將候選專家集合e中每個專家的點菜記錄加入到候選菜品集合D中,同時將候選專家集合e加入到專家集合E中,直至菜品數量達到要求或者專家數目達到餐廳R中的用戶總數,從而得到初步的菜品推薦結果;
計算用戶與候選專家的相似度的步驟;具體為采用如下步驟進行計算:
Ⅰ.利用如下公式計算用戶興趣對應的種類權重樹的同一層次間的相似度,重疊結點c中的最小偏好權重用于表示用戶間的共同興趣;
Ⅱ.采用如下公式計算每層的熵,所述每層的熵用于表示用戶偏好的多樣性:
式中P(c)為用戶點種類為c的菜品的可能性;
Ⅲ.利用如下公式計算兩個用戶興趣對應的種類權重樹間的相似度:
式中β用來平衡不同層次的權重;
依據用戶與候選專家的相似度,進行最終的菜品推薦的步驟:具體為采用協(xié)同過濾算法計算最終的菜品推薦:
ⅰ.采用如下公式計算用戶的遺忘函數F(t):
式中e為自然對數,a、b、c、t0、t均為變量,其中t表示用戶請求時間T距離用戶最近一次對菜品評分的時間差,單位為天;
ⅱ.選取a=20,b=0.42,c=0.0225,t0=0.00255;
ⅲ.采用如下算式計算得到考慮了時間遺忘因子的用戶菜品偏好預測值:
式中o(u',d)為用戶u’點菜品d的次數,sim(u,u')為用戶的相似度,F(xiàn)(t)為步驟ⅱ得到的遺忘函數。