Making recommendation心得总结:
这一章主要讲了基于 人相似 和 物相似的两种推荐方法。
从根本上讲:
人和物是两个对等的类。
一个人对某个物品评分,和某个物品被人评分其实是双向关系。所以广义上来讲,不用区分主动和被动。
所以对一个人推荐某些物品,和给物品指派给某些人是完全对称的。所以对于一般的推荐系统可以采用两种思路设计:
常规思路:给人推荐物品:1,找到和你相似的人,基于人相似,预测。
逆向思路:把物品推荐给人:2,找到你选过的物品,基于物品相似,预测。
两种预测在计算的时候完全一样,预测评分=相似度*历史评分
一个是做人的数据挖掘,利用人和人的相似程度。
一个是做物品的数据挖掘,利用物品之间的相似程度。
这种对称思想在求解物品相似矩阵和人相似矩阵的时候是可以借鉴的。当把物品看做人的属性时,求的人的相似矩阵;当把人看做物品的属性时,求的物品的相似矩阵。
有一根主线:推荐系统其实是利用相似性进行预测!其他数据挖掘的算法应该也差不多。
更深入地讲:因为相似性产生了影响,根据影响来预测。从概率上来讲就是相似的物体并不是条件独立的。所以可以用来进行预测。
如果能这样理解,这一章大部分的内容就被穿成一体了。
——————————————————————————————————————————————————————————————————————
下面记录我这个刚接触python学到的一些细节:
数据结构:list可以append,不过要先=[]初始化,这一步其实也是告诉编译器这个变量是list,
dic={}也是告诉编译器dic是字典。
难句:scores=[(similarity(prefs,person,other),other)
for other in prefs if other!=person]
list和dic都可以用for来赋值,语句都是从未到头编译 for other in prefs if other!=person先执行。这个list里的元素是pair。好吧。。。。list里面也可以由pair
python的变态地方:
可以传函数指针啊,随便传啊。bug啊。看如下语句:
scores=topMatches(itemPrefs,item,n=n,similarity=sim_distance)
等价于
scores=topMatches(itemPrefs,item,n,sim_distance)
最后与各参数是函数指针。
python的注释:
1.
'''
缩进+内容
'''
缩进是不能省略的。
2.“#”:注释一行
Python的读写文件
http://blog.sina.com.cn/s/blog_4ef8be9f0100gdax.html
Python获取当前路径:当前路径是代码所在文件夹。使用当前路径不需要加‘/’,据对路径要用'\\',获取路径代码
import os
_localDir=os.path.dirname(__file__)
_curpath=os.path.normpath(os.path.join(os.getcwd(),_localDir))
curpath=_curpath
——————————————————————————————————————————————————————————————————————
下面是书中提供的挖掘数据下载:
http://www.audioscrobbler.net 音乐推荐网站,提供api, 可下载数据
http://www.grouplens.org/node/12 电影推荐数据下载
del.icio.us 这个就不用说了吧