何溢漫 智靜輝 陳?ài)义\ 南俊 馬騰 西北民族大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院
基于Android的美食推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
何溢漫 智靜輝 陳?ài)义\ 南俊 馬騰 西北民族大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院
設(shè)計(jì)了一種基于Android的美食推薦系統(tǒng),該系統(tǒng)以基于內(nèi)容的推薦算法為核心,使用戶可以在移動(dòng)終端使用該系統(tǒng)獲得一系列的美食推薦,既可以解決用戶對(duì)美食選擇困難的問(wèn)題,又能為用戶提供多樣化的服務(wù)功能和信息交互功能。
推薦算法 MVC模式 Android系統(tǒng)
本項(xiàng)目采用的關(guān)鍵技術(shù)是基于內(nèi)容的推薦算法,該算法根據(jù)用戶過(guò)去喜歡的產(chǎn)品,為用戶推薦和他過(guò)去喜歡的產(chǎn)品相似的產(chǎn)品?;趦?nèi)容的推薦算法主要分為三步:評(píng)分矩陣,計(jì)算推薦依據(jù),產(chǎn)生推薦項(xiàng)目。
假設(shè)有一個(gè)評(píng)分矩陣,其中包含2個(gè)用戶和3種美食:
用戶美食 羊肉泡饃 手抓羊肉 糖醋鯉魚(yú)Alice 4 5 3 Bob 1 1 4
矩陣的含義是:用戶Alice對(duì)羊肉泡饃、手抓羊肉、糖醋鯉魚(yú)的評(píng)分分別為4、5、3分(滿分5分)用戶Bob對(duì)羊肉泡饃、手抓羊肉、糖醋鯉魚(yú)的評(píng)分分別為1、1、4分(滿分5分,空白的表格表示Bob尚未對(duì)該食品打分)經(jīng)過(guò)分析,可以發(fā)現(xiàn)Alice相對(duì)來(lái)講更喜歡羊肉泡饃和手抓羊肉,而且羊肉是這兩種食品的共同食材,由此我們很自然的猜想到:Alice可能喜歡羊肉類(lèi)的美食!利用這一個(gè)消息,就可以開(kāi)始為Alice構(gòu)建她的“User Profiles”了,方法如下:
<1>算出Alice所有打分的平均分,在這個(gè)例子中Alice的平均分 Avg=(4+5+3)/3=4。
<2>利用公式()/n算出Alice對(duì)羊肉的喜好程度。其中是所有涉及到羊肉的,而且是Alice評(píng)過(guò)分的食品,Avg就是(1)中算出來(lái)的平均分,n就是所有涉及到羊肉的,而且是Alice評(píng)過(guò)分的食品的數(shù)量。在這個(gè)例子中公式應(yīng)該等于((4-4)+(5-4))/2=0.5,也就是說(shuō),Alice對(duì)羊肉的喜好程度可以用0.5這個(gè)數(shù)值來(lái)反應(yīng)。
<3>類(lèi)似于食品屬性,用戶屬性也用到了一個(gè)1n維的矩陣,與食品屬性的矩陣不同的是,用戶屬性中矩陣的元素不再是0,1,而是由<2>計(jì)算得來(lái)的對(duì)每種食材的喜好程度,所以最終Alice的矩陣可以表示為[0.5,x,y,z,…,xx],假設(shè)矩陣的第0個(gè)元素代表羊肉,則這里的第0個(gè)元素是0.5,表示Alice對(duì)羊肉的喜好程度是0.5。同理,可以算出Alice對(duì)其它食材的喜好程度。
利用余弦相似度的公式來(lái)計(jì)算給定的用戶“U”和給定的食品“I”之間的距離。余弦相似度的值越大說(shuō)明U越有可能喜歡I。余弦相似度的具體計(jì)算方法如下:
在美食推薦系統(tǒng)中:
Ua表示用戶U對(duì)食品a的喜好值;
Ia表示美食是否包含食品a。
按照上述計(jì)算推薦依據(jù)的方法來(lái)遍歷整個(gè)美食庫(kù),計(jì)算Alice與每個(gè)食品的相似度,選擇相似度最高的前k個(gè)食品,推薦給Alice。
本項(xiàng)目主要由以下幾個(gè)模塊構(gòu)成:
(1)管理員管理模塊:
管理員登錄之后,可以進(jìn)行個(gè)人信息管理和美食管理,如美食更新。(如圖1)
圖1 管理員管理流圖
(2)用戶登錄與注冊(cè)模塊:
所有用戶可以根據(jù)美食關(guān)鍵字瀏覽查詢本系統(tǒng)的所有內(nèi)容,而只有注冊(cè)過(guò)的用戶才可以進(jìn)行美食關(guān)注和美食評(píng)分。
(3)用戶關(guān)注美食模塊:
用戶登錄后可以按照菜系、功效、味道或者食材搜索美食,用戶在瀏覽自己感興趣的美食后,可以點(diǎn)擊美食的鏈接查看詳細(xì)信息。在美食的顯示頁(yè)面上會(huì)有添加關(guān)注用戶點(diǎn)擊關(guān)注鏈接。
(4)美食評(píng)分模塊:
用戶品嘗美食后,系統(tǒng)會(huì)顯示用戶評(píng)分界面,評(píng)分包括非常滿意、還行、一般般、沒(méi)想象中好、不滿意五個(gè)等級(jí),分別對(duì)應(yīng)5、4、3、2、1分。用戶提交評(píng)分后,系統(tǒng)會(huì)更新美食信息中相應(yīng)的評(píng)分字段。
(5)相似美食模塊:
基于內(nèi)容的算法實(shí)現(xiàn)主要分為三步:第一步主要用變量的定義、信息的初始化和用戶評(píng)分矩陣的構(gòu)建。構(gòu)造用戶評(píng)分矩陣后執(zhí)行基于內(nèi)容的算法的第二步,即計(jì)算用戶的相似美食集。
(6)推薦顯示模塊:
用戶選擇本推薦項(xiàng)目后,系統(tǒng)會(huì)執(zhí)行基于內(nèi)容的算法的第三步,依據(jù)相似美食集使用平均加權(quán)策略產(chǎn)生推薦的美食。(2、3、4、5、6如圖2)
圖2 用戶操作流圖
本文設(shè)計(jì)的是一種基于Andriod的美食推薦系統(tǒng),以基于內(nèi)容的推薦算法為核心提供美食信息?;趦?nèi)容的推薦算法基本思想是建立在產(chǎn)品的信息上作出推薦的,而不需要依據(jù)用戶對(duì)項(xiàng)目的評(píng)價(jià)意見(jiàn),更多地需要用機(jī)器學(xué)習(xí)的方法從關(guān)于內(nèi)容的特征描述的事例中得到用戶的興趣資料,從而智能的提供美食推薦。同時(shí)利用Android開(kāi)發(fā)技術(shù)將算法實(shí)現(xiàn),最終在移動(dòng)終端供用戶使用。該系統(tǒng)以用戶提供的關(guān)鍵字做出智能的美食推薦,并提供美食的做法功效、距離美食最近的地理位置和其他用戶對(duì)美食的評(píng)價(jià),以方便用戶做出選擇。
[1]劉建國(guó),周濤,汪秉宏.個(gè)性化推薦系統(tǒng)的研究與發(fā)展[J].自然科學(xué)進(jìn)展,2009.19(1);1-15