显示标签为“svd”的博文。显示所有博文
显示标签为“svd”的博文。显示所有博文

2009年4月10日星期五

clustering items and users by latent factors?

By SVD model, we can calculate latent factors for users and items. p(u) is latent factor for u, while q(i) is latent factor for i.

Recently, I thought about calculate user similarity by latent factor,

For example,

s(u,v) = f(p(u), p(v)) ?

I am testing this idea now, and I hope this idea can improve prediction accuracy.

PS.
I have tested this method on the residual of NSVD model. By using this clustering method in estimating group effects, I reduce the RMSE of NSVD model from 0.8923 to 0.8910

2009年4月7日星期二

关于评分分布的思考

对于一部电影,它被一堆人评分了,这些评分具有一些属性,均值,方差,偏差,等等。
目前我在设计一个新的模型,对于每一部电影,我们计算他的平均得分,记为m(i),那么对于一个用户-电影(u,i),
我建立如下的模型来估计他的评分

r(u,i) = mu + bu + bi + dot(p[u], q[i]) * h[k]

其中,k = m(i)

这个模型可以不断的变换,比如我们也可以令k = var(i),也就是说

dot(p[u], q[i]) * h[k]

表示了用户u对具有k属性的电影i的看法。 我仍然用梯度法训练这个模型。结果稍后公布。

2009年3月12日星期四

基于分解的邻域算法

经过一夜的计算,NSVD算法终于跑出了一个50维的结果,我将他放入到融合模型中,没想到性能有大大的提升,RMSE从0.8873到了0.8811

模型的基本公式如下,也是用梯度法训练的。




---------------------------------------------------
本文使用了在线Latex公式编辑器,感觉不错,地址是http://thornahawk.unitedti.org/equationeditor/equationeditor.php

普通的SVD方法已经到头了

之前我的融合算法中,svd用的最高是500个latent class,刚刚加入了1000维的,最终RMSE只是从0.8874变成了0.8873,看来单纯增加维数已经没有用了。

下一步工作主要是改进NSVD(Neighborhood based SVD)算法,个人感觉,SVD和邻域加上一些非线性核函数,应该是所有可用的方法,而RBM,个人感觉,有点像加了核函数的NSVD算法。

2009年3月6日星期五

考虑用户时间因素的SVD模型(TimeSVD02Model)

这个模型中,考虑了user评分的时间变化因素,在基本的SVD模型中加入了一项,变为

r(u,i,t) = mean + b(u) + b(i) + b(t) + dot(p(u),q(i)) + dot(x(u),y(t))

其中p(u),q(i)是一个d1维的向量,x(u),y(t)是一个d2维的向量

2009年3月5日星期四

关于SVD模型中的kernel

基本的svd模型是
r(ui) = mean + b(u) + b(i) + dot(p(u), q(i))

dot()是表示两个向量的点乘。

其实这里的dot(p(u),q(i))是考虑到了u和i的特点对均值做的一个偏差。他的分布应该是以0为中心的正态分布。我现在考虑引入kernel函数,目前用sigmoid核函数。

sigmoid(x) = a * (1 - exp(-kx)) / (1 + exp(-kx))