基于矩阵分解推荐算法之交替最小二乘法(ALS)--附实现代码

本文假定读者已经对以下内容有基本了解:
     1) 协同过滤算法
     2)基于模型的协同过滤算法;主要是基于矩阵分解的方法。知道如何将推荐和矩阵分解联系起来。
     3)对矩阵分解有基本的认识

本文的目的:
     本人的博客一直强调应用,对于任何的算法,会侧重对它的工程应用的介绍。相关的原理,推到演练不会涉及太深。所以本文也不会涉及太多这些方面的内容。最主要的目的是希望读者通过本文能够大概知道ALS是个什么东西,大致的流程是怎样的,在推荐中能做什么以及最终的工程实现方式。具体内容如下:
     1.基于矩阵分解的推荐简介
     2、ALS简介
     3、ALS推导
     4、基于ALS的协同过滤推荐实现(python代码)
     5、参考文献

1.基于矩阵分解的推荐简介

一个基于已有的用户对物品的评分来给用户推荐未评分过的物品的推荐问题,可以转换为一个用户-物品评分矩阵,然后基于矩阵中已知的元素预测为空的项。对应推荐中的方法就是协同过滤算法。我们知道,协同过滤算法分为两大类,一类是基于内存(memory-based)的算法(包括基于用户的和基于物品的协同过滤);另一类是基于模型的协同过滤。矩阵分解就是一种基于模型的算法。
假设有n个用户,m个物品,得到一个n×m的评分矩阵。在实际的工程中,这样的矩阵通常都会比较大,用户评分相对整个矩阵维度大小(n×m)会非常小,也就是矩阵是非常稀疏的。稀疏性会更加严重的影响基于内存的协同过滤算法。因为这种方法会基于用户间评价物品的交集,数据稀疏的情况下,用户间的交集可能很少,或者没有。矩阵分解的方法不同,它会尝试选择一个相对要小的多的一个数值k,然后,将原始评分矩阵分解为两个矩阵,一个m×k的矩阵和一个k×n矩阵。前者的每一行(向量)代表一个用户,后者的每一列代表一个物品。然后,用前一个矩阵的某一行乘以后者的一列,就表示相应的用户对物品的预测评分。形式化的定义如下:
用户矩阵:
这里写图片描述
注意, 这里一列表示一个用户。
物品矩阵
这里写图片描述

rui
【参考文献】
1、MATRIX Factorization Techniques For Rwcommender Systems
2、Explicit Matrix Factorization: ALS, SGD, and All That Jazz
3.CME 323: Distributed Algorithms and Optimization, Spring 2015 14 Matrix Completion via Alternating Least Square(ALS)

你可能感兴趣的:(基于矩阵分解推荐算法之交替最小二乘法(ALS)--附实现代码)