User Behavior Prediction Method Based on Fusion of CNN and Bi LSTM
With the growing demand for personalized services, it has become essential to predict people’s habits, needs, and preferences by analyzing human behavior patterns. In this paper, we explore the importance of classifying and predicting user behavior based on life log data and propose a user behavior prediction model TS-CNN-Bi LSTM that integrates a convolutional neural network (CNN) and bidirectional long short-term memory network (Bi LSTM). Twelve years of user life log data collected by Liu-Life Log is used as sample data. Considering the existence of users who do not disclose their location information in the life log data, two datasets with different feature combinations, DCP-Life Log and TS-Life Log, are constructed based on the same dataset. The model prediction performance is evaluated using different datasets. The experimental results show that the proposed model outperforms the benchmark model on both datasets regarding the macro-mean precision, recall, and F1 value, with an improvement of 2.23%, 1.30%, and 1.27%, respectively.
Life Logs
随着数字技术的进步,生活记录变得更加可行。生活日志的可能来源包括可穿戴相机、可穿戴传感器、智能手机和电脑。例如,生活日志可以是与他人交流的信息、GPS捕捉到的位置线索、生物传感器捕捉到的生理状态、数字相册、带有照片的博客文章和运动相机捕捉到的视频片段
通过生活日志对人类行为预测的意义是深化对个体生活方式和偏好的理解,从而为个人提供更加个性化、精准的服务和建议。目前的生活日志分析主要侧重于特定的短期目标,比如场景搜索、饮食监测、项目推荐等,这些功能对于改善生活质量有一定的帮助。然而,如果能够将生活日志分析延伸至对个人行为的长期趋势和心理特征的研究,其意义将更为深远。通过生活日志的持续记录和分析,发现个体的行为模式和习惯,揭示出隐藏在日常活动背后的心理动机和情感需求
虽然通过对生活日志进行行为预测具有很大的潜力,但也面临诸多挑战
与传统的基于生活日志数据集的文本分类方法不同,本文基于CNN与Bi LSTM融合的用户行为预测方法。首先,考虑到生活日志中的时间节点信息对于用户行为分类具有重要的影响。将时间因素考虑到特征选择中,使得模型更好地捕捉用户行为与时间的关系。其次,为克服不公开位置信息的用户可能带来的影响。构建了两种特征组合的数据集(包含位置信息和不包含位置信息),并用这两个数据集来评估模型性能。通过结合CNN和Bi LSTM模型,充分利用语义感知处理得到的特征,实现对用户行为活动的准确分类预测。
生活日志作为通过多媒体传感器被动采集和处理的反映生活经验的数据,受到了学术界和工业界的关注。生活日志是一种现象,人们可以用数字方式记录自己日常生活的不同细节,用于各种目的
人类行为的预测一直是一个特别活跃的研究课题。因为它在安全检测、健康分析、娱乐、个人大数据和人机交互等领域越来越重要
近年来学术界的研究人员发现深度学习算法能够更高效地开展分类工作,通过构建更深层次的网络结构,可以更好地提提高分类的准确度。Liu等
本文利用Liu-Life Log数据集进行日志分类预测的方法与应用。Liu-Life Log项目始于2011年,由我们的团队在过去12年中自主收集
Cluster |
Date |
Describe |
Address |
Behavior |
27 |
2011/12/18 Sunday 9:53:54 |
On the way to the new campus |
Suizhong County, Huludao City, Liaoning Province, China |
On road |
7 |
2012/2/5 Sunday 19:28:06 |
Wash the car outside. It’s super fine today. |
Binhe Road, Tiedong District, Siping City, Jilin Province, China |
Rest |
1 |
2012/5/1 Tuesday 17:51:03 |
The new president came in and appointed the conference to be held. |
Dongling District, Shenyang City, Liaoning Province, China |
Work in school |
62 |
2012/5/18 Friday 18:05:35 |
Company Meetings. |
Shenyang Railway Station |
Work outside |
54 |
2012/5/6 Sunday 18:30:49 |
The computer in the laboratory has been stripped of its shell. |
108 National Highway, Haidian District, Beijing, China |
Work in school |
为了给所提出的神经网络提供一定的数据维度,提高模型的精度,需要对生活日志系统采集的原始数据进行如下预处理。
在采集生活日志的过程中,由于系统故障或者用户提交原因,数据集中存在大量的空数据。此外,用户在使用它的时候不会坚持一个设定的时间来发布动态,而且它是不连续的。为了完成分类和预测任务,需要对来自Liu-Life Log的所有噪声数据进行清理。识别并处理数据集中的缺失空数据,采取删除策略删除特定格式和无意义的数据,去除重复数据、错误数据,保证数据的一致性和准确性。
考虑到用户隐私安全以及大多数用户并不愿意在生活日志中公布自己的位置信息。对Liu-Life Log数据集中提取分离出两种不同类型的数据集,分别是包含位置信息的DCP-Life Log和不包含位置信息的TS-Life Log。具体描述如
通过将图片和视频通过技术转成文本数据,与原本的文本信息结合作为网络模型特征,可以为网络模型提供更多样化、更丰富的特征表达。利用Youcai Zhang等开发的预训练深度学习模型RAM
特征组成 |
训练集/条 |
测试集/条 |
验证集/条 |
类别 |
|
DCP-Life log |
city, position, Describe, image_labels, video_labels, date |
9485 |
2000 |
2000 |
26 |
TS-Life Log |
Describe, image_labels, video_labels, date |
本文构建所提出的模型,能够对多模态生活日志中的用户行为进行活动分类。首先,使用Tokenizer分词器对文本进行分词和标记化,将文本转换为序列,每个单词对应一个标记。使用Embedding层将标记化的文本转换为词嵌入表示。然后经过处理的词向量通过CNN层,利用卷积层和池化层提取文本中的局部特征。这有助于模型捕捉文本中的重要信息和特征。接着提取的局部特征经过Bi LSTM层,用于建模文本中的上下文联系。Bi LSTM能够有效地处理时序数据,并捕捉长距离的依赖关系。通过CNN与Bi LSTM的结合,模型能够捕捉整个句子的全局关系,从而更好地理解文本的语义信息。最后,将得到的文本表示传入全连接层进行活动分类。通过Soft Max函数将分类结果映射到(0, 1)概率区间,输出对应的活动类别。
词嵌入是将单词或子词转换为向量表示的过程。在自然语言处理中,单词或子词通常被表示为一个高维度的稀疏向量,其中每个维度对应一个单词或子词的特征。例如,在一个包含100个单词的词表中,每个单词可以表示为一个大小为100的稀疏向量,其中只有一个维度为1,其余维度都为0。这种高维度的稀疏表示不仅浪费存储空间,而且难以计算单词之间的相似度。因此,词嵌入技术被用来将单词或子词映射到一个低维度的稠密向量空间中,从而可以更有效地表示和计算单词之间的相似度。
生活日志通常是由一系列单词或子词组成的,而分词器的任务就是将这些单词或子词从文本中分离出来,并将它们转换为计算机可以处理的数字表示。Tokenizer分词算法是将文本转换为单词或子词序列的过程。基于Tokenizer可以将文本转换成独立的token列表,进而转换成输入的向量成为计算机可以理解的输入形式。在分类任务中分词器和词嵌入技术通常是联合使用的,以将文本转换为计算机可以处理的数字表示。使用分词器将文本分成单词序列,然后使用词嵌入技术将每个单词表示为一个向量,最后将这些向量输入到神经网络中进行分类。
卷积神经网络–双向长短期记忆网络模型(TS-CNN-Bi LSTM)是一种融合了卷积神经网络和双向长短期记忆网络的深度学习模型。如
卷积层:由于其学习文本、图像和语音等数据中独特表征的能力,CNN越来越受欢迎。CNN中最重要的单元是卷积层,它利用卷积核对输入进行卷积操作。这种操作可以理解为一种过滤器的工作,它能够捕捉输入数据中的局部特征。随后,经过非线性激活函数的激活,使得卷积层能够更好地学习数据的抽象特征表达。
(1)
在本文中,卷积层采用整流线性单元(Re LU)来计算特征映射,其非线性函数定义为
(2)
池化层:卷积层输出的特征向量通常具有较高的维度,会给模型造成较大的运算压力。池化层主要负责对卷积层提取到的特征数据进行选择和过滤,可以降低卷积层获取的信息维度,这不仅可以缓解模型运算压力,而且可以防止模型出现过拟合现象。
常见的池化操作有三种,最大池化(Max Pooling)、最小池化(Minimum Pooling)和平均池化操作(Average Pooling),本文模型采用了最大池化。最大池化的原理是在输入数据的每个子区域中选择最大的特征值作为输出。具体而言,最大池化将输入数据分割成不重叠的区域(通常是矩形区域),然后在每个区域中选择最大的特征值。这样就可以减少数据的维度,保留最显著的特征。最大池化的公式可以表示为
(3)
其中 为输入数据的第i行、第j列的子区域, 表示子区域中的第p行、第q列的元素。
在Bi LSTM模型中,输入序列被拆分为两个方向,即正向和反向,然后在每个方向上构建一个LSTM单元。这种结构允许模型同时考虑到上下文信息,从而提高了模型的性能。将CNN的输出特征拼接在一起,形成一个更长的特征向量,然后将其传递给Bi LSTM。Bi LSTM模型结构可以通过以下公式表示
(4)
(5)
(6)
(7)
(8)
其中 、 、 分别为输入门、遗忘门、输出门的输出。 为细胞状态的更新, 为隐藏状态的更新。tanh和 为激活函数, 为逐个元素相乘运算。 为当前时间步的输入, 为上一个时间步的隐藏状态。 、 、 、 和 、 、 、 分别为输入/输出和隐藏状态的权重矩阵。 、 、 、 为偏执项。
在TS-CNN-Bi LSTM模型中,输出层由一个全连接层和一个Soft Max分类器组成。全连通层的每个节点都与上层的节点相连,以便从上层提取的特征可以合并。在全连接层的后面是Soft Max分类器,它将上层的输出转换为概率向量,其值表示当前样本所属类的概率。在多分类任务中,使用交叉熵损失函数作为模型的损失函数。如果标签是独热编码形式,通常使用Categorical Crossentropy。本文中使用的分类标签为整数形式(非独热编码),使用Sparse Categorical Crossentropy作为损失函数,计算公式如下
(9)
其中,y是真实标签的整数形式, 是模型的预测概率分布向量,i表示类别的索引。
层类型 |
参数名称 |
参数值 |
Embedding |
词向量维度 |
800 |
Conv1D |
卷积核数量 |
128 |
卷积核大小 |
4 |
|
激活函数 |
ReLU |
|
MaxPooling1D |
池化窗口大小 |
4 |
Dropout |
丢弃比率 |
0.1 |
Bidirectional LSTM |
隐藏单元个数 |
20 |
Dropout |
丢弃比率 |
0.1 |
Dense |
输出类别数 |
26 |
激活函数 |
Soft Max |
|
正则化器 |
L2 |
|
学习率 |
1e-3 |
TS-CNN-Bi LSTM模型首先使用了一个Embedding层,将输入的整数序列(每个整数代表一个词)映射成密集向量,其中输入维度为8000,输出维度为800,输入长度为80。接下来是一个Conv1D层,它包含了128个卷积核,每个卷积核的大小为2,激活函数为Re LU。该卷积层用于在序列数据上进行卷积操作。MaxPooling1D层对卷积层的输出进行下采样,池化窗口大小为4。Dropout层丢弃比率为0.1,用于在训练过程中随机丢弃部分神经元,以防止过拟合。双向LSTM层隐藏单元个数为20,它可以在两个方向上处理序列数据。最后一个Dropout层丢弃比率同样为0.1,用于防止过拟合。模型的最后一层是一个Dense层,输出类别数为训练集类别数量,激活函数为Soft Max,同时应用L2正则化器。这个全连接层用于输出模型的预测结果。学习率初始为1e − 3,优化方法选择使用Adam加快模型训练速度。具体参数如
在实验中,我们使用Keras来构建提议的网络结构,Keras是一个用Python编写的高级神经网络API,能够在Tensor Flow、CNTK或Theano上运行。实验选择了Tensor Flow作为后端。模型的训练和分类都是在一台配置为64位Windows操作系统的PC上进行的,该PC拥有2.20 GHz的CPU Inter Core i7-8750H、64GB RAM和16GB内存的NVIDIA QUADRO P5000显卡。
模型的训练采用了全监督的方式,使用交叉熵损失函数来衡量预测值与真实值之间的误差。梯度从Soft Max层反向传播到LSTM层。每一层的权重和偏差都是通过随机选择的值进行初始化的。为优化模型选用Adam优化器作为优化算法。在模型训练过程中使用回调操作提高训练效率。1) 早停法是一种常用的防止过拟合的方法,它会在模型的性能不再提升时停止训练,从而避免了模型在训练集上的过度拟合。设置监视的指标为验证集上的损失值,当验证集损失值不再下降时,训练将被提前停止,并且在停止训练时恢复模型的最佳权重。2) 学习率调整可以自动地降低学习率,以便更好地适应数据的变化。训练过程设置了监视的指标为验证集上的准确率,当验证集准确率不再提升时,学习率将按照给定的因子进行衰减,以帮助模型更好地收敛。
在收集人类活动日志数据时,经常会遇到不平衡的情况,数据集中各个类别的样本数量差异较大,其中某些类别的样本数量远远多于其他类别。举例来说,假设我们收集了一份人类活动日志数据集,用于识别人类的运动行为,包括走路、跑步、骑车和驾驶等。在这个数据集中,可能会发现走路这一类别的样本数量远远大于其他类别,因为走路是人们日常生活中最常见的活动之一。这种情况导致数据集呈现不平衡的状态。如果分类器将每个实例都预测为多数类,并使用总体分类精度来评估模型性能,可能会得到较高的准确率。但是,它不能很好地反映出模型在少数类上的表现。
为了解决这个问题,可以使用F-measure (F1 score),它同时考虑了假阳性和假阴性。F1 Score结合了两种测度,即“Precision”和“Recall”,它们都是基于正确识别样本总数来定义的。在信息检索领域,精确率指的是模型预测为正例的样本中有多少是真正的正例,而召回率指的是所有真实正例中有多少被模型正确地预测为正例。F1 Score综合考虑了这两个因素,因此是一种更全面、更平衡的性能度量指标。定义Precision和Recall为
(10)
(11)
其中TP、FP分别为真阳性和假阳性的数量,FN为假阴性的数量。F1 Score通过基于样本比例对类别进行加权来抵消类别中的不平衡。F1 Score公式如下
(12)
宏平均是对每个类别的性能指标进行平均,然后再求平均值。宏平均对每个类别的性能给予了相等的权重,不受样本数量不平衡的影响。在不平衡数据集中,使用宏平均可以更客观地评估模型对各个类别的性能表现。本文定义精确率的宏平均Macro-P、召回率的宏平均Macro-R以及F1 score的宏平均Macro-F1对模型进行评估
(13)
(14)
(15)
其中N表示类别数,i表示第i个类别。
为验证多卷积核尺寸的选取对活动分类最终效果的影响,将模型中的相关参数按照
使用不同尺寸卷积核的实验结果如
在实验1中,保持CNN通道部分的参数不变,改变Bi LSTM隐藏单元个数,起始值选为10,调节幅度大小为10,实验中选取10、20、30、40、50这5个数值,根据实验结果从中选取出Bi LSTM最优的隐藏单元个数。
当涉及到用户行为分类时,以下是几种常用的分类方法介绍。本文将TS-CNN-Bi LSTM模型与以下方法在同一数据集上进行了对比,对比方法包括:
1) CNN (卷积神经网络):CNN主要用于图像处理,可以用于处理时序数据,如时间序列或序列数据。它通过卷积操作在输入数据的不同区域上提取特征,并使用池化层对提取的特征进行下采样。
2) LSTM (长短期记忆网络):LSTM是一种适用于序列数据的循环神经网络的变体,特别适用于处理长序列和捕捉序列中的长期依赖关系。它通过门控机制来控制信息的流动,包括遗忘门、输入门和输出门。LSTM在处理文本、语音等序列数据时表现出色。
3) CNN-LSTM:CNN-LSTM结合了卷积神经网络和长短期记忆网络的特点。通常情况下,CNN用于提取序列中的局部特征,然后将这些特征序列输入到LSTM中进行处理。这种结合可以有效地捕捉序列数据中的空间和时间信息,适用于例如视频分类等任务。
4) Bi LSTM (双向长短期记忆网络):Bi LSTM是一种具有双向结构的LSTM网络,它能够同时从过去和未来的信息中学习特征表示。通过在输入序列的正向和反向上构建两个独立的LSTM层,Bi LSTM能够更好地捕捉到序列数据中的上下文信息,提高了模型对序列数据的理解能力。
模型 |
DCP-Life Log |
TS-Life Log |
||||
Macro-P |
Macro-R |
Macro-F1 |
Macro-P |
Macro-R |
Macro-F1 |
|
CNN |
52.72 |
52.92 |
50.76 |
49.99 |
52.72 |
49.72 |
LSTM |
45.13 |
50.22 |
46.56 |
44.34 |
46.93 |
49.72 |
CNN-LSTM |
48.11 |
51.77 |
49.36 |
44.83 |
48.28 |
45.14 |
Bi LSTM |
52.73 |
56.02 |
53.00 |
50.39 |
52.37 |
49.46 |
TS-CNN-Bi LSTM |
54.30 |
56.12 |
54.00 |
52.61 |
53.67 |
50.72 |
分析
相比之下,Bi LSTM模型表现出更好的平衡,其Macro-F1在DCP-Life Log数据集和TS-Life Log数据集分别为53.00%和49.46%,其能够利用双向上下文信息,更好地捕获文本特征。然而,TS-CNN-Bi LSTM模型在两个数据集上的表现最佳,其Macro-F1分别达到了54.00%和50.72%。这表明将CNN和Bi LSTM结合起来能够更好地利用文本的局部和全局信息,从而取得更好的分类效果。
在TS-Life Log数据集上,模型的性能普遍略低于DCP-Life Log数据集。这是由于TS-Life Log数据集中的文本特征信息较少,缺少位置信息导致模型在分类任务上面临更大的挑战。尽管TS-Life Log数据集缺少位置信息,但结合CNN和Bi LSTM的模型依然能够在这种情况下有效地提高分类性能。相比之下,单独使用CNN或LSTM的模型在处理具有位置信息的DCP-Life Log数据集时性能可能会受到影响,因为它们可能无法很好地利用位置信息。
综上所述,结合CNN和Bi LSTM的模型能够更好地适应不同类型的文本数据集,并取得较好的分类效果。在处理具有位置信息的DCP-Life Log数据集和缺少位置信息的TS-Life Log数据集时,TS-CNN-Bi LSTM模型表现出色。
我们提出了基于深度学习的TS-CNN-Bi LSTM组合模型,用于生活日志数据的行为分类预测。通过利用文本、图片和视频数据,全面地理解用户的行为和偏好。同时将时间因素纳入行为分类模型中,以更好地捕捉用户行为随时间的变化趋势。构建两种包含不同信息的数据集,观察用户位置信息的对分类性能的影响。实验结果表明,与其他常用的分类方法进行了对比,TS-CNN-Bi LSTM模型结合了卷积神经网络和双向长短期记忆网络,综合利用局部和全局信息,提高特征表达能力。该模型在不涉及用户位置信息,保障用户数据隐私安全,仍然能更全面地理解用户行为和偏好,提高行为分类的准确性。最后,我们希望继续利用Liu-Life Log数据集进行日志分类预测,为个性化服务和行为预测提供了新的方法和思路,提高日志数据的理解和应用价值,促进个人生活质量的提升和更精准的行为干预策略的制定。
辽宁省教育厅自然基金项目(LJKZ0595)。
*通讯作者。