昨天晚上撸了一整晚的验证码,今天有点累。最近工作上一直都出现机器学习的影子,想把这方面看一看。
仅仅就是看看,毕竟不是程序员,能够懂原理,能够用别人开发好的轮子就行了 ,我发誓。
欧几里德算法和皮尔逊算法作为集体智慧第一章入门算法,给了很少的篇幅来讲解,写这篇到不是因为他有多难,仅仅是因为,书中的角度让我很不爽
欧几里德
欧几里德的使用场景是用户对产品进行评分,通过对这些数据的分析,获得品味相同的用户。
用向量的角度来看
用户对产品评分看作空间的点a(a1,a2,a3,.....) 其中a是产品,a1,a2,a3,等是评分
产品评分看作空间的点b(b1,b2,b3,.....) 其中b是产品,b1,b2,b3,等是评分
当两个用户的品味越接近,对产品的评分也应该越接近,则空间两点之间的距离应该越近,所以,这个问题就转换为空间两点之间的距离问题。
但是,人们很快发现一个问题,评分这件事,们个人的标准不一样,比如说,松岛枫是两个人最喜欢的女优,但是用户A评分是一个比较闷骚的人,不愿意表达出自己的真实情感,分数总是压得很低。用户B是一个享受人生的人,真是的面对自己,打分相对高,面对这种问题,欧几里德完全失去作用。
皮尔逊算法
皮尔逊算法就是解决上面的问题,不是打分标准不一样吗,没关系,只要打分趋势一样就行了。
假设用户A对物品a,b,c,d...打分,建立向量A(a1,b1,c1,d1...)
假设用户B对物品a,b,c,d...打分,建立向量B(a2,b2,c2,d2...)
只需要算出a和b之间的夹角,如果是0,说明趋势相同
下面是高中的数学
空间两点之间的距离
向量之间的距离
但是我忘了啊 ,用的时候在百度吧