Matrix Factorization 推荐系统原理

问题描述

在推荐系统中,最重要的原始数据就是User和Item组成的二维矩阵,每一项的值就代表着某个User对某个Item打分项。这个矩阵会非常大,我们估算一下,假如某个网站有100万人和10万个商品,那么这个矩阵的大小就是:
10^6 * 10^5 = 10^11,1000亿个,是不是非常大,所以在真实的项目中是不存在这样一个矩阵的。但是为了机器学习,我们必须把这个矩阵组建起来,所以就有了Matrix Factorization这项技术。

Factor是什么?

这个在数学中叫做乘积因子,比如:
6 = 2 x 3
9 = 3 x 3
12 = 2 x 6 或者 12 = 3 x 4
就是把一个数,转化成另外两个因子的乘积。

Matrix Factorization技术也是类似的,我们相表示原始矩阵比较大,但是我们可以转化成两个比较小的矩阵,然后让他们进行点乘,最后相当于原始的大矩阵。

为什么一个大矩阵可以转化为两个小的矩阵乘积?

最根本的原因是推荐系统的User和Item的矩阵是Sparse矩阵,就是里边大部分都是不含有信息的,都是缺省的0,是因为一个User进行投票的Item是非常少的,和Item的总量10万相比。

数学推导

R^ = W * U(T)
这个就是矩阵分解的公司,我们希望找到这样一个W和U,让W和U的点积可以大约等于R,R^多做R hat,就是R的近似值。

我们希望W和U都尽量小。
W 的shape是(NxK), U的shape是(UxK)
N 代表的是用户数,U代表的是商品数,K代表的是特征数(大概10~50个)

分解的好处

假如 K=10, N=130K, M=26K如是W和U的大小分别为
NK + UK = 1.3million + 0.26Million = 1.56Million
而如果使用原始的矩阵,大小为
0.13million x 0.026million = 3.38billion
数据的压缩率是多少呢?
1.56million / 3.38billion = 0.0005
数小了非常多。这个就是进行数据分解的最主要的意义。

W和U能直接点乘吗?

我们获取W和U的目的是为了 进行W*U(T)的吗?
当然不是,因为这样一乘的结果又变成了原始的R(NxM),还是很大,不是吗?所以千万不要以为我们会用W点乘U,那么W和U到底是做什么的呢?

只获取矩阵中的值,但是不需要拥有这个矩阵

我们上一段中,我们知道W和U不能直接相乘,因为如果直接点乘我们就会获得原始矩阵R了。虽然我们没有必要倒推回R,但是我们可以获得其中的一个值。因为在我们的实际项目中,我们没必要推出R,但是我们可以随意的获取矩阵R中的任意值,不是也非常好了吗?

形象一点理解就是我不需要知道总体的矩阵R,但是我可以随意获取其中的值,不是很好吗?那么W和U就相当于一个庞大矩阵的一个接口,随意都是可以通过这个接口来得到里边的值,而没必要去拥有这个完整的矩阵。

如何获取矩阵中一个点的值

r^(i,j) = W(i)T * U(j)
r^(i,j) 代表大矩阵R中User i和Item j相交的值,就是User i对Item j的投票率rate。
W(i)T 就是用户i的K个特征值,shape为(1,K)
U(j) 就是Item i的K个特征值, shape为(1,K)
这里好像有错误,应该是:
r^(i,j) = W(i) * U(j)T,这样结果才是shape(1,1),就是代表其中的一个值。

矩阵分解和SVD的区别

在前面的章节中,我们学习过SVD(Singular value decomposition)
SVD是把一个矩阵分解为 三个矩阵的乘积。
X = USV(T)
X 分解为U S V,然后他们的乘积就相当于原始矩阵X。

其实SVD和这里说的矩阵分解,意思是一样的,只是一个分解为两个因子,一个分解为三个因子。

矩阵分解的现实意义是什么?

W里有N个K,其实就是每个用户对电影K个特征值的相关性。
U里有M个K,其实也是每个电影对K个特征值相关性。
把这两个都与K个特征相关的数组进行点积,那么得到的结果就是这两个数组的相关性。

为什么数组相乘就能表达相关性

这是一个非常好的问题?在机器学习中,经常会碰到。
打个比方,两个人见面聊天,一个人了喜欢聊汽车,另外一个人喜欢聊电脑,那么让他们在一块,吸引力自然就小。如果一个人喜欢聊美食,另外一个人也喜欢聊美食,那么两个人聊的就会很嗨。

在本案例中,W代表每个用户对K个特征的喜欢程度,U代表每个商品所能代表的K个特征。所以他们相乘的和就代表了U和W的相关性。

简单的数学表示就是:
+1 * +1 = +1
-1 * -1 = +1
+1 * -1 = -1
-1 * +1 = -1

推荐到底推荐的是什么?

知识点学习到这里,下面我们可以思考一个根本性的问题,就是推荐系统到底推荐的是什么?
我们在前面的系统当中我们已经知道了,推荐有两种:
一种基于用户的
找到相似的用户,那么他们就应该购买相似的商品,
一种基于商品的
找到相似的物品,如果用户购买了这个商品,那么我们就应该推荐像是的商品。

那么在matrix factorization里,到底是怎么推荐的呢?
我们具有的数据是一个用户对商品的rating矩阵,这个矩阵知道用户对某些商品的喜好,那么我们能不能根据用户对已经投票的商品,来推测用户对未知商品的投票率(喜好)。

那么这个有点类似前面的基于相似用户的推荐。但是这个和那个不同点是,这里不需要我们认为的去构建人的特征向量,然后找到相似的用户。也不用构建商品的特征向量,然后去寻找像是的商品。

也就是说matrix factorization不需要你自己去构建用户和商品的特征变量,它是自己内部运算出隐藏的K特征变量。

另外一个根本性的问题:机器学习什么?

学习到这里我们应该大致知道了Matrix Factorization是什么内容,以及用来干什么的了?那么这里需要理解一个根本性的问题,就是我们Matrix Factorization到底学习的是什么呢?
输入的数据就是用户对商品的喜好表R,当然我们不需要创建这么大的一个表,我们其实保留的是一个Diction,里边记录了每个用户对商品的rating值Dict((n,m) -> r)。
我们根据这些数据要学习出来的W和U,这样我们就可以根据W和U来推断出用户对任意商品的rating值了。

因此我们回到了这个问题,Matrix Factorization学习的是K个隐藏特征值。并由此特征值组成的两个因子矩阵W(NxK)和U(MxK)。

代码实现我们会在下一篇文章里去关注。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342