Page 251 - 《软件学报》2021年第10期
P. 251

李豁然  等:基于细粒度数据的智能手机续航时间预测模型                                                     3223


                    本文用 t n 表示电量消耗至 b n 的时间.显然有 t n >t q .本文将t=t n t q (即电量消耗至目标电量时距发起查询时已
                 经经过的时间)为续航时间.需要说明的是,这里定义的续航时间和一般语境下的续航时间略有区别,因为其并
                 非仅表示电池耗尽前的时间,而是指电池消耗至目标电量前的使用时间.直至电池耗尽的续航时间实际上为本
                 文定义的续航时间中的一个特例,即对应了 b n =0 的情况.
                    上文中定义的查询、目标电量和续航时间全部都是在单个会话内定义的,即用户在某个会话中发起一次查
                 询,查询的目标是在当前会话内电池消耗至目标电量前可以使用的续航时间.需要注意的是:在实际中,t n 并不一
                 定存在.例如,假如用户发起请求,希望了解电池电量在消耗至 30%之前的续航时间.但是,当用户回到家中开始
                 给手机充电时,手机仍然有 40%的电量.那么在这种情况下,电池在当前会话中从未消耗至 30%,因此实际上并不
                 存在对应的 t n .如果实际发生了电量消耗至目标电量这一事件,那么本文称该数据样本为一个“可见样本”,否则
                 称其为一个“不可见样本”.
                 2.3   续航时间预测问题定义
                    基于上述定义的各项概念,续航时间预测问题可以给出如下形式化描述:给定一个用户 u、一个会话 s、一
                 个发起查询的时间 t q 以及一个目标电量 b n ,预测在当前会话内从 t q 开始直至电池电量消耗至 b n 时的续航时间
                 t.不难看出,这一问题本质上可以看作是一个回归问题,因为待预测的值(续航时间)是一个连续的实数值.因此,
                 本文的目标即为设计一个回归模型,解决上述回归问题.回归模型的输入可以是与用户使用行为或者手机系统
                 状态相关的多种信息,具体将在下文详述.回归模型的输出即为当次查询对应的续航时间.

                 3    数据集

                    为了建立预测模型,本文基于一个大规模真实用户数据集:Sherlock 数据集,展开研究.Sherlock 数据集是由
                 本·古里安大学收集并维护的一个安卓手机用户数据集.本节将会对该数据集进行详细介绍,并介绍如何从原始
                 数据当中抽取会话.最终,本节将会对数据集进行简要的描述性分析,为后续的预测模型提供参考.
                 3.1   Sherlock数据集
                    Sherlock 数据集是一个数据维度较多、收集时间较长的真实安卓用户数据集,其包含的信息维度为三星
                 Galaxy S5 上不需要 Root 权限即可获取的全部信息.Sherlock 数据集通过一个基于 Google Funf            [19] 的数据收集客
                 户端进行收集.数据收集团队招募了一组志愿者,在志愿者知情并同意的情况下,为每一名志愿者配备了一部预
                 装了数据收集客户端的三星 Galaxy S5 手机,要求志愿者以该手机作为日常主力手机,并持续收集用户使用过程
                 中的数据.
                    总体上来说,Sherlock 数据集包含两大类别的收集方式:基于轮询的收集方式和事件驱动的收集方式.顾名
                 思义,基于轮询的收集方式是指以一定的频率,持续通过系统提供的接口读取信息,例如 CPU 读数、内存占用率、
                 传感器读数等;事件驱动的收集方式是指通过监听器监听事件,当事件发生时,对相关信息进行记录,例如电话
                 呼入、应用变更、系统广播等.总体上来说,Sherlock 数据集共包含 553 个域,持续 21 个月的时间,覆盖 51 名用
                 户.因此,可以认为 Sherlock 数据集是一个细粒度的、长时间的、全面的真实用户数据集.更多细节介绍可以参
                                                                           [8]
                 见 Sherlock 数据集的官网(http://bigdata.ise.bgu.ac.il/sherlock/)和相关文献 .
                    为了保护用户隐私,Sherlock 数据集对用户数据进行了若干处理:首先,用户了解并同意数据收集的过程和
                 数据的用途;其次,所有与用户身份有关的信息(例如 SSID、基站 ID、硬件 MAC 地址、手机号等)均进行了匿
                 名化处理;第三,用户的具体地理位置被隐去,取而代之的是,数据集仅提供了一个不含任何语义的编号来表示
                 用户所处的大致范围.通过上述方法,用户的隐私得到了有效的保护.
                 3.2   会话抽取

                    为了验证 Sherlock 数据集可以用于续航时间预测模型的构建,本文首先尝试从原始数据中抽取出会话.数
                 据集中的电池电量信息是基于轮询方式收集的,收集的频率为大约每 5s 一次.每条数据包含 4 个维度的信息:
                 (1)  用户 ID;(2)  收集数据时的 UNIX 时间戳;(3)  充放电状态(当前手机处于充电状态或放电状态);(4)  电量百
   246   247   248   249   250   251   252   253   254   255   256