数学建模网络侧估计终端用户视频体验.pdf_第1页
数学建模网络侧估计终端用户视频体验.pdf_第2页
数学建模网络侧估计终端用户视频体验.pdf_第3页
数学建模网络侧估计终端用户视频体验.pdf_第4页
数学建模网络侧估计终端用户视频体验.pdf_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络侧估计终端用户视频体验建模网络侧估计终端用户视频体验建模 摘要摘要 现如今,在线观看视频成为视频播放主流。对于网络视频观看用户体验的研 究显得即是对其两个关键指标初始缓冲时延和卡顿时间占比的研究显得尤为重 要。本文对初始缓冲时延和卡顿时间占比进行了全方位深层次的研究。 首先对于初始缓冲时延,及其影响因素两两两两关系画出了散点图依据多向 量皮尔森相关性进行初步观察判断参量间线性相关性。确定相关关系后,用程序 确定了两两变量之间关系系数,同时用 matlab 绘制了相应的线性关系图。在此 之后我们逐步加入第三个参量,将缓冲时延及卡顿占比分别作为 z 轴变量,其三 个影响因素每次取其中两个作为 x 轴变量及 y 轴变量, 确定变量后绘制三维图使 用 matlab 拟合工具得到评价因素与其中两个影响因素之间的关系式。在此之后 引入机器学习的方法对两个评价因素与三个影响因素之间关系进行了定性及定 量分析, 机器学习方法中取 60000 个点作为学习点取剩下的 20000 多个点作为验 证点,在程序中运用最小二乘法。整个评估过程中我们大胆假设,细心论证,最 终求出以播放阶段平均速率、初始缓冲峰值速率、视频码率为自变量,初始缓冲 时延为因变量的函数关系。在文章的最后,讨论了本模型的优缺点、改进方向及 参考文献。 关键词:关键词:多向量皮尔森相关性 机器学习 最小二乘法 插值拟合 1.1.问题重述问题重述 影响网络视频观看用户体验的两个关键指标可以用初始缓冲时延和卡顿时 间占比来定量评测。而初始缓冲时延和卡顿时间则主要与初始缓冲峰值速率、播 放阶段平均下载速率、端对端环回时间以及视频参数有关。需要在已知的每组参 量各 89267 组数据中寻找三个影响因素两个评价指标之间的关系。 2.2.模型假设及符号说明模型假设及符号说明 2.12.1 模型的假设模型的假设 假设一:所给数据中,无网络不稳定、网络故障等情况。 假设二:初始缓冲时,用户不会认为断开网络连接。 假设三:移动端设备硬件运行能力不会随时间变化而变化。 假设四:端对端环回时间计时准确无误。 假设五:计时过程中无人为因素影响数据。 2.22.2 符号说明符号说明 1、start_time_wait:起始缓冲时延。 2、E2E RTT:端到端环回时间。 3、Kadun_percent:卡顿时长占比。 4、Avr_bo_speed:播放阶段平均下载速率。 5、Start_speed:起始缓冲峰值速率。 3.3.模型建立与求解模型建立与求解 3.13.1 一对一模型一对一模型 .1 数据总览数据总览 将数据编号封装后待程序调用,编写散点图程序画出缓冲时延 start_time_ wait 分别与起始缓冲峰值速率 Start_speed、端到端环回时间 E2E RTT、播放阶 段平均下载速率 Avr_bo_speed、三个影响因素之间的散点图进行数据总览如图 3.1 所示。 图中我们可以大致猜测 start_time_wait 与 Start_speed 以及 start _ time_ wait 与 Avr_bo_speed 成负指数幂函数关系。而 start_time_wait 与 E2E RTT 关系接近于线性关系 图 3.1:缓冲时延数据总览 图 3.2:参量间两两关系图 在此基础上我们将五个参量数据进行了遍历式两两关系散点图分析, 散点图 绘制结果如图 3.2 所示, 据此散点图关系我们在程序中输出来几个参量间的系数 关系如下图 3.3 所示: 图 3.3:参量间系数关系式 在数据总览中观察到部分类散点图接近副指数幂函数, 我们对其中最接近幂函数 的start_time_wait起始缓冲时延与Start_speed起始缓冲峰值速率之间关系式 进行了拟合,拟合结果如下图 3.4 红线所示。下面给出拟合表达式 f(x) = a*xb+c Coefficients (with 95% confidence bounds): a =0.5566(-4.574, 5.687) b =-0.794(-1.572, -0.01626) c =15.9(-2291, 2323) 即:f(x) = 0.5566 *x(-0.794 )+15.9 图 3.4:负指数次幂拟合 3.23.2 一对二模型一对二模型 所谓一对二模型即一个评价因素对应其中另个影响因素。 三个影响因素中任 意取两个参量共有 3 种取法,而这三种取法共对应两个评价因素故此模型总共 6 次拟合。 将数据导入到 matlab 中分别进行命名标号,命名方式见符号说明。分别以 缓冲时延和卡顿占比为 z 轴变量, 以任意两个影响因素作为 y 轴变量及 x 轴变量 进行插值拟合。 3.2.1 缓冲时延分析(z): (1)影响因素:初始换成尖峰速率(x)、播放阶段平均下载速率(y),拟合 结果如图 3.5 所示,其校正决定系数等于 1,拟合度为 95%: f(x,y) =3.312e-10 +x +-8.355e-15*y 图 3.5:初始换成尖峰速率(x)、播放阶段平均下载速率(y)拟合结果 (2)影响因素:初始换成尖峰速率(x)、端到端环回时间(E2E RTT)(y), 拟合结果如图 3.6 所示,其校正决定系数等于 1,拟合度为 95%: f(x,y) = 2.627e-10+x+3.054e-13 *y 图 3.6:初始换成尖峰速率(x)、端到端环回时间(y)拟合结果 (3)影响因素:播放阶段平均下载速率(x)、端到端环回时间(E2E RTT) (y) , 拟合结果如图 3.7 所示,其校正决定系数为 0.0855,拟合度为 95%: f(x,y)=1.785e+04+5.552*x+(-178.8)*y 图 3.7:播放阶段平均下载速率(x)、端到端环回时间(y)拟合结果 .2 卡顿时长占比(卡顿时长占比(z z):): 同样的方法我们将卡顿时长作为 z 轴变量对卡顿时长做了拟合, 但由于卡顿 时长的数据特殊性(89267 组数据中只有 4000 个点为非零值,离散程度很高) 此种拟合结果不能很好的反映卡顿时长与影响因素之间的关系, 此处仅给出端到 端环回时间(E2E RTT)(x)与初始换成尖峰速率(y)之间关系式及拟合结果, 如下图 3.8 所示: f(x,y)=0.1336+0.0007779*x+(-3.105e-06)*y 图 3.8:端到端环回时间(E2E RTT)(x)与初始换成尖峰速率(y) 3.23.2 使用使用 excelexcel 进行多元回归分析进行多元回归分析 在 excel 数据处理中使用 excel 对一直数据进行了多元数据处理分析, 分析 结果之一如图 3.9 所示,此时因变量为缓冲时延设为 y1,自变量分别为初始缓 冲峰值速度 x1,播放阶段平均下载速度设为 x2,端到端环回时间设为 x3 其表达 式为: y1=4299.7-0.01755*x1+19.22597*x2-0.548798*x3y1=4299.7-0.01755*x1+19.22597*x2-0.548798*x3 同理设卡顿时长占比为 y2,其余三个参量保持 x1,x2,x3 不变,则表达式为: Y2=1.4848+-6.65*10-7*x1+0.000858*x2-0.00025211*x3Y2=1.4848+-6.65*10-7*x1+0.000858*x2-0.00025211*x3 图 3.9:excel 多元回归分析结果 3.23.2 机器学习模型建立机器学习模型建立 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计 学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或 实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不 断改善自身的性能。 本文中将 89267 组数据分为两个部分 2/3 提供给机器进行统 计学习,另外 1/3 对学习的结果进行验证。 本文中机器学习算法主要运用了最小二乘法实现多元非线性回归的思路。其 中多元回归是指(1)一个因变量(预报对象),多个自变量(预报因子)的回归 模型。基本方法是根据各变量值算出交叉乘积和 Si。(2)这种包括两个或两个 以上自变量的回归称为多元回归。应用此法,可以加深对定性分析结论的认识, 并得出各种要素间的数量依存关系,从而进一步揭示出各要素间内在的规律。一 般来说,多元回归过程能同时提供多个备选的函数关系式,并提供每个关系式对 实验数据的理解能力,研究者可以结合自己的理论预期,据此作出选择。 假定文中各影响因素与评价因素(变量)之间有线性关系。对于 n 组观测数 据 Yi,X1i,X2i,Xki(i=1,2,n),其方程组形式为 ),.,2 , 1(. 22110 niXXXY kikiii 矩阵形式: k T knnn k k n XXX XXX XXX Y Y Y 2 1 0 11 22212 12111 2 1 1 1 1 其中参数0, 1, 2, k 都是未知的, 可以利用样本观测值 (X1i, X2i, , XKi;Yi)对它们进行估计。若计算得到的参数估计值为0,1,2,k 用参数估计值替代总体回归函数的未知参数0,1,2,k 则得多元线 性样本回归方程: kiiii XXX k210 Y 21 其中j (j=0,1,2,,k)为参数估计值,Yi(i=1,2,n)为 Yi 的样本回归值或样 本拟合值。矩阵表达式为: YX 样本回归方程得到的被解释变量估计值 Yi 与实际观测值 Yi 之间的偏差称为 残差 ei )( 21kiiiiii XXXYYe k210i Y 由最小二乘法可知0 0,1 1,2 2,k k应使全部观测值Yi与回归值 Y Yi i的残 差ei的平方和最小据此可求得: YXXX XXYX TT TT 1 )( 将数据按照 2/3 供统计学习 1/3 用以验证的方式导入算法, 其中在处理卡顿 占比数据时我们将原始数据中为零的点去除(卡顿占比为零说明不卡顿,用户体 验较好)对剩余的 4000 组数据同样按照 2/3 供统计学习 1/3 用以验证的方式进 行机器了机器学习,机器学习结果分别如图 3.8 及图 3.9 所示:图中绿色线条为 真实的用以验证机器学习预测准确度的原始数据, 红色线条为机器学习通过给定 数据学习后给出的预测值。 从图中很容易看出机器学习做出的预测与真实数据基 本吻合。 4 4、基于基于 GBDTGBDT 算法的视频体验指标预测模型算法的视频体验指标预测模型 4.14.1 模型建立及算法简介模型建立及算法简介 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的 过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。模 型组合(比如说有 Boosting,Bagging 等)与决策树相关的算法比较多,如 randomForest、Adaboost、GBRT 等,这些算法最终的结果是生成 N(可能会有几 百棵以上)棵树,这样可以大大的减少单决策树带来的问题,下面先来介绍下本 文的梯度提升算法。 梯度树提升(Gradient Tree Boosting)是一种组合算法,也叫做梯度提升回归 树(gradient boosting regression tree),它的基分类器是决策树,既可以 用来回归,也可以用作分类。在分类性能上,能够和随机森林媲美,甚至在有的 数据集上表现的有过之而无不及。梯度提升算法利用的是当前模型中损失函数的 负梯度值 rmi=L(yi,f(xi)f(xi)f(x)=fm1(x) 对于给定的输入:训练数据集T=(x1,y1),(x2,y2),.,(xn,yn),损失函数 L(y,f(x);输出结果:一棵回归树f(x) (1)首先初始化 f0(x)=argmincf0(x)=argminci=1NL(yi,c)i=1NL(yi,c) 估计一个使损失函数极小化的常数值,此时它只有一个节点的树; (2)迭代的建立 M 棵提升树 for m=1 to M:(第一层循环) for i=1 to N:(第二层循环) 计算损失函数的负梯度在当前模型的值,并将 它作为残差的估计值。 rmi=rmi= L(yi,f(xi)L(yi,f(xi)f(xi)f(x)=fmf(xi)f(x)=fm1(x)1(x) 对于 rmi 拟合一棵回归树,得到第 m 棵树的叶节点区域 Rmj,j=1,2,J for j=1 to J:(第二层循环),计算: cmj=argminccmj=argmincxixiRmjL(yi,fmRmjL(yi,fm1(xi)+c)1(xi)+c) 利用线性搜索估计叶节点区域的值,使损失函数极小化; 然后,更新 fm(x)=fmfm(x)=fm1(x)+1(x)+Jj=1cmjI(xJj=1cmjI(xRmj)Rmj) (3)最后得到的 fm(x)就是我们最终的模型 f(x)=fM(x)=f(x)=fM(x)=m=1Mm=1Mj=1JcmjI(xj=1JcmjI(xRmj)Rmj) 4.1GBDT4.1GBDT 训练过程训练过程 4.1GBDT4.1GBDT 结果结果 图 4.1:缓冲时延机器学习分析模型结果 图 4.2:卡顿时长占比机器学习分析模型结果 5 5、模型的优缺点模型的优缺点 本文所述模型首先通过数据总览对数据间关系做出初步预测, 再此基础上给 出了各个参量间一对一的系数关系。 根据由简单到复杂的思路我们将影响因素增 加到 2 个进行了插值拟合,但卡顿占比作为因变量时插值拟合效果不好。本文数 据量庞大变量多元的特点适合进行机器的深度学习。 文中提出了基于最小二乘法 实现多元线性回归的机器学习方案, 从机器学习算法的结果来看机器学习拟合结 果结果较为合理。但是同时,本文用到的单决策树又有一些不好的地方,比如说 容易 over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不 太理想。 参考文献参考文献 1 王松桂,张忠占,程维虎,高旅端,基于云计算模型的移动通信网络优化, 科学出版社,2006.8。 2 王金甲,尹涛,李静,洪文学,马崇霄,移动通信网络优化方法,燕山大 学学报,第 34 卷第 2 期:134-136,2010.3。 3 李云,李记明,姜忠军,网络数据传输研究初步,网络科技,第四期:79-82, 2009。 4 李新蕊, 主成分分析、因子分析、聚类分析的比较与应用,山东教育学 院学报,第六期:24-26,2007。 5 章绍辉,数学建模,科学出版社,2010。 6 卓金武,MATLAB 在数学建模中的应用,北京航空航天大学出版社 7 浅谈移动通信网络室内覆盖建设与优化,网络科学,第七期,74-99,2009 附录一: import numpy as np import seaborn as sns import matplotlib.pyplot as plt import pandas as pd #1.数据生成部分# def f(x1, x2): y = 0.5 *np.power(x1,-2) + 0.5 * np.cos(x2) + 3 + 0.1 * x1 return y df = pd.read_csv(speed_vedio.csv) df = df1,2,3,4 x_train= df.iloc:82000,0:3 y_train =df.iloc:82000,3#数据前两列是 x1,x2 第三列是 y,这里的 y 有随机噪声 x_test ,y_test = df.iloc82000:,:3, df.iloc82000:,3 # 同上,不过这里的 y 没有噪声 from sklearn.metrics import r2_score def try_different_method(model): model.fit(x_train,y_train) score = model.score(x_test, y_test) result = model.predict(x_test) plt.figure() plt.plot(np.arange(len(result), y_test,go-,label=true value) plt.plot(np.arange(len(result),result,ro-,label=predict value) plt.title(score: %f%score) plt.legend() plt.show() from sklearn import tree model_DecisionTreeRegressor = tree.DecisionTreeRegressor() from sklearn import linear_model model_LinearRegression = linear_model.LinearRegression() from sklearn import svm model_SVR = svm.SVR() from sklearn import neighbors model_KNeighborsRegressor = neighbors.KNeighborsRegressor() from sklearn import ensemble model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=20)#这里 使用 20 个决策树 from sklearn import ensemble model_AdaBoostRegressor = ensemble.AdaBoostRegressor(n_estimators=50)#这里使用50个 决策树 from sklearn import ensemble model_GradientBoostingRegressor= ensemble.GradientBoostingRegressor(n_estimators=100)#这里使用 100 个决策树 from sklearn.ensemble import BaggingRegressor model_BaggingRegressor = BaggingRegressor() from sklearn.tree import ExtraTreeRegressor model_ExtraTreeRegressor = ExtraTreeRegressor() try_different_method(model_LinearRegression) import pandas as pd df = pd.read_csv(speed_vedio.csv) print(df.head() df = df1,2,3,4,5 print(df.head() df.to_csv(speed_vedio.csv) df=dfdfkadun_percent0 corrmat = df.corr() f, ax = plt.subplots(figsize=(12, 9) sns.heatmap(corrmat, vmax=.8, square=True) plt.show() k = 5 #number ofvariables for heatmap cols = corrmat.nlargest(k, start_time_wait)start_time_wait.index cm = np.corrcoef(dfcols.values.T) sns.set(font_scale=1.25) hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt=.2f, annot_kws=size: 10, yticklabels=cols.values, xticklabels=cols.values) plt.show() data1 = df0,1,2,3 X = data1start_speed,E2E RTT,avr_bo_speed y = data1start_time_wait y = data1.start_time_wait import numpy as np from sklearn.cross_validation import train_test_split#这里是引用了交叉验证 X_train,X_test, y_train, y_test = train_test_split(X, y, test_size=0.04) print (X_train.shape) print (y_train.shape) print (X_test.shape) print (y_test.shape) feature_cols = start_speed,E2E RTT,avr_bo_speed from sklearn.linear_model import LinearRegression linreg = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) model=linreg.fit(X_train, y_train) print (model) print (ercept_) print (linreg.coef_ ) print(feature_cols, linreg.coef_) y_pred = linreg.predict(X_test) print (y_pred) from sklearn import metrics rms=np.sqrt(metrics.mean_squared_error(y_test, y_pred) print (np.sqrt(metrics.mean_squared_error(y_test, y_pred) import matplotlib.pyplot as plt import numpy as np import scipy as sp from scipy.stats import norm from sklearn.pipeline import Pipeline from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn import linear_model import pandas as pd from scipy.optimize import curve_fit from sklearn.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论