数据挖掘实验过程记录

  1. 清洗数据
  2. 这个矩阵是个稀疏矩阵,如果使用矩阵存储会浪费大量空间,我们使用map<int,map<int,float>>的数据结构来存储矩阵中的数据。
  3. 用户id和艺术家id是不连续的,我们先将这些id变成连续的,使用字典。

UV分解的公式推导:
我们的问题如下:
在这里插入图片描述
开始推导:
我们的目标是令 M = U ∗ V (1) M=U*V\tag{1} M=UV(1)
假设我们的 U r s U{r}{s} Urs设为x,我们想通过寻找通过这次变化使得RMSE最小的x
假设 U ∗ V = P (2) U*V=P\tag{2} UV=P(2)
U r s U{r}{s} Urs变化影响的是 P r j , j 属 于 [ 1 , m ] P{r}{j},j属于[1,m] Prj,j[1,m]
Δ R M S E = ∑ j = 1 m ( M r j − P r j ) 2 = ∑ j = 1 m ( ∑ k = 1 m k ≠ s U r k ∗ V k j + x ∗ V s j − M r j ) 2 (3) \Delta RMSE=\sum_{j=1}^{m}(M{r}{j}-P{r}{j})^2=\sum_{j=1}{m}(\sum_{k=1}^{m}k\neq s U{r}{k}*V{k}{j}+x*V{s}{j}-M{r}{j})^2 \tag{3} ΔRMSE=j=1m(MrjPrj)2=j=1m(k=1mk=sUrkVkj+xVsjMrj)2(3)
令 δ Δ R M S E δ x = 0 (4) 令\frac{\delta \Delta RMSE}{\delta x}=0 \tag{4} δxδΔRMSE=0(4)
得到
x = ∑ j = 1 m ( M r j − ∑ k = 1 d k ≠ s U r k ∗ V k j ) ∑ j = 1 m ( V s j ) 2 (5) x=\frac{\sum_{j=1}^{m}(M{r}{j}-\sum_{k=1}^{d}k\neq s U{r}{k}*V{k}{j})}{\sum_{j=1}^{m}(V{s}{j})^2} \tag{5} x=j=1m(Vsj)2j=1m(Mrjk=1dk=sUrkVkj)(5)

猜你喜欢

转载自blog.csdn.net/cobracanary/article/details/109029714