推荐系统(2)

推荐系统(2)

多层模型

全局global

总体偏差:e.g.平均值作为基线

局部local

处理局部影响:e.g.相关性

协调过滤CF

抽取局部模式

Ⅰ协同过滤CF

\[r_{xi} = \frac{\sum_{j \in N(i;x)}S_{ij}·r_{xj}}{\sum_{j \in N(i;x)}S_{ij}} \]

Ⅱ协同过滤CF+偏差biases

在实践中,对偏差进行建模,得到更好的估计:

\[r_{xi} = b_{xi} + \frac{\sum_{j \in N(i;x)}S_{ij}·(r_{xj}-b_{xj})}{\sum_{j \in N(i;x)}S_{ij}} \]

问题
  • 强制使用相似性度量

  • 成对相似性忽视了用户之间的依赖性

  • 采用加权平均值可能会受到限制

解决

Ⅲ协同过滤CF+偏差biases+经过学习的权重learned weights

采用加权和\(w_{ij}\),而不是加权平均值\(S_{ij}\),直接从数据估测,模拟的是电影对之间的相互作用,与用户无关

\[\hat r_{xi}=b_{xi}+\sum_{j \in N(i;x)}w_{ij}(r_{ij}-b_{xj}) \]

\[代价函数SSE:J=\min_{P,Q}\sum_{training}(\hat r_{xi}-r_{xi})^2 \]

采用梯度下降优化代价函数,找到最合适的\(w_{ij}\)

Ⅳ基于潜在因子的推荐Latent factor based

\(Q\):item-factor矩阵;\(P\):user-factor矩阵;\(SVD:R=Q·P^T\)

\[J=\min_{P,Q}\sum_{training}(r_{xi}-q_ip_x)^2 \]

想法:找到合适的\(P,Q\),最小化代价函数

→ 较大的\(k\)值(潜在因子数目);然而\(k\)变大,\(SSE\)会变大

自由度比较大的时候,会过拟合 → 引入正则化

\[J=\min_{P,Q}\sum_{training}(r_{xi}-q_ip_x)^2+[\lambda_1\sum_x||p_x||^2+\lambda_2\sum_i||q_i||^2] \]

采用梯度下降优化代价函数

\(GD\)vs.\(SGD\)

\(GD\)中,每次迭代都要用到全部训练数据。

\(SGD\)中每次迭代可以只用一个训练数据来更新参数。使用了梯度的噪声近似。

实际上,\(SGD\)虽然需要更多步,但是收敛更快,因为其计算耗费的时间少

Ⅴcombination:Latent factors+biases

\[r_{xi}=\mu+b_x+b_i+q_i·p_x \]

\(\mu\)是所有评分平均值

\(b_x\)是用户\(x\)的评分偏差

\(b_i\)是电影\(i\)的评分偏差

\(q_i·p_x\)是goodness of fit,即拟合好坏程度(?不太理解)

\[J=\min_{P,Q}\sum_{(x,i)\in R}(r_{xi}-(\mu+b_x+b_i+q_ip_x))^2 \\ +[\lambda_1\sum_i||q_i||^2+\lambda_2\sum_x||p_x||^2+\lambda_3\sum_x||b_x||^2+\lambda_4\sum_i||b_i||^2] \]

找到合适的\(b_i,b_j,q_i,p_x\),最小化代价函数

Ⅵ biases&factors加入时间因素

\[r_{xi}=\mu+b_x(t)+b_i(t)+q_i·p_x\\ b_i(t)=b_i+b_{i,Bin(t)}\\ p_x(t)...在t时的用户偏好向量 \]

Ⅶ 上百种模型混合

posted @ 2019-05-24 10:46  白芷呀  阅读(236)  评论(0编辑  收藏  举报