集体智慧编程学习笔记--第二章

来源:互联网 发布:风险评价矩阵图 编辑:程序博客网 时间:2024/05/17 20:09

前言

什么是集体智慧?

答:为了创造新的想法,而将一群人的行为、偏好或思想组合在一起。

第二章:提供推荐

例子:影片推荐

一、名词:协作型过滤算法(collaborative filtering)
对一大群人进行搜索,从中找到与我们品味相近的一小群人。
二、搜集偏好
非常简单的方法是使用一个嵌套的字典
三、寻找品味相近的人

步骤:

1、将属性的值对应到数值。如喜欢:1不喜欢-1;已购买2,已浏览1未购买0;进行评分1,2,3,4
2、相似度评价值:用来确定与其他人的相似程度的度量。

常用两种度量:

①【欧几里得距离】:欧式空间上两点之间的距离的模值。 

python中pow(m,n) m的n次方 sqrt(m)m的平方根。

在使用aqrt时要注意,from math import sqrt

距离越小,偏好越接近。不过为了使得总是返回0-1之间的值,对距离进行处理1/(1+sqrt(pow(a-b,2)+pow(c-d),2))),+1是为了避免被零整除。

这样,值越接近1就表示越相似。

代码

但是,如果影评者对影片的总体评价对于平均水平偏离很大,那么可能用距离的度量就不是很好。使用皮尔森系数会给出比较好的结果

②【皮尔逊相关系数】:就是线性相关程度。是介于-1与1之间的数,1完全正相关,-1完全负相关。

想想如果一个人对不同电影打分总是比另一个人偏高,而二者的分值只差又始终保持一致。

反应在坐标系上,数据会拟合成一条直线。两个的分数的相关程度越高,说明两人仍有着相对近似的偏好。

皮尔森相关系数及原理

代码

③【其他度量】:jaccard系数、曼哈顿街区距离。

3、为评论者打分

就是将所有评论者的相似度进行列表排序,顺序由高到低。

代码中n代表显示趣味相投的前n个人
4、推荐物品
有一个问题是,有时候有的人对一部影片进行评论但未对另一部影片进行评论。还有一个问题是有的人会对一部影片进行比较偏激的评论。
为了解决这种问题,设置权值。把相似度看成权值,这样与被推荐人趣味相近的人对推荐做的贡献就大。
加权后的评价值= 评价值*相似度系数 ,影片得分=加权评价值之和 / 相似度系数之和
这样就得到了一个经过排名的影片列表,还可以据此推测出自己对每部影片的评价。

现在,就建立起一个推荐系统,适用于任何类型的商品推荐或者网络连接。

需要的就是建立一个有人员、物品、评价的字典。然后度量相似度。最后按照相似度排序进行推荐。


0 0
原创粉丝点击