正则化奇异值分解Regularized Singular Value Decomposition (RSVD)
发布日期:2021-06-30 15:15:54 浏览次数:3 分类:技术文章

本文共 1211 字,大约阅读时间需要 4 分钟。

原文在这里:

下面讲解介绍一种矩阵分解的方法,这个方法是非常实用的。

考虑一个m×n的矩阵R,现在是想找到一个UV矩阵,使其满足,(矩阵R可能是一个稀疏的矩阵)。

正规化的奇异值分解(the Regularized Singular Value Decomposition,RSVD)的方法被用来评价一个矩阵。下面给出正则化奇异值分解的极小化函数和参数求解的算法

     

最终将得到一个低维的矩阵UV,并且R≈U'V,达到分解的效果。

下面给出程序

main.m

[plain]   
  1. clear all  
  2. clc  
  3. load('评分矩阵.mat');  
  4. R=pinfen;  
  5. lamda=0.02;   %正则参数  
  6. alpha=0.002; %学习率γ1  
  7. itrea=200; %迭代次数  
  8. K=20; % d  
  9. [U V lost] = matrix_factoriation(R,K,itrea,alpha,lamda);  
  10. plot(lost,'k-','linewidth',1.5);  
  11. xlabel('迭代次数');  
  12. ylabel('lost');  
  13. title('训练的损失函数的收敛情况');  
  14. grid on  
matrix_factoriation.m

[plain]   
  1. function [U V e]=matrix_factoriation(R,K,itrea,alpha,lamda)  
  2. [m n]=size(R);  
  3. U=rand(m,K);  
  4. V=rand(n,K);  
  5. V=V';  
  6. fprintf('%10s %8s %12s %15s\n','Iteration','alpha','lamda','error');  
  7. for step=1:itrea  
  8.     for i=1:m  
  9.         for j=1:n  
  10.             if R(i,j)>0  
  11.                 eij=R(i,j)-U(i,:)*V(:,j);  
  12.                 for k=1:K  
  13.                     U(i,k)=U(i,k)+alpha*(eij*V(k,j)-lamda*U(i,k));  
  14.                     V(k,j)=V(k,j)+alpha*(eij*U(i,k)-lamda*V(k,j));  
  15.                 end  
  16.             end  
  17.         end  
  18.     end  
  19.     eR=U*V;  
  20.     e(step)=0;  
  21.     for i=1:m  
  22.         for j=1:n  
  23.             if R(i,j)>0  
  24.                 e(step)=e(step)+(R(i,j)-U(i,:)*V(:,j)).^2;  
  25.                 for k=1:K  
  26.                     e(step)=e(step)+(lamda/2)*((U(i,k).^2)+V(k,j).^2);  
  27.                     if e<0.001  
  28.                         break;  
  29.                     end  
  30.                 end  
  31.             end  
  32.         end  
  33.     end  
  34.     fprintf('%6d %15s %13s %14d\n',step,alpha,lamda,e(step));  
  35. end  

最终得到的结果如下

其中R为943×1682大小的矩阵,U为943×20大小的矩阵,V为20×1682大小的矩阵。

转载地址:https://jianzhuwang.blog.csdn.net/article/details/51787600 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:有关矩阵低秩近似的一个不等式
下一篇:欲速则不达

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月20日 14时36分02秒