推荐系统中矩阵分解算法-funkSVD和ALS

bdqnwqk3个月前问题9

矩阵分解funkSVD:该矩阵分解不像是线代中的,他属于伪分解。其主要思想是,用两个m*k和k*n的矩阵代替m*n的矩阵。

因为在推荐系统中,矩阵十分稀疏,分解后的矩阵一般是密集的,且可以通过行列相乘来得到空缺的值。

(其预测的是第u个用户对第i个商品的评分)

其通过机器学习最小化损失函数来得到矩阵,

其学习方式有两种,一种是随机梯度下降,一种是交替最小二乘。

第一种不说,随处可见。第二种是通过

该式子实现的。

我们先随机化一个Q,因为R是那个稀疏矩阵已知,所以能得到P,我们再反过来用PR求Q。直到模型的误差低于一个阈值。

上面的svd是对于评分的算法,还有svd++等对用户,物品做了偏移项。

隐式矩阵分解(最常见)ALS

我们一般的推荐问题不是通过评分推荐,因为评分的产生十分的困难,一般用户没有这个习惯。我们与其预测评分,不如去预测用户行为。如果我们给用户一个页面有十个商品,我们预测到用户会点击哪一个,这不就说明用户喜欢这个。而且基于用户的信息很多。

我们的矩阵由1,0和空缺组成,1表示该用户点击过该商品(即表示用户对它有想法),0表示用户对它没有想法(怎么是没想法呢,我们定义用户知道他却不想了解他。即我们在所有没有点击该商品的用户中抽样,该商品越火热抽取的人越多。因为热门的东西大家应该都知道,而你却没点击他,说明他不感兴趣)

我们要将该矩阵分解。

我们的损失函数是

Cui是置信度,比如我点击10次当时比只点击一次的喜欢置信度高。

对于学习方法,我们使用加权交替最小二乘法

初始化Y,我们计算出x,再通过

计算出y。再反复交替,直到小于阈值。

该算法目前在spark上有实现。且sparkml将其作为唯一的推荐系统算法。

关于选择电脑系统的一个问题?

不建议你用WIN7 因为我2G内存 也觉得不太够 有点紧 打游戏用XP 就好了 如果你4G 内存 上WIN7+游戏 也没问题  +上你CPU 也不太好 所以 继续XP

选择系统问题

当然是装windows7了,vista只是个过渡产品,昙花一现而已,并不好用
下载win7的话当然是版本越新越好,楼主用双系统吧,毕竟现在win7还不是正式版,部分地方还是有兼容性问题和小bug,楼主现在应该用的是xp吧?装个win7体验一下米有问题的.

不知道你要哪个版本的 这个是官方RC版的下载地址 也是微软发布的最新版
记得安装完英文原版以后通过自动更新获取中文语言包哈^_^