ALS交替最小二乘法推导

ALS最小二乘算法公式

R_{m*n} \approx  X_{m*k}Y_{k*n}

损失函数

L(X,Y) = \sum _ {u=0,i=0}^{u=m,i=n} (r _{ui} - x_u^Ty_i)^2+\lambda (\vert x_u \vert^2+\vert y_i \vert^2)

r_{ui} 属于R_{m*n}中一个元素。x_u是k行1列矩阵,x_u^T属于X_{m*k}一行元素。y_i是k行1列矩阵,属于Y_{k*n}的一列数据。

L(X,Y)x_u求偏导。与x_u无关的数据删除。

\frac{\partial L(X,Y)}{\partial x_u}  = -2\sum_{i}^n y_i(r_{ui}-x_u^Ty_i)+2\lambda x_u

                       = -2Yr_u+2\sum_{i}^n y_i(x_u^Ty_i)+2\lambda x_u

因为(x_u^Ty_i) = (x_u^Ty_i)^T = (y_i^Tx_u), (x_u^Ty_i) 是一个数。可以看做一个方阵

                       = -2Yr_u+2\sum_{i}^n y_i(y_i^Tx_u)+2\lambda x_u

y_i是k*1阶矩阵,所以y_i(y_i^Tx_u)是符合矩阵乘法交换律:如下(k*1) \cdot\bigg((1*k)\cdot(k*1) \bigg) = (k*1)\cdot (1*k)\cdot(k*1)

                        = -2Yr_u+2\lambda x_u +2(\sum_{i}^n y_iy_i^T)x_u

                         = -2Yr_u+2\lambda x_u +2(y_0y_0^T+y_1y_1^T+\cdots+y_0y_0^T)x_u

                         = -2Yr_u+2\lambda x_u +2\begin{bmatrix}y_0 & y_1 & \cdots & y_n\end{bmatrix}\begin{bmatrix}y_0^T \\ y_1^T \\ \cdots \\ y_n^T\end{bmatrix}x_u

                        = -2Yr_u+2\lambda x_u +2Y_{k*n}Y_{k*n}^Tx_u =0

最后得到x_u(同理y_i)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容