Page 255 - 《软件学报》2021年第10期
P. 255
李豁然 等:基于细粒度数据的智能手机续航时间预测模型 3227
5 实验设计
为了验证我们所提出的方法的有效性,本文基于 Sherlock 数据集训练续航时间模型,并验证模型的预测效
果.本节介绍整个实验的执行流程.
5.1 查询生成
如前文所述,我们可以从 Sherlock 数据集的原始数据中抽取出会话,但在会话中,实际上并不包含用户的查
询行为.因此,在基于该数据集进行实验之前,我们需要在会话中模拟生成用户的查询行为.具体做法如下:前文
中已经介绍过,本文从原始数据集中抽取得到了 37 088 个会话.首先去除会话开始时的电量(b(t s ))低于 30%的会
话,因为如果一个会话的起始电量过低,用户的使用行为会受到比较严重的限制,会明显区别于用户的正常使
用.这一步骤过滤掉了大约 4%的会话,剩余还有 35 590 个会话.
对于每个会话,本文假设用户可能在其中的任意时间点发起查询请求.因此,对于每个会话[t s ,t e ],在时间区
间[t s +2min,t e 2min]中选取一个发起请求的时间点 t q .上述 2 分钟的边界是为了保证查询前至少已经拥有了一
段时间的使用,并且在查询后会话不会立即结束.在 t q 选定后,本文进一步随机选取一个目标电量 b n .在选取 t q 和
b n 时额外添加了两个限制.
1) b(t q )≥10%.这是为了保证查询时剩余电量不至于过低;
2) b(t n )≤b(t q )5%.这是为了保证查询时电量和目标电量具有一定的差距,以使得查询具有实际意义.
通过上述方法,每个会话都生成了一个对应的查询,每个会话可以被视为是一个数据样本.
显然,在模拟生成查询时需要保证 b(t n )≤b(t q ),但是本文并不要求 b(t n )≥b(t e ),因为用户在发起查询时无法
预知 b(t e ),因此可能会选择一个低于 b(t e )的目标电量.按照前文定义,如果 b(t n )≥b(t e ),那么表示当前会话实际消
耗到了目标电量,该会话对应的数据样本为可见样本;否则,该会话对应的数据为不可见样本.
模拟生成查询数据后,在 35 590 个数据样本中,14 773 个为可见样本,其余 20 817 个为不可见样本.本文进
一步从两者当中各随机选取出 5/6 作为训练数据,其余 1/6 作为测试数据,用于后续的模型训练和模型测试环节.
数据统计信息见表 2.
Table 2 Summary statistics of the data
表 2 数据样本统计信息
可见样本 不可见样本 汇总
训练集 17 382 12 275 29 657
测试集 3 435 2 498 5 933
汇总 14 733 20 817 35 590
5.2 特征提取
由于 Sherlock 数据集中包含的数据维度众多,为了使得模型更加有效,本文首先根据人工经验对数据进行
粗粒度的筛选,从中选出了最可能与电池续航时间相关的部分信息:应用使用行为、系统运行状态、传感器数
据、屏幕显示状态数据和广播数据.详细描述如下.
(1) 应用使用数据.在 Sherlock 数据集中,应用使用数据通过每 5s 读取一次系统进程列表的方式被记录.
从每次读取的记录当中,可以了解到当前哪些应用正在运行.由于在 Sherlock 数据集中一共出现过
655 个不同的应用,因此本文用一个 655 维的 0-1 向量表示某一时刻的应用运行状态.每个维度对应一
个应用,该维度取值为 1,表示这一时刻该应用正在运行;取值为 0,则表示该应用未在运行;
(2) 系统运行状态和传感器数据.根据 Sherlock 数据集的分类法,系统运行状态和传感器数据被分为 4 组:
基本设备状态(T1)、导航类与位置类传感器(T2)、声音类与亮度类(T3)、应用统计类(T4).通过人工筛
选的方式,本文从 T1 和 T2 中各自挑选了 9 个和 150 个可能与续航时间高度相关的维度,作为该部分
信息的特征;
(3) 屏幕显示状态和广播数据.屏幕显示状态和广播是通过基于事件的收集方式进行收集的.每次用户点