美文网首页
智能手环睡眠算法初探

智能手环睡眠算法初探

作者: 产品微醺 | 来源:发表于2016-09-21 00:10 被阅读488次

    本周App成功上线AppStore、应用宝、豌豆荚和小米应用商店,项目在某种意义上终于划上句号。但句号只是对过去经历的一个告别,未来的挑战未必会比从0到1更简单。做产品好比生孩子,十月怀胎一朝分娩是自然规律,难在后天的精心抚养。最让我担心的是睡眠算法,目前距离竞品还差十万八千里。作为一个文科生,去研究算法真的是自不量力,但没人上的时候,只能自己上了。

    一般智能手环都借鉴体动记录仪的方式来收集睡眠数据。当人在活动时,手环里的三轴加速度计就会记录下超过阈值的动作,人在白天与睡眠时的活动量是天壤之别。利用这差异,算法就可以算出数据量突然变小以及突然变大的时间节点,也就是入睡与起床时间。根据国外研究结果,体动记录仪收集数据的时间单位一般为1分钟,1天最多收集1440个单位的睡眠数据。坑就坑在这里。由于我们的手环主打体感游戏,没有为睡眠数据留下存储空间,硬件团队只能做到10分钟,1天最多收集144个单位的睡眠数据。与业界标准相差整整十倍,开什么玩笑!

    但没有办法,我所遇到的情况可能很多同行也遇到过:有条件要上,没有条件创造条件也要上。以10分钟的时间单位,想要自动得出用户的入睡与起床时间是不可能了。我们只好退而求其次,通过算法得出用户的睡眠时长。

    我们的手环每10分钟记录1次计步数据与睡眠数据,1天的总体数据为288个。算法首先会对计算周期做一个限定,排除明显的非正常睡眠时间,这样做有2个好处,一是减少计算量,不用遍历288个数据,二是减少计算出现明显bug的可能性。

    限定好计算周期,接下来算法会排除掉用户未戴手环的时间段。由于手环不能测心率,未戴手环时间段的判定主要依靠计步与睡眠数据。当计步与睡眠数据连续为0的时间段超过阈值后,我们就将连续的时间段视为未戴手环。

    好,通过2个条件做排除后,算法进入真正的睡眠判定阶段。算法以遍历的形式对每个10分钟的计步与睡眠数据做判定。一共3个条件判定睡眠,2个条件分别对计步与睡眠数据做数值上的限定,另外1个条件稍微复杂点,需要将当前10分钟的睡眠数据与之前之后的睡眠数据相加,对相加的和做数值上的限定。这个条件可以避免单个睡眠数据的产生,保证计算结果的连续性,它在很多研究体动记录仪的英文文献中出现过,当然论文里有复杂的系数与权重,我拿过来做了简化。

    得出睡眠时长,相当于产生一组睡眠的数组。算法再对睡眠数组中的数据做遍历,拿出计步与睡眠都为0的10分钟做加法,相加之和即为深睡,睡眠减去深睡即为浅睡。

    算法看着确实很low,只能说这是现有资源条件下我作为产品所能尽到的最大努力,虽然一直叫嚣着让公司花钱去买算法,但心里其实明白,买来的算法未必适合我们的手环,只能通过不断的实验、迭代与测试,需要时间。

    所幸的一点,经过公司内部的公测,这套算法的准确性得到大家的基本认可,不枉朕的一番苦心,哈哈!

    相关文章

      网友评论

          本文标题:智能手环睡眠算法初探

          本文链接:https://www.haomeiwen.com/subject/muaoettx.html