1
ray58750034 2011-05-25 14:17:30 +08:00
我想到的一个方案是, 比如 A B两张照片, X喜欢照片A, 如何计算X喜欢照片B的可能性:
计算所有喜欢照片A的人中喜欢照片B的数量的比例, 作为打分样本1; 计算所有喜欢照片B的人中喜欢照片A的数量的比例, 作为打分样本2; (样本1 + 样本2) /2 就是X喜欢照片B的可能性。 |
2
leben OP 这个办法倒是蛮简单的,呵呵。不过我想实现的是一个照片推荐系统,一对一的原理都比较简单,但是涉及到具体怎么做,我有点摸不到头绪。从来没有接触过这方面。
简单看了一下,slope one是基于rate的,就是说user必须给item一个rate,这个rate是一个范围,然后slope one会计算当前用户对某一个item可能给出的rate。但是如果仅仅是0和1的时候就不适合了,因为0.5你是算0还是1。 据说amazon的item-to-item是根据余弦相关度做的,这方面google有一篇文章说明。我的理解是把某一个item的用户是否喜欢作为维度,将item视为一个向量,然后计算任意两个item的余眩,余眩越小相似度越高。 这两种算法问题不大,我的问题是,怎么样在系统中应用。 1、每次查看一张图片的时候是否要计算当前图片和其他所有图片的相似度,然后排序列出相似度最高的那些。 2、如果我想看当前用户可能喜欢的照片,那么基准就是当前用户所有习惯过得照片,那这个获取的相似照片应该怎么排列。 3、实际上这些算法都非常耗费时间,肯定不能实时生成,实际使用应该使用的是数据挖掘吧,那么它的计算频率、计算时间、选取的样本。还有应该不会在web或者db服务器计算,我看豆瓣是单独用机器做数据挖掘的。 希望有熟悉这个方面的达人多多指点。 |
3
ray58750034 2011-05-25 15:10:41 +08:00
这里的样本1 可以理解为user1, 只是因为你的系统没有打分这个环节,所以用另一种方式采样,使得它有打分而已。
具体做法,就是把一对一的模型应用到大数据里去, 然后尽量都事先算好,多做缓存。 还有你的第二点,我觉得不需要把所有喜欢过的照片做基准, 算法搞复杂了可能准确性反而只有低。 |