关于矩阵分解
矩阵分解活跃在推荐领域,基于SVD的推荐系统也是矩阵分解的一种。给定一个用户评分表,通常这个是个很大的矩阵,m行n列,m代表用户的个数,n代表项目的个数。并且这个矩阵在实际情况中是非常稀疏的,用户只能评价少部分的项目,因而矩阵中会存在很多?,用户并没有对对应的项目打分或者是评价过,所以我们很难对了解用户对相应项目的偏好情况。
而我们推荐矩阵分解就是希望能通过用户已有的评分来预测用户对未打分或者评价项目的评价情况,而通过矩阵分解则能挖掘用户的潜在因子和项目的潜在因子,来估计缺失值。
矩阵Um,k的行向量表示用户u的k维的潜在因子,表达用户的内部特性,矩阵Vn,k的行向量表示项目i的k维的潜在因子,表示项目的内部特性。利用矩阵U和V可以估计用户u对项目i的评分为:
对于任意矩阵,一定存在矩阵U和V使得Y=U*VT么?
但是一般情况下不一定能非常完美的进行矩阵分解,所以我们可以利用最小化偏差来不断训练参数,这里的参数theta = (U,V);