在协同过滤中应用 svd,其实是个最优化问题,我们假设用户和物品之间没有直接关系,但是定义了一个维度,称为 feature,feature 是用来刻画特征的,比如描述这个电影是喜剧还是悲剧,是动作片还是爱情片,而用户和 feature 之间是有关系的,比如某个用户必选看爱情片,另外一个用户喜欢看动作片,物品和 feature 之间也是有关系的,比如某个电影是喜剧,某个电影是悲剧,那么通过和 feature 之间的联系,我们可以把一个评分矩阵 rating = m*n(m 代表用户数,n 代表物品数)分解成两个矩阵的相乘:user_feature*T(item_feature), T() 表示转置,其中 user_feature 是 m*k的(k 是 feature 维度,可以随便定),item_feature 是 n*k 的,那么我们要做的就是求出这两者矩阵中的值,使得两矩阵相乘的结果和原来的评分矩阵越接近越好。 阅读原文 »

1 收藏


直接登录

推荐关注