不到100行代码实现一个推荐系统

似乎咱的产品七,八年前就想做个推荐系统的,就是类似根据用户的喜好,自动的找到用户喜欢的电影或者节目,给用户做推荐。可是这么多年过去了,不知道是领导忘记了还是怎么了,连个影子还没见到。

而市场上各种产品的都有了推荐系统了。比如常见的各种购物网站京东,亚马逊,淘宝之类的商品推荐,视频网站优酷的的类似影片推荐,豆瓣音乐的音乐推荐......

一个好的推荐系统推荐的精度必然很高,能够真的发现用户的潜在需求或喜好,提高购物网詀的销量,让视频网站发现用户喜欢的收费电影... 可是要实现一个高精度的推荐系统不是那么容易的,netflix曾经悬赏高额奖金寻找能给其推荐系统的精确度提高10%的人,可见各个公司对推荐系统的重视和一个好的推荐系统确实能带来经济效益。

下面咱以电影电视的推荐系统为例,一步一步的来实现一个简单的推荐系统吧, 由于比较简单,整个推荐系统源码不到100行,大概70-80行吧,应该很容易掌握。 为了快速开发原型,咱采用Python代码来演示

 

1.  推荐系统的第一步,需要想办法收集信息

不同的业务,不同的推荐系统需要收集的信息不一样 针对咱要做的电影推荐,自然是每个用户对自己看过的电影的评价了,如下图所示:


Kai Zhou对Friends打分是4分, 对Bedtime Stories打分是3分,没有对RoboCop打分 Shuai Ge没有对Friends打分,对Bedtime Stories打分是3.5分 ...... 为简单,咱将此数据存成csv文件,形成一个二维的矩阵,假设存在D:\train.csv, 数据如下:


Name,Friends,Bedtime Stories,Dawn of the Planet of the Apes,RoboCop,Fargo,Cougar Town 
Kai Zhou,4,3,5,,1,2 
Shuai Ge,,3.5,3,4,2.5,4.5 
Mei Nv,3,4,2,3,2,3 
xiaoxianrou,2.5,3.5,3,3.5,2.5,3 
fengzhi,3,4,,5,3.5,3 
meinv,,4.5,,4,1, m
incat,3,3.5,1.5,5,3.5,3 
alex,2.5,3,,3.5,,4


数据有了,下面咱就正式开始干活了 ,推荐系统要干些什么呢?

咱以电影推荐来说,推荐系统需要解决的几个主要问题

1. 判断两个电影,两个观影人之间的相似度

2. 找到和某影片最相似的影片, 或找到和某观影人有同样兴趣的人

3. 找到某观影人可能喜欢的电影,或找到对某影片感兴趣的人

 

 2. 推荐系统的基础,判断相似度

针对咱的电影推荐来说,就是判断两个电影,两个观影人之间的相似度。 

2.1 欧几里德距离计算相似度 最简单的,最容易理解的就是欧几里德距离. 那么,什么是欧几里德距离,怎么用呢? 请对比评价数据,看下图:


咱用两个电影Fargo和Cougr Town来取例 图中X轴代表电影Fargo,  Y轴代表电影Cougr Town,  Kai Zhou给电影Fargo 打1分,Cougr Town打2分,画到图上

同理,咱可以将Shuai Ge和Mei Nv的数据点都画到图上 很明显,咱可以看出Kai Zhou与Mei Nv 离得近,与Shuai Ge离得远,所以说Kai Zhou与Mei Nv的兴趣更相近. 用数学式子表达出来就是:

Kai Zhou与Mei Nv的距离的平方:    (2 - 1)^2 + (3 - 2)^2 = 2

Kai Zhou 与Shuai Ge的距离的平方: (2.5 - 1)^2 + (4.5 - 2)^2 = 8.5

2 < 8.5, 所以Kai Zhou与Mei Nv比Shuai Ge兴趣更近. 这就是利用欧几里得距离来判断相似度   两个用户对所有电影的评价相似度的和,就是两用户的相似度


本博客已搬家至: http://www.kai-zhou.com,  其他博客已停止更新,欢迎访问:不到100行代码实现一个简单的推荐系统 查看文章的最新版本.  

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统和机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习与推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习和推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习和推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习和推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习和推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值