[Lemei Huang-Notes] CS2P

2017-11-11

Posted by 黄乐玫

Main Idea

首先,这篇文章的主要目的在于预测网络吞吐量,来辅助DASH,使得用户的QoE能更好地提高。
对吞吐率的预测是实时的,所以对于初始化和播放途中都可以起作用。

网络吞吐量

在流媒体播放的时候,客户端会有一个Buffer,播放器会以一定速率取走视频内容,网络会以一定速率填充Buffer,此处后者的速率就是所指的网络吞吐量。

其特点是通过分析历史数据来预测的,因此称为Data-driven

首先确定工作的价值

为什么需要预测吞吐量

  1. 对初始码率选择有意义
  2. 中途想修改码率时,预测吞吐量越准得到的QoE越高

数据分析

他们写论文的方式一般会先对所取得的数据集进行分析,得到一些结论,这些结论可能包括但不限于:

  1. 性能改进的瓶颈,或者说,对哪些地方进行改进才能有效提高性能
  2. 性能改进的潜力,如果能把这些都改好了,能带来多大的改善

总之这些分析会对其后文提出的方法增加说服力,使他们的工作看上去贡献更大。

得到的结论

  1. 在播放过程中,吞吐量的抖动很大=》需要在播放中调整码率
  2. 吞吐量变化用简单模型预测准确率不高=》需要更复杂的预测
  3. 吞吐量的变化呈现出状态性=》可以通过HMM改进
隐马尔可夫模型

参考:如何用简单易懂的例子解释隐马尔可夫模型?
不可见状态之间有转换概率,每个不可见状态到可见状态下有输出概率。
实际问题中,往往有下列三种问题:

  1. 知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道每次掷出来的都是哪种骰子(隐含状态链)。
    先验方法和后验方法都可以解
  2. 还是知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道掷出这个结果的概率。
    用来检测观察到的结果与已知的模型是否吻合
  3. 知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率),观测到很多次掷骰子的结果(可见状态链),我想反推出每种骰子是什么(转换概率)。
    最常见的问题
  1. 相似特征的session吞吐量变化模式相似=》可以通过分析数据来预测
  2. 特征对session吞吐量的影响不是单一的,而是几种共同影响的=》不能使用简单模型去预测
    举例子就是,同一个城市里看优酷的才相似,不能只研究城市对吞吐量的影响,也不能只研究看优酷视频对吞吐量的影响

具体方法

根据前面的分析,可以通过一些特征相似的session来预测现在的session,并且对于同一个session,它的吞吐量变化呈现出状态性
因此需要:

  1. 把特征相似的session聚类到一起
  2. 对于这些特征相似的session,总结出一个HMM模型

本文的方法主要由两部分组成:

  1. 离线算法部分:通过分析数据和机器学习等方式,判断重要的特征,得到合适的聚类和对应的HMM
  2. 在线算法部分:为当前session匹配到离线算法算出来的合适的类里,然后利用离线算法得到的对应HMM进行吞吐量预测

笔记

笔记一下其中的一些数据分析手段

  • 基本统计变量:cdf、pdf、标准差、均值等
  • 相关性图:t时刻与t+1时刻的散点图【重点是巧妙地找需要画相关性图的两个变量】
  • 根据特征把数据集分类,然后统计不同cluster的同一种性质,比较特征在其中起的作用
  • 评价特征对数据的影响:信息增益等
    信息熵

    一个数据集的信息熵为iEpilog2pi// ,其中i// 表示数据集里的事件,pi// 表示i所占的比例,例如一个布尔二元的数据集,14个人,其中3个人吃了早餐,11个人没吃,那么i总共有两个,“吃早餐”和“没吃早餐”。
    信息熵的意义在于,确定了要编码集合S中任意成员的分类所需要的最少二进制位数。
    比如:如果全员都吃早餐,不需要额外表示;如果吃早餐的人和不吃早餐的人一样多,可以用1表示吃了,0表示没吃;如果吃早餐的人比没吃早餐的人多很多,那么用更短的位数表示吃早餐,用更长的位数表示没吃,平均下来每条消息的长度小于1。

    信息增益

    1
    其中 Values(A)是属性A所有可能值的集合,Sv是S中属性A的值为v的子集,注意上式第一项就是原集合S的熵,第二项是用A分类S后的熵的期望值,第二项描述的期望熵就是每个子集的熵的加权和,权值为属性Sv的样例占原始样例S的比例|Sv|/|S|,所以Gain(S,A)是由于知道属性A的值而导致的期望熵减少,换句话来讲,Gain(S,A)是由于给定属性A的值而得到的关于目标函数值的信息。当对S的一个任意成员的目标值编码时,Gain(S,A)的值是在知道属性A的值后可以节省的二进制位数

    条件熵

    上图减号后半部分好像就是条件熵,为A条件下的条件熵

    相对信息增益

    等于1H(Y|X)H(Y)// ,即Gain(S,A)Entropy(S)//