- 1 -
中国科技论文在线
智能空间中用户饮食偏好获取技术研究与
应用#
樊祥超,於志文,耿会东,王海鹏,周兴社*
基金项目:国家自然科学基金项目 60803044 和 60903125; 国家教育部博士点基金新教师课题资助项目
(20070699014)
作者简介:樊祥超(1987-),男,硕士生,主要研究方向:普适计算
(西北工业大学计算机学院,西安 710129)
摘要:本文就智能空间中的用户饮食偏好获取及饮食推荐方面设计了一套系统。该系统通过
压力传感器采集用户饮食数据,利用“动态分割”数据的方法获取用户饮食偏好上下文,并建
立了基于相似度的食物分类模型。实验结果表明,该系统能够根据用户饮食记录获取用户饮
食偏好,并能够通过食物相似度计算进行食物推荐,具有一定的实用价值。
关键词: 智能空间;压力传感器;动态分割;偏好获取;饮食推荐
中图分类号:TP399
Capturing User Diet Preferences and It’s Application in
Smart Space
FAN Xiangchao, YU Zhiwen, GENG Huidong, WANG Haipeng, ZHOU Xingshe
(School of Computer Science, Northwestern Polytechnical University, Xi’an 710129)
Abstract: A system is designed for preferences acquisition and recommendation of user diet in smart
space. The system uses pressure sensors to gain user’s diet data, and captures user diet preferences by
dynamic partition of sensor data, and also establishes a food category model based on similarity.
Experimental results show that, the system is of practical value in user diet preference acquisition
through user’s diet data and diet recommendation via computation of foods’ similarity.
Key words: smart space; pressure sensor; dynamic partition; preference acquisition; diet
recommendation
0 引言
由于当前社会生活节奏的加快,各种不合理的生活习惯导致人们的健康面临巨大的挑
战,特别是不合理的膳食结构和营养结构,对人们的身体健康构成严重的威胁。合理的膳食
是保证人的身体健康、提高人的生活质量的必要途径和重要手段。随着科学技术的高速发展,
各种用来辅助人们生活的设备和技术应运而生,以提高人们的生活水平。普适计算[1]是一种
新兴计算模式,它将信息空间和物理空间融合起来,提供随时随地随用户需要的数字服务。
智能空间[2]是普适计算研究领域之一。智能空间里嵌入了很多计算、信息设备和传感设备,
在这个空间中,用户能够与周围的设备进行和谐的交互。
“智能家居”是智能空间的一种。通过在智能家居环境中布设的各种设备及传感器等,来
感知并获取与用户相关的上下文信息[3]。本文所设计系统是针对智能家居中的用户饮食场景
而设计的。通过压力传感器,系统自动记录用户每次的饮食情况;根据用户饮食历史记录,
系统能够获取到用户的个人喜好,从而为用户做出个性化饮食推荐。该系统的意义在于,系
统能够从用户的日常的饮食活动中动态获取用户饮食偏好信息,并智能地向用户做出饮食推
荐,避免了用户的直接参与,增强了系统与现实环境的交互性和透明性。因此,该系统在改
善用户膳食和提高效率等方面具有较高的实用价值。
- 2 -
中国科技论文在线
就目前所知,现在大多数饮食推荐的研究都需要用户的直接参与,而且大都把重点放在
饮食推荐或营养推荐自身之上,而在自动获取用户饮食偏好方面研究的却很少。本文在用户
饮食偏好获取方面做了初步的研究,采用压力传感器来获取用户饮食偏好。单就饮食推荐本
身来说,推荐模型很多,算法不一。国外有人设计了基于用户信息的医疗服务饮食推荐系统
[4],提供了可定制的饮食推荐服务;国内也有人设计了基于本体的营养推荐系统[5]……本文
在该部分设计相对简单,建立了一种食物分类模型,当前只提供了基于用户偏好的饮食推荐,
根据压力传感器获取的用户饮食偏好信息向用户推荐食物。
1 用户饮食偏好的获取关键技术
所谓用户饮食偏好,就是用户在一定时间段内对某样食物或某类食物的食用量较多,通
过计算该段时间内用户对不同食物的食用量即可表示。系统通过布置在盘碟底部的压力传感
器,可以采集到用户饮食过程中的传感器数据。通过对这些传感器数据的处理,就可获取用
户一次饮食过程中对食物的食用情况。
由于用户饮食过程的实时性和动态性,而且压力传感器对压力十分敏感,具体呈现为压
力传感器的输出数值在一定范围内变化,如果一个外在的力偶然加于盘碟之下的压力传感器
之上,都会引起输出数据较大的波动。这就决定了在实时获取的传感器数据中可能存在“噪
点”,即由于外界干扰而导致的不必要的传感器数据,因此,系统必须具有动态处理的能力。
算法的变量(参数)列表如下:
表 1 变量(参数)列表
Tab. 1 Table of variables(parameters)
变量或参数 类型 含义
receiveNeed 布尔类型 是否需要从传感器接收新数据
unresolved 布尔类型 上次接收的传感器数据是否已处理
arrayList 线性表 缓冲数组,存储从每个盘碟获取的传感器数据(包括时间和传
感器数值属性)
s 线性表 分割段数组,存储分割段数据,每个分割段包含开始 start、结
束 end、该段均值 mean、时间 when、食用量 howMuch 等属性
鉴于饮食过程中盘碟内物体重量所表现出的压力的动态变化,包括盘碟之上物体自身的
变化以及传感器数据的不稳定性,本文采用“动态分割”[6]的方法和求平均的方法,将传感器
存储于动态数组中,并将其分割成不同的段,每一段对应一定时间内较为稳定的压力传感器
数据。通过对每个段内的传感器数据求平均,就可以得到较为可靠的压力传感器数据;通过
计算相邻两个分割段的均值差,就可以求出物体的变化量。
“动态分割”采用“前向窥探”机制,也就是说,当要判断一个传感器数据是否属于当前段
时,首先要判断随后接收的两个传感器数据与该段的均值的偏差是否在阈值范围内(阈值为
系统定的偏差最大值),或者相邻两个传感器数据的偏差是否在阈值范围内,分情况不同处
理,从而能够很好的分段,并且同时处理掉“噪点”。
用户饮食偏好获取与处理算法思想可表述为:
(1)接收一次传感器数据;
(2)初始化一个分割段:start=0,end=0,mean 和 when 分别赋值为步骤(1)存放在
arrayList 中的传感器数据的数值属性和时间属性,将其存入 s,并设 receiveNeed=false,
unresolved=true,数据分割段跟踪值 k=0;传感器数据跟踪值 i=1;
(3)判断 receiveNeed 是否为真,若为真,则执行(1);
- 3 -
中国科技论文在线
(4)如果 unresolved 为假,执行(5);否则,执行(6);
(5)如果 arrayList 中的第 i 个(从 0 计数)传感器数据的数值与 s 中第 k 个段的均值
之差的绝对值小于或等于阈值,则将第 k 段的 end 属性设置为 i,并求出该分割段的均值赋
给该段的 mean 属性;否则,则测试第 i 个传感器数据的数值与低 i-1 个的差的绝对值是否小
于或等于阈值,若成立,则与上一步做同样的处理;否则,置 unresolved 为真。将 receiveNeed
赋值为真,i 自增 1;
(6)如果 arrayList 中的第 i 个(从 0 计数)传感器数据的数值与 s 中第 k 个段的均值
之差的绝对值大于阈值,执行(7);否则;执行(8);
(7)k 自增 1;定义一个新的分割段,将其 start 属性和 end 属性均设置为 i-1,mean 属
性和 when 属性分别赋值为 arrayList 中第 i-1 个传感器数据的数值属性和时间属性,并将其
加入 s;传输一次处理结果(用于信息显示或存储);设置 unresolved 和 receiveNeed 均为假;
(8)将 arrayList 中的第 i-1 个删掉,并将 unresolved 和 receiveNeed 设为假;
(9)返回(1)。
2 饮食推荐模型与算法
食物建模
(1)食物分类模型
每种食物都有主料、味道、做法三个属性,每个属性下面又有一些子属性。本文确定食
物模型如图 1 所示。整个模型基本为树状结构,根节点为“食物”。
食物
主料
荤菜
味道
做法
100
100
100
素菜
10
10
禽肉类
蛋类 水产类
畜肉类
奶类
2
2
2
2
2
花叶类
根茎类
果实类 坚果种子类
谷物淀
粉类
菌藻类2
2
2 2 2
2
煮 炒 烤
炸
腌
烫
蒸
生
凉拌
10
1010
10 10
10
10
10
酸 甜 苦 辣 咸
鲜10
10
10
10 10
10
瓜类
豆类及
其制品
1 1
黄瓜 豆腐
西红柿
1
11
酸甜 酸辣 酸咸 香辣 麻辣 香咸
2 2 2
图 1 食物分类模型
Fig. 1 Food classification model
(2)路径距离的确定
根据食物或属性之间的差别程度,从根节点“食物”开始,各层次路径长度依次设置为
100、10、2、1、1,如图 4 所示。路径距离值越大,说明食物或属性之间的相似度越小,差
别程度也就越大。
- 4 -
中国科技论文在线
饮食推荐
(1)相似度计算
这里所谓相似度,就是两种食物之间的相似程度。由于每种食物都基本上是由主料、味
道和做法组成,因此,要确定两种食物之间的相似度,就必须首先计算出二者分别在主料、
味道和做法上的相似度,然后将所得三个相似度相加,就可以得到这两种食物之间的相似度。
本文设置相似度基准值 base 为 。
关于味道相似度,由于味道及其之下的节点并不是构成简单的树形结构,而是有所交叉,因
此,与主料相似度的计算方式有所不同。为了处理上的方便,本文将该部分改造成为一个树
形结构,即节点之下可以有相同的叶子节点这样,就可以用相同的处理方式来计算相似度。
用 food(material, taste,way)来表示一种食物,简写为 f(m,t,w),并用 similarity
(m1,m2)、similarity(t1,t2)和 similarity(w1,w2)分别表示两种食物之间的原料相
似度、味道相似度和做法相似度。两种食物在食物分类模型中的的原料相似链、味道相似链、
做法相似链分别表示为(P1,P2,……,Pi)、(Q1,Q2,……,Qj)、(R1,R2,……,
Rk)。
两种食物 f1(m1,t1,w1)和 f2(m2,t2,w2)之间的相似度 similarity(f1,f2)计
算方式可描述如下:
s ( 1, 2) s ( 1, 2) s ( 1, 2) s ( 1, 2)imilarity f f imilarity m m imilarity t t imilarity w w ,其中
1
1
1
similarity m1 m2 base /
similarity t1 t2 base /
similarity w1 w2 base /
i
n
n
j
n
n
k
n
n
P
Q
R
( , )
( , )
( , )
(2)食物推荐
根据用户历史饮食记录,系统能够找出用户对曾经食用过的食物的食用量;通过对食用
量排序,可以找到用户最喜欢食用的几种食物。以这几种食物为参考,对其它食物进行相似
度分析,找到与这几种食物最相近的食物推荐给用户,从而完成推荐功能。
3 系统结构设计
图 2 系统结构图
Fig. 2 Structure of system
- 5 -
中国科技论文在线
物理层
压力传感器部署方式如图 3 所示。每个盘碟底部放置三个压力传感器,三个传感器大致
呈等边三角形放置,以便盘碟以及盘上的物体的重量能均匀地压于三个传感器之上。物体的
重量呈现为三个压力传感器数值之和。网由内置数据采集模块和模/数转换模块,将从压力
传感器获得的数据转换为电压值;PC 与网由之间根据网由提供的通信协议,通过串口进行
通信。
图 3 压力传感器部署方案
Fig. 3 Deployment of press sensors
数据处理层
(1)数据采集:理论上,盘碟上的物体的重量与传感器输出的电压值为线性关系。由
于本文的目标是获取用户在饮食过程中的偏好信息,即用户对某种菜肴的食用量的变化,因
此实时采集该过程中传感器的数据便成为必要。通过在 PC 上进行编程可实现传感器数据的
实时获取,从而为后续的数据处理做准备。
(2)数据处理:数据处理主要对数据层提供的原始数据进行处理,保证实时获取的传
感器数据的可靠性和准确性。根据第二部分所述方法对传感器数据进行数据处理,获取较为
准确的用户饮食情况。
应用层
根据本文第三部分所述食物分类模型、相似度计算算法以及推荐算法进行软件编程,实
现特定的功能,如信息显示、饮食推荐等。
4 实验结果和讨论
系统采用两个盘碟作为用户饮食记录来源,6 个 FlexiForce 压力传感器。共收集 84 种食
物资料以供饮食推荐使用。
偏好获取阶段
传感器数据在一定时间内并不会发生剧烈波动,而是缓慢变化,除非产生外界干扰,而
且在用户饮食过程中,盘碟上食物所呈现的传感器数据值在较短的时间内具有一定的连续
性,不会产生太大的漂移。因此,本文设定传感器数据变化的阈值为 80,即传感器数据变
化在阈值之内的,都视为盘碟上食物没有发生变化。
- 6 -
中国科技论文在线
表2 物体的重量(单位:g)
Tab. 2 Weight of things(unit:g)
物体 苹果1 苹果2 苹果3 透明胶 空瓶 花生 笔
重量 155 196 205 10 24 1 8
根据第 2 章所述原理,本文做实验如下:选取 7 个物体,如表 2 所示;将这 7 个物体在
实验之前均放置在已经布置好的盘碟之中;启动系统,按表 2 中物体顺序依次将物体从盘碟
中取出,获取传感器数据并处理。
对获取的 102 个传感器数据,用 gnuplot graph 工具作图,如图 4 所示:
图 4 不同物体传感器数据变化图
The graph of sensor data of different things
分段、去噪处理之后的实验结果如表 3 所示:
表 3 实验结果
Tab. 3 The result of experiment
分割段开始 分割段结束 均值 段间压力差绝对值
0 11
13 24
26 36
37 48
51 75
77 89
90 101
从实验结果中可以看出,系统没有识别出 1g 的花生,但对于其他几种食物,系统能够
很好的分段并识别出来。由于实验中所用压力传感器的不稳定性所致,所得分段之间的压力
差值与具体物体的重量并非完全对应。
食物推荐阶段
根据 (2)部分所描述的食物推荐算法,从获取的某用户 A 的历史饮食数据,可以
找出该用户最喜欢吃的几种食物,然后以这几种食物为参考,通过相似度分析,找出用户没
有吃过的相似度最大的几种食物,把它们推荐给用户。从推荐结果来看,运用基于相似度分
析的食物分类模型来对用户做饮食推荐,能够实现基本的推荐功能。同人为推荐的方式相比,
系统能够很快地根据相似度向用户推荐几种食物,而且所推荐的这几种食物与用户所喜好的
食物具有较大的相似性,省去了人的考虑时间;但是由于食物信息的不完备性以及用户好恶
程度的改变,系统所推荐的食物并不能完全符合用户的意向,有必要进行适当的扩展食谱和
- 7 -
中国科技论文在线
联想推荐。
讨论
食物推荐不仅需要考虑用户的饮食偏好,还要考虑用户的身体状况,例如用户有糖尿病,
哪些食物不宜吃,或者不宜多吃,可以吃哪些食物。因此,在系统中要建立用户信息库,食
物库中也要加入营养信息,这样,在进行食物推荐时,就可以综合考虑多个方面的因素,从
而提供更为个性化的饮食服务。
5 结论
本文设计了用户偏好获取及饮食推荐系统。在偏好获取阶段,采用将传感器数据分割成
段及其段内求平均的方法来处理传感器数据的不稳定性,同时获取用户饮食过程中的食物食
用情况;在饮食推荐阶段,根据建立的食物分类模型,通过食物之间的相似度分析,实现向
用户推荐食物的功能。目前系统还有很多不足之处,像压力传感器数据不稳定、食物推荐方
式单一等,有待改进或解决。未来主要工作是针对食物推荐做进一步研究,在推荐中融入营
养和用户身体状况信息。
[参考文献] (References)
[1] Weiser M. The computer for the twenty-first century[J]. Scientific American , 1991, 265 (3) : 94-104
[2] R. M. Yusupov, A. L. Ronzhin. From Smart Devices to Smart Space[J]. HERALD OF THE RUSSIAN
ACADEMY OF SCIENCES, 2010, 80(1):63-68
[3] 张桂英,周兴社,倪红波,周珊丹,苗强.老年人看护系统中常识推理的研究[J].计算机工程,2010,
36(4):171-173
[4] Dimitar H. Stefanov, Zeungnam Bien, Won-Chul Bang. The Smart House for Older Persons and Persons
With Physical Disabilities: Structure, Technology Arrangements, and Perspectives[J]. IEEE TRANSACTIONS
ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, 2004, 12(2):228-250
[5] 刘浩. 基于本体的个性化营养推荐系统[D].天津大学,2008
[6] Holger Junker, Oliver Amft, Paul Lukowicz, Gerhard Troster. Gesture spotting with body-worn inertial
sensors to detect user activities[J]. Pattern Recognition, 2008, 41:2010 – 2024