专栏名称: dwzb
目录
相关文章推荐
上下五千年故事  ·  孙思邈有个千古名方,专清体内各种的湿气、痰浊 ... ·  3 天前  
天都新闻  ·  国乒公布澳门世界杯参赛名单 ·  2 天前  
天都新闻  ·  国乒公布澳门世界杯参赛名单 ·  2 天前  
51好读  ›  专栏  ›  dwzb

PyCon 2018: SVD推荐系统在Python中的实践

dwzb  · 掘金  ·  · 2018-06-01 09:04

正文

PyCon 2018: SVD推荐系统在Python中的实践

引言

继搜索引擎之后,推荐系统改变了用户与网站之间的交互方式,在提高用户参与度和多样化推荐产品方面有重要的应用。亚马逊有35%的利润来源于它的推荐系统,Netflix有75%的用户根据推荐系统选择电影。

推荐系统是一个非常大的话题,本文介绍一种常用的基于模型的协同过滤算法——SVD(奇异值分解),在python中的使用。

假设我们用m个用户,n个商品,每个用户对每个商品的评分可以组成一个m*n的二维矩阵。当然,这个矩阵中会有非常多的值是不知道的,可能是用户没有用过这个商品,也有可能用户使用后没有进行评分。如下图所示

图中空白位置即未知的值。接下来,我们需要做的是根据这个残缺的二维矩阵中已知的值,预测出未知的值,即预测出每一个用户对每一个商品的评分。

可以想象,当矩阵被预测值补充完整之后,矩阵的每一行即表示一个用户对所有商品的评分,可以从这些评分中提取评分最高的几个商品推荐给用户,这样我们就完成了一个推荐系统模型。

接下来,就是如何通过已知值预测未知值的问题了,这里我们采用矩阵分解的方式,如图所示

中间矩阵可以拆分为左边和上边两个矩阵的乘积,这就是奇异值分解,一个矩阵总是可以拆分成两个矩阵相乘,SVD的原理可以见 这篇博客 ,SVD方法在推荐系统中应用的原理可以参考 这篇博客 ,下面,我们主要来讲讲如何在python中使用。







请到「今天看啥」查看全文