跳过正文
  1. 博客/
  2. AI/

集体智慧编程之推荐系统(Programming Colletive Intelligence)

·2 分钟· ·
AI 推荐系统
目录

看过好几把关于机器学习的书,但是很多书只是停留于算法原理阶段,或者更着重介绍算法原理, «集体智慧编程»这本书更多的是从实践来介绍书,比如你要撘一个推荐系统你怎么做,,还有怎么来做一个垃圾邮件过滤系统等….
接下来介绍一下我对于做一个推荐系统的理解.

前言
#

推荐系统是一个什么东西呢
简单来说就是两个字—-推荐

推荐系统的出现是伴随评价系统出现而出现的,评价系统就是我们的打分制,比如对一部电影每个人都对他进行打分

用户 电影A评价 电影B评价 新电影C评价 新电影D评价
张三 5.0 3.5 4.9 2.0
李四 2.5 5.0 2.0 3.0
王二 3.1 4.7

比如现在三个人张三李四王二,王二有两部电影没有看过,但是张三和李四看过了,现在就是要把电影C或D推荐给王二,推荐系统就是从其他数据分析来确定推荐次序

相似度
#

推荐系统如何根据其他用户的数据来推荐呢

这里就要介绍一个相似度的概念,也可以加权系数,对于张三和李四,这两个人都看过电影C和D,但是我们该听谁的呢,我们可以把两个人的评价加起来然后排序,但是假如张三和李四品味相差太多,而且张三的评价可能会把某个王二喜欢看的电影评价总值拉低

这个时候我们就要考虑一个相似度问题,就是尽量避免一些品味同王二不同的人对排名造成影响

这里我们引进相似度这个概念,我们看张三和李四对电影A、B同王二的差别,这里我们使用距离这个概念,我们使用距离公式 l=((r1^2 + r2^2+....rN^2)^1/n)

然后通过距离算得S(相似度)=1/(1+l)

当l=0时,两者相似度为1(最大),当l很大时,相似度几乎为零

用户 电影A评价 电影B评价 相似度
张三 5.0 3.5 0.23
李四 2.5 5.0 0.59

通过求相似度(权重)我们就把同我们臭味相投的人的评价提高了,那些同我们不一样品味的人评价作用降低了

选择
#

基于人物的评价推荐有个缺点就是人的评价有时候会比物品多,而且变化频繁,假如使用上面的方法的话,每次每一个用户评价过后,就要重新算一次相似度了,假如用户不多或者电影不多还好,一旦数据偏多服务器就扛不住了

所以我们要换一个角度出发,计算物品的相似度,这样图表就变成这样了

电影 用户-张三 用户-李四 相似度
A 5.0 2.5
B 3.5 5.0

这样有个好处就是可以离线处理数据,我们可以搭建一个离线处理系统,让一个系统专门处理数据,当服务器需要的时候再拿取过去.

总结
#

搭建一个简单推荐系统并不会你想象中那么简单,但是要搭建一个功能强大速度快的推荐系统需要的不仅仅是这么一点,还需要考虑系统的稳定和速度.

相关文章

<<机器学习实战>>心得.
·2 分钟
AI 心得
先谈谈我对机器学习的理解 # 什么是机器学习? # 我们人类有从婴儿开始就开始学习,父母教我们穿衣吃饭、老师教我们读书写字,我们开始能辨别好人坏人,开始通过自己的经验来判断新事物。
git 工作流程
·3 分钟
后端 软件
git是当今流行的版本控制工具,一般我们可能只要会push, pull就可以了, 但是当我们同别人共同工作的时候,我们必须要了解git协同开发的一些重要流程.
8月 总结
·3 分钟
随笔 人生
因为这段时间待在家没什么事干,虽然完成一个小的项目,也还有很多功能需要完善,但是说实话还是有点迷茫,明年就大三了,接下来有两条路给我走,要么是考研,要么是出去工作. 自己算是个半个程序员吧,web开发那一套前后端撸起袖子都能搞出点名堂来,但是为什么说我是半个程序员呢,因为现在我还不知道我是爱他还是不爱他呢.
js的this引发的思考
·2 分钟
随笔 编程
最近这几天在开发一个hmtl5的游戏, 但是对于js怎么使用面对对象来编程有点困惑,查了一些资料 整理如下.
关于技术栈的总结
·3 分钟
随笔 人生
这段时间重新学习了web前端的技术栈,其实一开始加入社团时就是从前端开始入门的,等到了会仿写几个页面后就跳到了后端的坑,从html、css、js(只学了一点)又马不停蹄的转到.net平台、后来在老司机的带领下我们放弃了不开放的.net平台投入了python的怀抱
刷题笔记
·1 分钟
随笔 编程
在牛客网刷了16道题了,在这做个总结 概况 # 编程题无非两种一种考算法,一种考数据结构