• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于多維度特征的飲食健康推薦

      2019-07-16 01:19:40郝梓杰羅裕升朱珍民
      計算機應用與軟件 2019年7期
      關鍵詞:營養(yǎng)元素畫像列表

      喻 兵 郝梓杰 羅裕升 朱珍民*

      1(湘潭大學 湖南 湘潭 411105)2(中國科學院計算技術研究所 北京 100080)

      0 引 言

      隨著社會不斷進步與發(fā)展,人們的生活質量不斷提高,健康話題越來越被人們所關注。然而,不良的生活方式是導致慢性非傳染性疾病不斷增加的重要因素,其中,飲食方面尤為突出。因此,注重飲食的合理性和健康性,才能確保和維持人體中必需營養(yǎng)素的平衡性,避免慢性病的發(fā)生[1],從而提高人的壽命和健康水平。

      如何為人們提供合理的飲食方案便成為世界各地營養(yǎng)學家的職責。如今,由于營養(yǎng)學家人數(shù)有限且行醫(yī)水平參差不齊,人們想要便捷地了解自己的飲食狀態(tài)并不方便。但是隨著移動互聯(lián)網產業(yè)的興起,各種推薦系統(tǒng)應運而生[2],作用于不同應用的場景。最近幾年也有學者嘗試將推薦算法應用在飲食推薦中,例如:2012年,北京大學的孔令愷等[3]在傳統(tǒng)的協(xié)同過濾基礎上引入遺忘曲線和修改權重來修改菜品的統(tǒng)計值,然后運用相關算法計算出用戶之間的相似度,從而以相似用戶的下單數(shù)據當作該用戶的推薦依據;同年,北京大學的陳曦等[4]充分利用智能手機感知周圍情境信息的功能,設計了一個基于Android移動終端的結合地理位置、時間、美食特點和用戶個人信息的推薦系統(tǒng);2015年,電子科技大學的趙恒等[5]提出了一種基于LBS的本地美食推薦系統(tǒng),該系統(tǒng)基于地理位置和混合推送策略為用戶進行推薦;2016年,盛實旺等[6]基于改進的Apriori算法進行用戶的飲食愛好分析,實現(xiàn)個性化推薦。

      近幾年飲食推薦的研究,基本是基于內容、關聯(lián)規(guī)則和協(xié)同過濾的推薦,旨在挖掘用戶的喜好并以提高點擊轉化率和商業(yè)價值為目的,在健康飲食推薦方面的研究依然十分匱乏。故此,本文提出一種合理有效的多維度飲食推薦方法,從而彌補在健康飲食推薦方面的不足。

      1 菜品特征

      本文菜品數(shù)據集包含中華菜系、疾病調養(yǎng)食譜、功能性調理膳食、人群營養(yǎng)膳食等幾大類菜譜。經過格式整理,菜品包含多個字段。將菜名、圖片、制作方法、制作提示、口感、推薦食用時間、營養(yǎng)解析、食物相克作為普通字段,這些字段無實際意義,僅僅作為菜品的展示信息;而工藝、口味、菜系、功效、主料、輔料、調料、營養(yǎng)成分作為核心字段,這些字段對用戶的飲食分析起到重要的作用,需要進行特征處理。本文重點在于判斷用戶的飲食是否符合健康標準,為了保證菜品數(shù)據能最大程度地反映用戶飲食結構,需要對菜品數(shù)據進行預處理與特征構造。

      1.1 菜品數(shù)據預處理

      通過數(shù)據統(tǒng)計分析,發(fā)現(xiàn)不同菜品的質量存在一定的差異,這可能導致各個成分含量存在較大的波動。為了提高本文推薦算法的準確率,故對所有數(shù)值型特征進行數(shù)據標準化預處理。

      由于菜品數(shù)據在特征空間內存在較多離群點,導致空間分布不均勻并且各個特征維度有不同的量綱。故此,本文對數(shù)值型特征先進行l(wèi)n函數(shù)平滑,再對平滑后的值進行Z-Score標準化處理,能讓數(shù)值特征的分布更加均勻,并且對各個數(shù)值型特征的量綱進行了統(tǒng)一。

      原始菜品數(shù)據集中,菜品質量不同導致營養(yǎng)成分含量不同,僅對“營養(yǎng)成分含量”特征進行統(tǒng)計無法刻畫菜品營養(yǎng)結構信息。為了消除菜品質量對營養(yǎng)結構分析的影響,本文采用1-范數(shù)正則化對營養(yǎng)成分含量特征進行正則化,目的在于獲取每個成分含量所占有營養(yǎng)成分含量的百分比,從而得到菜品營養(yǎng)結構的信息。由于營養(yǎng)元素分為宏量營養(yǎng)元素和微量營養(yǎng)元素,而微量元素含量的變化必然會被宏量元素含量掩蓋,導致模型無法捕捉到微量元素的特征。為了解決宏量元素與微量元素含量差距過大的問題,使用Max-Min標準化,再正則化,能夠更準確地刻畫菜品的營養(yǎng)成分。

      1.2 菜品特征構造

      在CTR預估場景中,為了提高模型預測的準確率,常常將數(shù)值型特征轉換為離散型特征,主要原因是特征離散化后對特征的表達更加合理。比如對于年齡特征,可能將20~30歲區(qū)間作為同一個離散值更合理,因為人們不會因為增加了1歲而改變興趣愛好,同時也會增強模型對數(shù)據異常值的魯棒性。

      本文對用戶的口味偏好進行挖掘,需要將“調料成分含量”做進一步的特征構造。為了對用戶口味偏好進行更好的建模,本文采用GBDT算法[7]對“調料成分含量”特征進行離散化,將原始的調料成分特征作為GBDT的輸入,口味特征作為label訓練模型,最終得到150個特征個數(shù)。GBDT特征構造的原理步驟如下:

      (1) 利用菜品原始調料成分作為特征和口味作為訓練標簽,進行GBDT特征訓練;

      (2) 訓練完成后,將訓練樣本輸入GBDT中,得到樣本在每棵樹的葉子節(jié)點的編號,再對該編號進行one-hot編碼;

      (3) 將第二步得到的所有one-hot編碼拼接成一組新的離散化特征(特征長度為所有葉節(jié)點的個數(shù))。

      通過數(shù)據預處理和特征離散化,得到了菜品數(shù)據集的全部特征,共分為7組特征,其中前3個特征組為原始特征,4、5特征組為經過平滑和標準化后的數(shù)值型特征,6特征組為營養(yǎng)成分含量歸一化和正則化后的特征值,7特征組為調料成分經過GBDT模型離散化后的值,具體的特征列表如表1所示。

      表1 菜品特征列表

      對菜品進行數(shù)據分析,能夠將菜品這個抽象的事物進行數(shù)字化或結構化的表征,使推薦算法能有效地猜測用戶對菜品的所需和所愛。

      2 多維度推薦算法

      前面簡單提到,大部分學者的飲食推薦工作主要以結合手機定位、社交網絡等多維度的外部特征,從而最大化用戶的點擊率。與以最大化點擊率為目標的個性化推薦算法不同,本文推薦算法是以調節(jié)用戶飲食結構為主,口味挖掘為輔。因此,算法并未涉及到協(xié)同過濾等[8]傳統(tǒng)的推薦技術,因為以最大化點擊率為目標的推薦算法很大概率不符合健康標準。本文旨在基于用戶畫像、飲食記錄、即時情境3種方式對用戶進行飲食推薦,從而使用戶飲食結構合理化。

      2.1 基于用戶畫像的推薦算法

      用戶畫像就是根據用戶的人口屬性、偏好習慣和行為信息而抽象出來的標簽化畫像[9]。基于該類特征可以準確定義不同用戶的營養(yǎng)成分含量合理攝入區(qū)間的差異性。本文將用戶畫像定義為年齡、性別、身高、體重、過敏源、人群、疾病7個方面,其中人群包含7類:普通人群、老人、孕婦、乳母、嬰兒、幼兒、青少年;疾病包含6類:高血壓、高血脂、糖尿病、冠心病、脂肪肝、肝硬化。基于用戶畫像的推薦方式是確定性算法,可以形式化為:

      y1=H(Df,Cf)

      (1)

      y2=G(y1,Qf,BMI)

      (2)

      y3=G(y2,Af)

      (3)

      式中:Df表示疾病特征,Cf表示人群特征,Qf表示歷史攝入量,BMI表示體質指數(shù),Af表示人體過敏原。通過形式化的表達可知,本推薦方式可分為3個步驟進行,從而產生最終的推薦列表y3,算法步驟可描述如下:

      (1) 根據用戶的疾病特征和人群特征的營養(yǎng)成分合理攝入區(qū)間進行菜品過濾,得到列表y1;

      (2) 先對用戶近期的菜品進行未達標和超標元素的統(tǒng)計,再對未達標和超標列表對y1進行不滿足條件菜品過濾,然后根據BMI指數(shù)對脂肪含量極端值進行過濾,得到列表y2;

      (3) 最后根據主料、輔料、調料成分含量,將推薦列表y2中具有過敏原的菜品數(shù)據進行過濾,產生最終推薦給用戶的菜品列表y3。

      通過上述算法,以用戶畫像為依據,判斷用戶近期飲食是否符合該畫像的膳食指南,從而可以推薦最滿足該用戶身體狀態(tài)的菜品列表。

      2.2 基于飲食記錄的推薦算法

      飲食記錄是用戶在本實驗平臺上操作的所有行為記錄,比如食用、喜歡、不喜歡等,該類特征可以有效挖掘用戶的飲食偏好,從而判斷用戶的營養(yǎng)結構是否合理并且挖掘出用戶喜愛的口味。

      2.2.1基于營養(yǎng)結構的推薦算法

      在營養(yǎng)結構挖掘中,聚類與分類的不同在于,聚類所要求劃分的類是未知的,根據信息相似度進行信息聚類;而分類是每個樣本數(shù)據已有類標識,然后將該對象歸為對應的類中。因此,本文通過聚類的方法將包含相似營養(yǎng)成分的菜品聚在相同的簇內,達到分類的效果。算法步驟如下:

      (1) 將所有菜品數(shù)據按表2中的4、6特征組進行聚類,簇數(shù)可以調整;

      (2) 判定該用戶最近K次食用的菜品,統(tǒng)計其簇數(shù)分布;

      (3) 推薦該用戶食用簇數(shù)最少的簇內食物,目前采用隨機推薦。

      2.2.2基于用戶口味的推薦算法

      VDM定義如下:令mu,a表示在屬性u上取值為a的樣本數(shù),mu,a,i表示第i個樣本簇中屬性u上取值為a的樣本數(shù),k為樣本簇數(shù),則屬性u上兩個離散值a與b直接的VDM距離公式如下:

      (4)

      類VDM定義如下:對于每個用戶來說,mu,a表示所有食用的食物中屬性u上取值為a的菜品數(shù),mu表示所有食用的食物中具有屬性u的菜品數(shù),所以類VDM距離公式如下:

      (5)

      基于上述的類別型特征距離計算方法,再結合傳統(tǒng)的數(shù)值型特征距離計算方法,便可以對菜品數(shù)據進行距離計算,從而挖掘出相似口味的食物??谖锻诰蛩惴ú襟E如下:

      (1) 將所有菜品數(shù)據特征進行表示,查詢該用戶最近的M次飲食記錄,利用本文提出的類別型距離計算公式計算各個類別間的距離;

      (2) 在全集菜品中,以距離遠近為標準選擇口味最相似的N個菜品進行推薦。

      上述兩種算法都是依據用戶的飲食記錄,產生不同的推薦列表,分別滿足用戶營養(yǎng)均衡需求和用戶口味偏好的需求。

      2.3 基于即時情境的推薦算法

      前兩種推薦算法主要側重于用戶屬性和歷史記錄推斷“用戶應該吃什么”和“用戶可能愛吃什么”。但是依據靜態(tài)特征所做出的判斷,往往沒有考慮到即時情境的影響。本文將此時的時間、此時的運動消耗作為特征,提出一種即時情境的推薦方式。

      本文將飲食時間劃分成早、中、晚3個時間段,運動量劃分成低、中、高3個等級(基于運動步數(shù)劃分),并且用戶的飲食熱量含量應該隨著時間中、早、晚和運動量高、中、低依次遞減。將用戶的即時狀態(tài)編碼成兩位的字符,例如“00”代表此時是晚上并且用戶運動量低,需求等級為0,此時需要最低熱量的食物即可;“22”代表此時是中午并且運動量高,需求等級為4,此時需要最高熱量的食物比較合適。該推薦算法步驟如下:

      (1) 獲取用戶特征、用戶近期飲食的菜品以及用戶飲食的行為;

      (2) 依據用戶特征、用戶近期飲食的菜品特征,采用上述用戶畫像推薦算法得到推薦列表y1;

      (3) 依據用戶近期飲食行為,采用上述飲食記錄推薦算法得到推薦列表y2;

      (4) 獲取用戶當前時間與運動步數(shù),將用戶的即時狀態(tài)進行編碼;

      (5) 根據用戶的編碼,依次在y1和y2列表中返回與用戶熱量需求等級最相近的菜品。

      該推薦方法與前兩種推薦方法屬于遞進關系,即在前兩種推薦列表的基礎上考慮了即時情境對飲食的影響,將時間和用戶運動量特征作為外部特征對前兩種推薦列表進行重排序,產生菜品列表。

      3 實驗結果與分析

      3.1 基于用戶畫像的實驗分析

      依據營養(yǎng)學會針對不同疾病和人群的膳食營養(yǎng)指南,制訂了各個營養(yǎng)攝入量規(guī)則。其中不同人群、不同病種的膳食指南可簡化抽象如表2所示。

      表2 不同人群和不同疾病膳食指南概括

      本實驗的具體步驟如下:

      (1) 隨機模擬不同的用戶畫像;

      (2) 根據模擬用戶的疾病、人群特征在全集菜品中初步篩選出所有符合該用戶特征的菜品;

      (3) 根據該用戶的近期飲食記錄和BMI值,并按規(guī)則對菜品進行二次篩選;

      (4) 過濾過敏源,產生最終符合條件的菜品進行推薦。

      基于用戶畫像的推薦是基于領域知識設定規(guī)則的推薦。本研究共進行了50次不同用戶畫像的隨機模型實驗,通過對各類用戶畫像的推薦菜品進行原始營養(yǎng)元素含量數(shù)據的均值統(tǒng)計,并與全集菜品的相關營養(yǎng)元素含量的均值統(tǒng)計值進行對比;針對不同疾病和不同人群,模擬用戶1和用戶2,假設用戶1是一位患有高血壓的孕婦,用戶2是一位患有高血壓的老人;分別列舉兩組推薦菜品的統(tǒng)計信息,統(tǒng)計其相關營養(yǎng)元素含量進行比較,實驗結果如圖1和圖2所示。

      圖1 高血壓推薦菜品與全集菜品的營養(yǎng)元素對比

      圖2 高血脂推薦菜品與全集菜品的營養(yǎng)元素對比

      根據BMI指數(shù)對菜品數(shù)據中“脂肪含量”高于或低于一定閾值的菜品進行過濾,從而進一步產生合理的推薦列表。針對上述高血壓孕婦的案例,模擬用戶3和用戶4,其BMI指數(shù)分別高于正常值和低于正常值,對比營養(yǎng)元素變化。實驗結果如圖3和圖4所示。

      圖3 雙重條件改變時營養(yǎng)元素含量變化

      圖4 BMI指標變化時營養(yǎng)元素含量變化

      將圖1、圖2與表2作對比可知,表2的所有指標,均符合膳食指南建議,從而證明了本推薦算法對于單一人群或疾病特征具有有效性。

      由圖3可知,在雙重條件控制下,本算法依然可以返回相對合理的菜品推薦列表。在關鍵營養(yǎng)元素上,由于人群特征的不同而導致其含量不同,例如“葉酸含量”和“碘含量”在高血壓孕婦推薦菜品相比于高血壓老人推薦菜品會有一倍以上的提升,同時也能保證“纖維素含量”、“維生素含量”等均保持較高的水平。

      由圖4可知,在BMI指數(shù)過高時,推薦菜品的平均脂肪含量會相對下降,而在BMI指數(shù)過低時,推薦菜品的平均脂肪含量會相對上升,并且對于疾病和人群特征的關鍵營養(yǎng)元素的含量沒有發(fā)生太大變化,依然符合膳食指南標準,從而證明了本推薦策略的有效性。

      3.2 基于用戶飲食記錄的實驗分析

      3.2.1營養(yǎng)結構實驗分析

      本文根據用戶最近飲食記錄,對菜品進行聚類分析。聚類性能度量的方法大致分為兩類:(1) 人工標注的外部指標;(2) 內部指標。因為本數(shù)據集中的所有菜品數(shù)據均缺少營養(yǎng)結構標注,所以本研究采用內部指標作為聚類算法效果的度量指標。假設某聚類算法對數(shù)據集的簇劃分為C={C1,C2,…,Ck},則有如下定義:

      (6)

      diam(C)=max1≤i≤j≤|C|dist(xi,xj)

      (7)

      dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,xj)

      (8)

      dcen(Ci,Cj)=dist(μi,μj)

      (9)

      式中:dist()函數(shù)代表兩個實例之間的距離計算公式;μ代表簇C的中心點,avg(C)表示簇C內樣本間的平均距離,diam(C)表示簇C內樣本間的最遠距離,dmin(Ci,Cj)表示簇Ci和Cj最近樣本間的距離,dcen(Ci,Cj)表示簇Ci和Cj中心點間的距離?;谏鲜?,可以導出下面兩個常用的聚類性能度量內部指標,DBI值越小越好,DI值越大越好。

      1) DB指數(shù)DBI(Davies-Bouldin Index):

      (10)

      2) Dunn指數(shù)DI(Dunn Index):

      (11)

      本文分別考慮K-means[10]和DBSCAN[11]兩種不同的聚類算法。K-means算法是一種無監(jiān)督的聚類算法,它被稱為K-平均,由于聚類效果不錯,被廣泛使用。DBSCAN算法是一種基于密度空間的聚類方法,它不易受到噪聲樣本的干擾,可以有效地分離出噪聲樣本。本文將兩種算法的聚類簇數(shù)控制在3、5、7個,進行度量指標的對比。實驗結果如圖5和圖6所示。

      圖5 K-means和DBSCAN在DBI指標對比

      圖6 K-means和DBSCAN在DI指標對比

      當cluster=5時K-means算法的DBI指數(shù)略差于DBSCAN,其余指標均優(yōu)于DBSCAN算法。故本文采用K-means算法進行營養(yǎng)結構分析,進而為用戶進行合理的膳食推薦。本文的特征達到60維,無法直接進行可視化效果展示,故經PCA降維,cluster=5時,K-means與DBSCAN的聚類效果比較如圖7所示,左側為K-means效果,右側為DBSCAN效果。

      圖7 K-means和DBSCAN的聚類效果展示

      3.2.2口味偏好實驗分析

      本文采用類VDM計算特征距離的相似度,挖掘出與用戶飲食記錄最相似的食物進行推薦。本文共進行了50組模擬實驗,分別對類VDM距離計算相似度和傳統(tǒng)歐式距離計算相似度進行對比。每次實驗輸入一組菜品代表用戶歷史飲食記錄(分別設置歷史記錄長度為1、3、5進行實驗),兩種相似度計算方法分別返回最相似的Top10菜品,并由5位志愿者對結果進行標注,準確率如圖8所示。

      圖8 兩種距離計算方式準確率對比

      由實驗結果可知,在僅考慮1個歷史飲食記錄時,本方法和基于歐氏距離的計算方法沒有任何差別,返回相同的結果。但隨著歷史記錄的增長,本方法在類別型特征相似度計算上相比與原始方法有了較大優(yōu)勢,在歷史長度為5時,準確率可以達到67.4%,故驗證了本方法的有效性。

      4 結 語

      在快節(jié)奏生活和高強度工作下,人們的健康狀態(tài)難以得到保障,本文在充分掌握了各種人群膳食指南的基礎上,利用多種數(shù)據處理方法、GBDT自動特征構造和不同聚類算法等,提出了一種基于用戶畫像、飲食記錄、即時情境的飲食推薦算法,旨在幫助人們改善飲食結構,合理化不同營養(yǎng)元素的攝入量,從而達到健康飲食的目的。本文存在的不足在于用戶的飲食記錄行為數(shù)量不足,缺少線上用戶飲食數(shù)據進行對比。本文后續(xù)工作將使實驗平臺上線獲取更多的用戶飲食數(shù)據進行迭代優(yōu)化,使得推薦效果更加準確;基于用戶畫像的推薦和基于飲食記錄的推薦相結合,對畫像產生的推薦列表根據口味偏好進行排序;在基于即時情境的推薦方面做很多深入的研究,例如可以與無創(chuàng)生理指標檢測方面的算法進行融合,挖掘更多的即時情境等。本文具有重要的實際應用價值,可幫助人們改善飲食結構、預防慢性疾病的發(fā)生,提高全民的健康素養(yǎng)。

      猜你喜歡
      營養(yǎng)元素畫像列表
      巧用列表來推理
      威猛的畫像
      學習運用列表法
      “00后”畫像
      畫像
      擴列吧
      衡水市不同功能區(qū)土壤營養(yǎng)元素的比較
      X射線熒光光譜法測定奶粉中的營養(yǎng)元素
      不含3-圈的1-平面圖的列表邊染色與列表全染色
      潛行與畫像
      南安市| 怀仁县| 钦州市| 西平县| 朝阳县| 丘北县| 凌云县| 固镇县| 富蕴县| 舒城县| 湟中县| 会昌县| 府谷县| 宁化县| 延川县| 青田县| 平武县| 鱼台县| 高尔夫| 老河口市| 班玛县| 利川市| 红原县| 凤山市| 安徽省| 图片| 广德县| 民乐县| 临漳县| 奉化市| 鱼台县| 泽库县| 盐城市| 临邑县| 华池县| 丹凤县| 玉门市| 墨竹工卡县| 裕民县| 新晃| 蒙自县|