何溢漫 智靜輝 陳垡錦 南俊 馬騰 西北民族大學數學與計算機科學學院
基于Android的美食推薦系統設計與實現
何溢漫 智靜輝 陳垡錦 南俊 馬騰 西北民族大學數學與計算機科學學院
設計了一種基于Android的美食推薦系統,該系統以基于內容的推薦算法為核心,使用戶可以在移動終端使用該系統獲得一系列的美食推薦,既可以解決用戶對美食選擇困難的問題,又能為用戶提供多樣化的服務功能和信息交互功能。
推薦算法 MVC模式 Android系統
本項目采用的關鍵技術是基于內容的推薦算法,該算法根據用戶過去喜歡的產品,為用戶推薦和他過去喜歡的產品相似的產品。基于內容的推薦算法主要分為三步:評分矩陣,計算推薦依據,產生推薦項目。
假設有一個評分矩陣,其中包含2個用戶和3種美食:

用戶美食 羊肉泡饃 手抓羊肉 糖醋鯉魚Alice 4 5 3 Bob 1 1 4
矩陣的含義是:用戶Alice對羊肉泡饃、手抓羊肉、糖醋鯉魚的評分分別為4、5、3分(滿分5分)用戶Bob對羊肉泡饃、手抓羊肉、糖醋鯉魚的評分分別為1、1、4分(滿分5分,空白的表格表示Bob尚未對該食品打分)經過分析,可以發現Alice相對來講更喜歡羊肉泡饃和手抓羊肉,而且羊肉是這兩種食品的共同食材,由此我們很自然的猜想到:Alice可能喜歡羊肉類的美食!利用這一個消息,就可以開始為Alice構建她的“User Profiles”了,方法如下:
<1>算出Alice所有打分的平均分,在這個例子中Alice的平均分 Avg=(4+5+3)/3=4。
<2>利用公式()/n算出Alice對羊肉的喜好程度。其中是所有涉及到羊肉的,而且是Alice評過分的食品,Avg就是(1)中算出來的平均分,n就是所有涉及到羊肉的,而且是Alice評過分的食品的數量。在這個例子中公式應該等于((4-4)+(5-4))/2=0.5,也就是說,Alice對羊肉的喜好程度可以用0.5這個數值來反應。
<3>類似于食品屬性,用戶屬性也用到了一個1n維的矩陣,與食品屬性的矩陣不同的是,用戶屬性中矩陣的元素不再是0,1,而是由<2>計算得來的對每種食材的喜好程度,所以最終Alice的矩陣可以表示為[0.5,x,y,z,…,xx],假設矩陣的第0個元素代表羊肉,則這里的第0個元素是0.5,表示Alice對羊肉的喜好程度是0.5。同理,可以算出Alice對其它食材的喜好程度。
利用余弦相似度的公式來計算給定的用戶“U”和給定的食品“I”之間的距離。余弦相似度的值越大說明U越有可能喜歡I。余弦相似度的具體計算方法如下:
在美食推薦系統中:
Ua表示用戶U對食品a的喜好值;
Ia表示美食是否包含食品a。
按照上述計算推薦依據的方法來遍歷整個美食庫,計算Alice與每個食品的相似度,選擇相似度最高的前k個食品,推薦給Alice。
本項目主要由以下幾個模塊構成:
(1)管理員管理模塊:
管理員登錄之后,可以進行個人信息管理和美食管理,如美食更新。(如圖1)

圖1 管理員管理流圖
(2)用戶登錄與注冊模塊:
所有用戶可以根據美食關鍵字瀏覽查詢本系統的所有內容,而只有注冊過的用戶才可以進行美食關注和美食評分。
(3)用戶關注美食模塊:
用戶登錄后可以按照菜系、功效、味道或者食材搜索美食,用戶在瀏覽自己感興趣的美食后,可以點擊美食的鏈接查看詳細信息。在美食的顯示頁面上會有添加關注用戶點擊關注鏈接。
(4)美食評分模塊:
用戶品嘗美食后,系統會顯示用戶評分界面,評分包括非常滿意、還行、一般般、沒想象中好、不滿意五個等級,分別對應5、4、3、2、1分。用戶提交評分后,系統會更新美食信息中相應的評分字段。
(5)相似美食模塊:
基于內容的算法實現主要分為三步:第一步主要用變量的定義、信息的初始化和用戶評分矩陣的構建。構造用戶評分矩陣后執行基于內容的算法的第二步,即計算用戶的相似美食集。
(6)推薦顯示模塊:
用戶選擇本推薦項目后,系統會執行基于內容的算法的第三步,依據相似美食集使用平均加權策略產生推薦的美食。(2、3、4、5、6如圖2)

圖2 用戶操作流圖
本文設計的是一種基于Andriod的美食推薦系統,以基于內容的推薦算法為核心提供美食信息。基于內容的推薦算法基本思想是建立在產品的信息上作出推薦的,而不需要依據用戶對項目的評價意見,更多地需要用機器學習的方法從關于內容的特征描述的事例中得到用戶的興趣資料,從而智能的提供美食推薦。同時利用Android開發技術將算法實現,最終在移動終端供用戶使用。該系統以用戶提供的關鍵字做出智能的美食推薦,并提供美食的做法功效、距離美食最近的地理位置和其他用戶對美食的評價,以方便用戶做出選擇。
[1]劉建國,周濤,汪秉宏.個性化推薦系統的研究與發展[J].自然科學進展,2009.19(1);1-15