Alternating Least Squares(ASL) 的数学推导

最近在看CF的相关论文,《Collaborative Filtering for Implicit Feedback Datasets》思想很好,很容易理解,但是从目标函数

是如何推导出Xu和Yi的更新公式的推导过程却没有很好的描述,所以下面写一下

推导:

首先对Xu求导:

其中Y是item矩阵,n*f维,每一行是一个item_vec,C^u是n*n维的对角矩阵,

对角线上的每一个元素是c_ui,P(u)是n*1的列向量,它的第i个元素为p_ui。

然后令导数=0,可得:

由于x_u和y_i在目标函数中是对称的,所以很容易得到:

其中X是user矩阵,m*f维度,每一行是一个user_vec,C^i是m*m的对角矩阵,对角线上的每一个元素是c_ui,P(i)是m*1的列向量,它的第u和元素是p_ui

然后令导数=0,可得:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-22 14:25:52

Alternating Least Squares(ASL) 的数学推导的相关文章

Alternating Least Squares(ASL) for Implicit Feedback Datasets的数学推导以及用Python实现

近期在看CF的相关论文,<Collaborative Filtering for Implicit Feedback Datasets>思想非常好,非常easy理解.可是从目标函数 是怎样推导出Xu和Yi的更新公式的推导过程却没有非常好的描写叙述.所以以下写一下 推导: 首先对Xu求导: 当中Y是item矩阵,n*f维,每一行是一个item_vec,C^u是n*n维的对角矩阵. 对角线上的每个元素是c_ui,P(u)是n*1的列向量,它的第i个元素为p_ui. 然后令导数=0,可得: 因为x_

HDU1719 Friend (数学推导)

friend numbers = 2^x + 3^y -1 1 #include<stdio.h> 2 int main() 3 { 4 __int64 a; 5 while(scanf("%I64d",&a)!=EOF) 6 { 7 if(!a) 8 { 9 printf("NO!\n"); 10 continue; 11 } 12 a+=1; 13 while(a%2==0||a%3==0) 14 { 15 if(a%2==0) a/=2;

HDU 5073 Galaxy(Anshan 2014)(数学推导,贪婪)

Galaxy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 556    Accepted Submission(s): 127 Special Judge Problem Description Good news for us: to release the financial pressure, the government

leetcode 343. Integer Break(dp或数学推导)

Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get. For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 +

借One-Class-SVM回顾SMO在SVM中的数学推导--记录毕业论文5

上篇记录了一些决策树算法,这篇是借OC-SVM填回SMO在SVM中的数学推导这个坑. 参考文献: http://research.microsoft.com/pubs/69644/tr-98-14.pdf https://inst.eecs.berkeley.edu/~ee227a/fa10/login/l_dual_strong.html https://inst.eecs.berkeley.edu/~ee127a/book/login/l_sdual_slater.html http://w

HDU 5073 Galaxy(Anshan 2014)(数学推导,贪心)

Galaxy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 556    Accepted Submission(s): 127 Special Judge Problem Description Good news for us: to release the financial pressure, the government

最大熵模型中的数学推导

最大熵模型中的数学推导 查看原文,点击这里 0 引言 写完SVM之后,一直想继续写机器学习的系列,无奈一直时间不稳定且对各个模型算法的理解尚不够,所以导致迟迟未动笔.无独有偶,重写KMP得益于今年4月个人组织的算法班,而动笔继续写这个机器学习系列,正得益于今年10月组织的机器学习班. 10月26日机器学习班第6次课,身为讲师之一的邹博讲最大熵模型,他从熵的概念,讲到为何要最大熵.最大熵的推导,以及求解参数的IIS方法,整个过程讲得非常流畅,特别是其中的数学推导.晚上我把他的PPT 在微博上公开分

时域和频域变换之---傅里叶级数的数学推导

废话不多说先列提纲: 0.概述-需求分析-功能描述-受限和缺点改进+知识点预备 1.泰勒级数和傅里叶级数的本质区别,泰勒展开 2.  函数投影和向量正交 3.两个不变函数求导是本身e^x,sinx,cosx也是为什么要傅里叶转换的原因! 4.傅里叶技术推到过程 5.附录参考资料 0.有些时候,尤其是在图像处理中,矩阵运算数据量太大,特征提取量多,此时可以通过时域转频域来减少计算量,而且此转换不会损失数据完整性. 时域转频域的方法有周期函数用傅里叶技术,非周期函数(没有间断点的函数)用傅里叶转换,

Codeforces Round #360 (Div. 2) D 数学推导 E dp

Codeforces Round #360 (Div. 2) A  == B  水,但记一下: 第 n 个长度为偶数的回文数是  n+reverse(n). C    dfs 01染色,水 #include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a; i<=b; ++i