0.问题描述
U = { u 1 , u 2 , … , u m } U = \{u_1, u_2, …, u_m\} U={
u1,u2,…,um} 为用户集合
S = { s 1 , s 2 , … , s n } S = \{s_1, s_2, …, s_n\} S={
s1,s2,…,sn} 为服务集合
则有 m × n m \times n m×n 的矩阵 V V V 表示服务的 QoS 信息, V i j V_{ij} Vij 表示用户 u i u_i ui 对服务 s j s_j sj 的评价。
在现实环境下,这个矩阵中大部分的元素值都是未知的,因此需要对缺失的值进行预测。
1.NMF 方法 (非负矩阵分解)
方法原理
对任意给定的一个非负矩阵 V V V ,其能够寻找到一个非负矩阵 W W W 和一个非负矩阵 H H H ,满足条件
V ≈ W H V\approx WH V≈WH ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。
V ^ = W m × k H k × s min H , W ∥ V − V ^ ∥ 2 s . t . W ≥ 0 , H ≥ 0 \large \hat{V} = W_{m \times k}H_{k \times s} \\ \quad \\ \min_{H, W} \left\| V - \hat{V} \right\| ^2 \quad s.t. \quad W \geq 0, H \geq 0 V^=Wm×kHk×sH,Wmin∥∥∥V−V^∥∥∥2s.t.W≥0,H≥0
k k k一般会选取一个较小的值,满足
( m + n ) k < m n (m+n)k < mn (m+n)k<mn
这时就能对原始矩阵进行降维,得到数据特征的降维矩阵,减少对计算资源的消耗。
运行结果
- Response Time
- Throughput
2.PMF 方法(概率矩阵分解)
方法原理
这是 SVD 的一种扩展,它基于以下两个假设 1)观测噪声(观测评分矩阵 R R R和近似矩阵 R ^ \hat{R} R^之差)
服从高斯分布, 2)用户属性矩阵 U U U 与服务属性矩阵 V V V 均服从高斯分布, 即
p ( R ∣ U , V ) = N ( R ^ , σ 2 ) p ( U ) = N ( 0 , σ U 2 ) p ( V ) = N ( 0 , σ V 2 ) \large p(R|U, V) = N(\hat{R}, \sigma^2) \\ \quad \\ p(U) = N(0, \sigma_U^2) \\ \quad \\ p(V) = N(0, \sigma_V^2) p(R∣U,V)=N(R^,σ2)p(U)=N(0,σU2)p(V)=N(0,σV2)
从而有
p ( U , V ∣ R ) = p ( R ∣ U , V ) p ( U ) p ( V ) p(U, V|R) = p(R|U,V)p(U)p(V) p(U,V∣R)=p(R∣U,V)p(U)p(V)
两边取对数
l n ( p ( U , V ∣ R ) ) = l n ( p ( R ∣ U , V ) ) + l n ( p ( U ) ) + l n ( p ( V ) ) ln(p(U, V|R)) = ln(p(R|U,V)) + ln(p(U)) + ln(p(V)) ln(p(U,V∣