亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        協(xié)同過濾和粒子群算法在飲食推薦中的應用

        2019-08-14 11:38:16何金超袁知才黃慧中
        計算機應用與軟件 2019年8期
        關鍵詞:優(yōu)化用戶

        何金超 羅 芳 袁知才 黃慧中

        (武漢理工大學計算機與科學技術學院 湖北 武漢 430061)

        0 引 言

        隨著人們生活水平的不斷提高,在飲食方面,人們越來越注重健康飲食。營養(yǎng)失衡容易導致肥胖癥、高血壓以及糖尿病等疾病的發(fā)生。健康飲食不是一味追求“高營養(yǎng)”,而是要營養(yǎng)均衡,也就是指人體每日的各種營養(yǎng)元素攝入量達到健康標準。但是,僅憑人們的生活經(jīng)驗往往很難均衡各種營養(yǎng)元素及其含量,而且現(xiàn)如今人們早已習慣用手機解決衣食住行等各種生活問題,因此,各種飲食推薦軟件應運而生。

        現(xiàn)有的飲食推薦軟件大多從用戶飲食偏好或營養(yǎng)均衡入手。從用戶飲食偏好方面做出推薦的算法主要有基于用戶的協(xié)同過濾算法、基于內容的協(xié)同過濾算法[1]等。王玉山等[2]通過分析用戶的飲食記錄,利用基于用戶的協(xié)同過濾算法,選取k個近鄰對食物進行加權推薦,并使用輪盤選賭法使推薦的食物多樣化。Cheng等[3]使用基于內容的協(xié)同過濾算法,通過保存用戶瀏覽的食譜記錄,分析食譜間的相似性,向目標用戶推薦其可能喜歡的食譜。韋素云等[4]提出一種基于Co-Clustering平滑的協(xié)同過濾算法解決協(xié)同過濾算法普遍存在的冷啟動和稀疏性問題。從營養(yǎng)均衡方面做出推薦的算法主要有多目標粒子群優(yōu)化算法[5]、Apriori算法[6]等。張繼新等[7]根據(jù)用戶的年齡、性別等信息確定用戶每天所需的能量、蛋白質和鈣等三種營養(yǎng)元素含量,利用多目標粒子群優(yōu)化算法使得推薦的食物滿足這三種營養(yǎng)元素的需求。周萬珍等[8]采用k-means聚類算法和Apriori算法實現(xiàn)食物營養(yǎng)成分含量之間的關聯(lián)規(guī)則挖掘,讓用戶可根據(jù)自身對營養(yǎng)成分的需求選擇不同“簇”內的某類食物。

        綜上所述,現(xiàn)有的大多數(shù)飲食推薦方案難以同時滿足用戶飲食偏好和營養(yǎng)均衡的需求。從用戶飲食偏好出發(fā)的推薦方案,只給用戶推薦他喜歡的菜品,這樣往往會讓用戶養(yǎng)成偏食習慣,導致營養(yǎng)不良。從營養(yǎng)均衡出發(fā)的推薦方案,雖然可以給出明確的營養(yǎng)元素和食物重量,但沒有考慮用戶個性化需求。本文提出一種兩者兼顧的推薦方案,根據(jù)中國營養(yǎng)學會發(fā)布的中國居民膳食營養(yǎng)素參考攝入量(recommended nutrient intake,RNI)[9]和中國食品營養(yǎng)網(wǎng)上發(fā)布的各種食材的營養(yǎng)信息,以及用戶的飲食記錄,采用基于用戶飲食偏好的協(xié)同過濾,進行每日的食譜推薦;在此基礎上,利用多目標粒子群優(yōu)化算法,使得推薦的食物九種營養(yǎng)元素達到每日推薦攝入量(recommended dietary allowances,RDAs)標準。

        1 個性化飲食推薦問題的數(shù)學模型

        1.1 問題描述

        在個性化飲食推薦問題中,需考慮用戶的飲食偏好和營養(yǎng)均衡兩種需求。針對飲食偏好需求,用戶經(jīng)常選擇符合自己口味的食物,但這僅僅是單一的幾種,造成了飲食的單一性,所以需向用戶推薦更多符合其口味的食物。針對營養(yǎng)均衡需求,用戶希望通過每天的飲食,使攝入的各種營養(yǎng)元素含量達到健康標準,所以需精確控制每餐食物的攝入量。鑒于此,本文研究基于用戶偏好和營養(yǎng)均衡的個性化飲食推薦,用于解決以下問題:(1) 為目標用戶推薦符合其飲食偏好的每日食譜;(2) 為推薦食譜中的各種食物含量做多目標優(yōu)化,使用戶各種營養(yǎng)素攝入量達到健康標準。

        1.2 個性化飲食推薦模型建立

        個性化飲食推薦模型主要由基于用戶偏好的協(xié)同過濾模型和多目標粒子群優(yōu)化算法模型構成?;谟脩羝玫膮f(xié)同過濾模型用于解決飲食偏好問題,多目標粒子群優(yōu)化模型用于解決營養(yǎng)均衡問題。

        1.2.1基于用戶偏好的協(xié)同過濾模型

        1) 用戶偏好:基于用戶的協(xié)同過濾,通過分析用戶飲食-頻次矩陣,計算用戶間的相似度,找到飲食記錄相似的用戶集合,推薦目標用戶未吃過但可能喜歡吃的食物。用戶-飲食頻次矩陣R(m,n)定義如下:

        式中:Rij為用戶Ui(1≤i≤m)對第j(1≤j≤n)種食物Fj的飲食頻次。

        由于有的用戶飲食記錄數(shù)據(jù)較多,有的較少,特別是新老用戶之間,飲食數(shù)據(jù)差異很大。本文引出用戶飲食偏好的概念,利用用戶-飲食偏好矩陣來計算用戶間的相似度。用戶的飲食偏好定義如下:

        Lij=Fij/Ni

        (1)

        式中:Lij為用戶Ui對于第j種食物Fj的飲食偏好,F(xiàn)ij為用戶Ui對于食物Fj的飲食頻次,Ni為用戶Ui總的飲食頻次。

        利用式(1),將用戶-飲食頻次矩陣R(m,n)轉化為用戶-飲食偏好矩陣L(m,n),其矩陣定義如下:

        式中:用戶-飲食偏好矩陣L(m,n)同樣包含上述的m個用戶集合和n種食物集合,Lij為用戶Ui(1≤i≤m)對食物Fj(1≤j≤n)的飲食偏好。

        2) 模型定義:皮爾遜相關系數(shù)用來描述兩個變量之間的線性相關程度。為獲取與目標用戶飲食偏好相似的用戶集合,需要計算用戶間的相似度,本文采用皮爾遜相關系數(shù)計算用戶間的相似度,在計算用戶間飲食偏好的相似性時,把每個用戶作為一個變量,用戶對于n種不同食物的飲食偏好作為該變量的一組樣本值。兩個變量間的皮爾遜相似度作為兩個用戶間的相似度的值。

        定義1設目標用戶為Ua,則用戶Ua與其他用戶Ub的相似度Sim(Ua,Ub)定義如下:

        (2)

        式中:Sim(Ua,Ub)為用戶Ua和用戶Ub間的皮爾遜相似度,Laj為用戶Ua對第j種食物Fj的飲食偏好,Lbj為用戶Ub對食物Fj的飲食偏好。

        計算出目標與其他用戶的相似度之后,需要計算每種食物的加權推薦值,將食物推薦值高的食物推薦給目標用戶。

        定義2設目標用戶為Ua,對于目標用戶Ua,食物Fj的加權推薦值Raj定義如下:

        式中:k為目標用戶Ua飲食偏好的近鄰個數(shù),Sim(Ua,Ui)為用戶Ua和Ui間的皮爾遜相似度,lij為用戶Ui對于食物Fj的飲食偏好。Raj為對于目標用戶Ua食物Fj的推薦值。

        1.2.2多目標粒子群優(yōu)化模型

        多目標粒子群優(yōu)化算模型是基于經(jīng)典粒子群算法和多目標優(yōu)化問題的模型。本文根據(jù)多目標優(yōu)化問題的相關定義,在《中國居民膳食營養(yǎng)素參考攝入量》[9]標準下設置多目標函數(shù)及約束條件。

        1) 粒子群算法:粒子群優(yōu)化算法是由Kennedy和Eberhart[10]于1995年提出的基于鳥群覓食模型的優(yōu)化算法。粒子的位置更新由粒子的當前速度和上一周期位置確定,粒子的速度更新由粒子個體歷史最優(yōu)位置和群體最優(yōu)位置加權確定?;谏鲜鲈?,粒子位置和速度更新的數(shù)學模型定義如下:

        2)多目標優(yōu)化:多目標優(yōu)化問題通常也被稱為多標準優(yōu)化問題,一個具有n維決策變量,m維子目標的多目標優(yōu)化問題可以表述如下:

        miny=F(x)=(f1(x),f2(x),…,fm(x))

        (6)

        式中:y為m維的目標空間;F(x)為m個由決策空間向目標空間的映射函數(shù);fm(x)為第m個子目標的目標函數(shù);gi(x)≤0(i=1,2,…,q)和hj(x)=0(j=1,2,…,p)分別為q個不等式約束條件和p個等式約束條件;Ω為n維的決策空間。

        3) 設置目標函數(shù):根據(jù)推薦食譜中的八道菜,本文分別以其所含熱量、蛋白質、脂肪、碳水化合物、維生素A、維生素B、鈣、鐵、維生素C九種營養(yǎng)素含量與標準值差值的絕對值作為目標函數(shù)。

        miny=|X1×8×A8×9-S1×9|

        (7)

        式中:y=(y1,y2,…,y9)為目標函數(shù)矩陣;A8×9為單位重量的食物含營養(yǎng)素量的約束關系矩陣,其中aij(i=1,2,…,8;j=1,2,…,9)表示單位重量的食物i含營養(yǎng)素j的量;X1×8=(x1,x2,…,x8)為求解8種食物含量的未知變量矩陣;S1×9=(s1,s2,…,s9) 為根據(jù)《中國居民膳食營養(yǎng)素參考攝入量》標準得到的成年人每天應攝入九種營養(yǎng)素含量矩陣。

        4) 約束條件:根據(jù)早中晚三餐的熱量攝入比例應為3 ∶4 ∶3,設置等式約束條件如下:

        式中:xi(i=1,2),xj(j=3,4,5),xk(k=6,7,8)分別為早中晚三餐的食物重量,am1(m=1,2,…,8)為單位重量的食物m所含熱量值。

        2 求解算法描述

        基于用戶的協(xié)同過濾算法用于輸出推薦食譜,多目標粒子群優(yōu)化算法用于輸出推薦食譜中各種食物的具體含量。

        2.1 基于用戶的協(xié)同過濾算法

        根據(jù)基于用戶偏好的協(xié)同過濾模型,設計基于用戶偏好的協(xié)同過濾算法偽代碼如下:

        輸入:用戶-飲食頻次矩陣,閾值p,近鄰個數(shù)k

        輸出:推薦的食物集foodRecmd[m]

        Begin

        Fori=0 tomdo

        //讀取飲食總頻次N>p的用戶飲食頻次矩陣

        If foodSumFreq(i)>pThen

        init(foodFreq[i])

        end if

        cvtMatrix(foodFreq,foodLike)

        //將用戶飲食頻次矩陣轉換為用戶飲食偏好矩陣

        getUserMap(foodLike,userMap)

        //建立userMap

        getUserSim(userMap, psMap)

        //計算皮爾遜相似度

        Collections.sort(psMap,k)

        //取相似度高的k個近鄰

        getFoodSco(psMap,scoMap)

        //計算食物推薦值

        getLsFood(scoMap,foodFreq,x)

        //獲得用戶沒有吃過但推薦值較高的的x種食物

        Collections.sort(scoMap,y)

        //獲得推薦值較高的y種食物(不包含之前的x種食物)

        m←x+y

        Fori=0 tomdo

        //將推薦的m種食物保存在foodRecmd數(shù)組中

        foodRecmd[i]←scoreMap.getKey(i)

        End for

        End

        2.2 多目標粒子群優(yōu)化算法

        針對營養(yǎng)均衡問題,本文采用由Coello等[11]于2004年提出的基于自適應柵格的多目標粒子群優(yōu)化算法。該算法在基本多目標優(yōu)化算法基礎上,提出了新的群體最優(yōu)選擇策略、存儲器管理策略和自適應柵格調整策略。

        1) 群體最優(yōu)gbest選擇策略:根據(jù)目標函數(shù)的維度建立超立方體空間,并將該空間劃分為若干個柵格。為每個柵格設計一個密度值,計算方式如下所示:

        式中:ni是第i個柵格中解的個數(shù),N是常數(shù)。基于密度值大的柵格容易選中的思想,從密度值最大的柵格中隨機選擇一個解,作為群體最優(yōu),使粒子群向搜索不足的方向搜索。

        2) 存儲器管理策略:當存儲器沒有滿時,存儲所有搜索到的非支配解。當存儲器滿后,根據(jù)各個柵格的密度值大小,選擇在密度值高的柵格中隨機剔除一個解。

        3) 自適應柵格調整策略:由于每次迭代后,單一目標函數(shù)的最大值都會改變,若將超立方體空間每個維度橫坐標的上限設為定值,則會出現(xiàn)目標函數(shù)最大值超出坐標范圍。因此需動態(tài)擴展橫坐標,使其上限為單一目標函數(shù)最大值,并重新調整單位刻度,使劃分后的柵格總數(shù)不變。

        4) 多目標粒子群優(yōu)化算法流程:設計多目標粒子群優(yōu)化算法偽代碼如下:

        輸入:慣性因子w,學習因子c1、c2,迭代次數(shù)k,粒子數(shù)量m,外部存檔size,柵格數(shù)N

        輸出:外部檔案集

        Begin

        Init(m);

        //對種群進行初始化

        Fori=1 tok

        CalTarget();

        //計算粒子的各目標函數(shù)值

        GetNonInfSet();

        //獲得非劣解集

        UpdateArchive(archive);

        //將非劣解集加入外部檔案,并剔除劣解,即更新外部檔案

        CalDensity(N,archive);

        //計算柵格密度

        DelSolution(size,archive);

        //限制外部檔案規(guī)模

        Update(m);

        //更新粒子速度,位置,個體最優(yōu)位置,群體最優(yōu)位置

        End for

        Print(archive);

        //輸出外部檔案集

        End

        3 實驗驗證

        3.1 實驗過程

        首先將本班40位同學作為用戶對象,統(tǒng)計近一個月的飲食情況。將用戶一天的飲食情況記為一條飲食記錄并存入數(shù)據(jù)庫中,共有1 200條飲食記錄。依據(jù)飲食記錄做菜譜推薦,然后通過多目標粒子群算法優(yōu)化推薦食譜中各種食物的重量,將推薦結果呈現(xiàn)給用戶。其中多目標粒子群優(yōu)化算法的參數(shù)設置如下:慣性因子w=0.5,學習因子c1=c2=2,迭代次數(shù)k=40,粒子數(shù)量m=30,外部存檔size=500,柵格數(shù)N=10。

        3.2 實驗結果與分析

        3.2.1推薦結果與分析

        (1) 推薦結果:對每個同學,每天推薦8種食物,記錄他們對于中國食品營養(yǎng)網(wǎng)上列出的80種食物的飲食數(shù)據(jù)。從這上千條數(shù)據(jù)中,隨機選擇A同學連續(xù)十天的飲食數(shù)據(jù),包括這十天對于A同學的推薦數(shù)據(jù)和實際飲食記錄,如表1所示。統(tǒng)計每天成功推薦的食物數(shù)量,計算推薦的成功率。

        表1 A同學十天的飲食數(shù)據(jù)

        根據(jù)這40位同學一個月的飲食記錄,按照基于用戶偏好的協(xié)同過濾模型,對A同學進行一天的食譜推薦,推薦結果為:大米、豬肉、生菜、梨、茄子、豆腐、基圍蝦、黃瓜。

        (2) 實驗分析:本文用推薦的準確率指標來衡量推薦系統(tǒng)的好壞,推薦食物與用戶實際食用的食物重合率越高,說明推薦準確性越高,推薦效果越好。準確率定義如下:

        (9)

        式中:counti(Rf)為第i天推薦的食物數(shù)量,counti(Rf∩Af)為第i天推薦的食物與實際食物的交集的食物個數(shù),也就是第i天成功推薦的食物數(shù)量,precision為這十天食物推薦的準確率。

        計算得precision=0.82。重復實驗獲得班上七名同學一個月的飲食推薦數(shù)據(jù)與實際飲食記錄,計算其推薦的準確率,結果如圖1所示。

        圖1 準確率

        由圖1可以看出,推薦的準確率幾乎都在0.80以上,平均準確率達到0.85,說明本文基于用戶偏好的協(xié)同過濾算法穩(wěn)定,推薦效果好。

        3.2.2優(yōu)化結果與分析

        (1) 優(yōu)化結果:由推薦模型得出目標用戶的推薦食譜為:大米、豬肉、生菜、梨、茄子、豆腐、基圍蝦、黃瓜,依據(jù)本文優(yōu)化模型得出優(yōu)化結果為:大米223 g、豬肉130 g、生菜262 g、梨357 g、茄子100 g、豆腐100 g、基圍蝦246 g、黃瓜297 g。與標準攝入的比較結果見表2。

        表2 營養(yǎng)調配與標準攝入的差值結果比較

        為避免實驗的偶然性,對本次推薦結果做30次重復獨立實驗,統(tǒng)計各營養(yǎng)素平均誤差如表3所示。

        表3 30次重復獨立實驗后各營養(yǎng)素平均誤差

        (2) 實驗分析:從單次實驗結果來看,9種營養(yǎng)素中有6種營養(yǎng)素誤差在百分之十以內,最低誤差為1.2%,最高誤差為33.2%。其中蛋白質誤差達到最大33.2%的原因在于推薦食譜中同時包含了基圍蝦和豬肉兩類食物,這兩種食物單位重量含蛋白質異常高,所以在調優(yōu)時造成蛋白質含量較高。除去蛋白質,最高誤差為22.8%,平均誤差為9.425%。

        從多次實驗結果來看,9種營養(yǎng)素中有6種營養(yǎng)素誤差在百分之十以內。除去蛋白質外,平均最低誤差為0.9%,平均最高誤差為20.2%,平均誤差為9.4%。通常而言,各營養(yǎng)素攝入量與標準值誤差在±10%以內屬于營養(yǎng)攝入正常[12]。所以本文所用多目標粒子群優(yōu)化算法在營養(yǎng)均衡問題上效果顯著。

        4 結 語

        針對個性化飲食推薦問題,本文綜合考慮飲食偏好和營養(yǎng)均衡需求,建立個性化飲食推薦模型,先通過基于用戶偏好的協(xié)同過濾算法做飲食推薦,然后以人體攝入營養(yǎng)素含量與標準含量差值的絕對值作為目標函數(shù),運用多目標粒子群優(yōu)化算法對推薦食譜中的各食物含量進行調優(yōu)。算法中基于自適應柵格篩選非劣解和全局最優(yōu)解,控制Pareto分布的均勻性和多樣性。經(jīng)過實驗測試,驗證了本文構建的個性化飲食推薦模型在解決飲食偏好和營養(yǎng)均衡需求問題上的有效性。

        猜你喜歡
        優(yōu)化用戶
        超限高層建筑結構設計與優(yōu)化思考
        房地產導刊(2022年5期)2022-06-01 06:20:14
        民用建筑防煙排煙設計優(yōu)化探討
        關于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        由“形”啟“數(shù)”優(yōu)化運算——以2021年解析幾何高考題為例
        關注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        基于低碳物流的公路運輸優(yōu)化
        Camera360:拍出5億用戶
        久久久婷婷综合五月天| 男人进去女人爽免费视频 | 亚洲av日韩av永久无码色欲| 欧美日韩中文制服有码| 青青草针对华人超碰在线| 在线观看视频亚洲一区二区三区| 日本一区二区三区四区高清不卡| 亚洲精品久久久av无码专区| 亚洲欧美综合在线天堂| 福利视频一二区| 综合中文字幕亚洲一区二区三区 | 美腿丝袜美腿国产在线| 在线精品首页中文字幕亚洲| 欧美成免费a级毛片| 国产精品国产三级农村妇女| 激情人妻中出中文字幕一区| 在线观看 国产一区二区三区| 97久久草草超级碰碰碰| 亚洲日韩乱码中文无码蜜桃臀| 手机看片国产日韩| 美利坚亚洲天堂日韩精品| 在线观看亚洲第一黄片| 尤物网址在线观看| Y111111国产精品久久久| 青青草视频在线观看视频免费| 蜜臀av一区二区三区免费观看| 九九热线有精品视频86| 国产一区二区精品在线观看| 免费在线观看蜜桃视频| av新型国产在线资源| 韩国三级大全久久网站| 久久久精品人妻一区二区三区四| 久久91综合国产91久久精品| 久久精品国产亚洲av一| 少妇下面好爽好紧好湿一区二区| 国产一极内射視颍一| 免费观看一区二区| 国产一区二区三区porn| 日韩 无码 偷拍 中文字幕| 精品人妻系列无码一区二区三区| аⅴ天堂一区视频在线观看|