python代码中的一些矩阵完成方法。

matrix-completion的Python项目详细描述


python中的矩阵完成

最后更新:2019年2月。


python代码的几种低维矩阵完成方法。

这些方法在内存中操作,并且不超过大小1000 x 1000左右。

方法

  1. 核范数最小化(非常慢)[1]
  2. 奇异值阈值化[2]
  3. 交替最小二乘法[3,4]
  4. 有偏交替最小二乘法[5]

用法

importnumpyasnpfrommatrix_completionimportsvt_solve,calc_unobserved_rmseU=np.random.randn(20,5)V=np.random.randn(15,5)R=np.random.randn(20,15)+np.dot(U,V.T)mask=np.round(np.random.rand(20,15))R_hat=svt_solve(R,mask)print("RMSE:",calc_unobserved_rmse(U,V,R_hat,mask))

注意,这里的掩码是一个矩阵,有1个(表示观察到)或0个(表示丢失)。

有关详细信息,请参阅examples/目录。

参考文献

[1]艾曼纽尔·坎迪斯和本杰明·雷克特。2012年。通过凸优化精确完成矩阵。公社。ACM 55,6(2012年6月),111-119.doi:https://doi.org/10.1145/2184319.2184343

[2]蔡剑锋,J.Cand_s,沈作伟.2010年。矩阵完备化的奇异值阈值算法。Siam J.《优化》20,4(2010年3月),1956-1982。doi=http://dx.doi.org/10.1137/080738970

[3]胡一凡,科伦和沃林斯基.2008年。隐式反馈数据集的协同过滤。2008年第八届ieee数据挖掘国际会议记录(icdm'08)。IEEE计算机协会,华盛顿特区,美国,263-272。doi=http://dx.doi.org/10.1109/ICDM.2008.22

[4]Ruslan Salakhutdinov和Andriy mnih。2007年。概率矩阵分解。在第20届神经信息处理系统国际会议记录(NIPS'07),J.C.普拉特,D.科勒,Y.辛格和S.T.罗威斯(编辑)。库伦联合公司,美国,1257-1264。

[5]帕特里克,阿卡迪乌斯。“改进协同过滤的正则奇异值分解”(2007)。

许可证

此代码在eclipse公共许可证下可用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaBridge errno=10054被Remotehost关闭   javafx如何在每次调用方法中的变量时更新它?(爪哇)   java mod_群集在发现后未平衡负载   Java软件编辑器/语法高亮   java为什么不能强制转换数组的结果。asList()到ArrayList?   java HIBERNATE:无法使用HIBERNATE从MySQL中提取数据   java在Google地图片段上添加布局   java在AbstractTableModel中执行setValueAt之前,我如何做一些事情?   java在整个Tomcat运行时保存变量   java如何在Thymeleaf模板中获取环境变量的值?   java Selenium Chrome驱动程序针对属性的标签   java正则表达式捕获未知数量的重复组