0912_Collective Intelligence Programming Reading Notes

来源:互联网 发布:网络用语猜成语 编辑:程序博客网 时间:2024/05/18 20:35

读了两天的机器学习方面的书,一般都觉得太高大上了,这次仔细翻开入门书,才顿觉之前大学必修课程——数值代数计算的重要性;当然还有之前参加美赛时候学习的matlab的曲线拟合不仅仅只是在建立模型时有用,在日常生活中同样适用。

才翻了近20页的书,不算特别多,不过还是蛮有感触的。

姑且不谈前几页谈的人工智能的作用之类,我们从实际算法开始说起。

根据都评价了的影片进行相似度评价:(比较两人的已作相同电影的评价相似度)

1. 欧几里得距离 similarity-distance

sim_distance = 1 / ( 1 + sqrt ( Σ (a - b)² ) )

2. 皮尔逊相关系数 similarity-pearson(解决欧几里得距离不能解决的用户起评分数不同,但是评价相同的问题)

sim_pearson = ( Σ ( a * b ) -  Σ ( a ) * Σ ( b )  / n )  / sqrt ( ( Σ ( a² ) - Σ ² ( a ) / n ) * ( Σ( b² ) - Σ ² ( b ) / n ) )

以已看的电影所作出的评价为依据,找出评价最为相似的群体(个人),为用户推荐其他电影。

ranking = Σ ( sim_distance * grade ) / Σ ( sim_distance )

ranking = Σ ( sim_pearson * grade ) / Σ ( sim_pearson )

为了解决某些用户可能对部分电影特别青睐导致推荐有误,采用对不同相似度的用户进行加权操作,结果显示不论是皮尔逊相关系数亦或是欧几里得距离,最终的算法得到的结果是大抵相同的。

那么就足以解决相似度推荐的问题。

算法大多是使用python写的,且大量使用了python特有的字典(类似json数组或者是map容器)和列表,对于列表推导式,之前学习python基本语法时真的比较少接触,还是比较习惯写java/c++/php中的foreach、while操作。

今天就先整理这么多吧!

0 0
原创粉丝点击