1、算法简介
(1)推荐算法常见使用场景:电商产品推荐。基于产品的算法推荐,是分析用户历史行为数据,选择用户的浏览量、点赞数、评论数等数据高的产品,去推荐相似产品给用户。
(2)推荐算法作用:帮助用户发现他们感兴趣的产品。(1)节省用户的搜索时间,提高用户体验,减少流失。(2)延长用户的网站使用时间,提高用户忠诚度。

2、算法原理
(1)计算产品之间的相似度,生成相似度矩阵:
计算产品相似度可用3种方法:夹角余弦、杰卡德(Jaccard)相似系数、相关系数。
注:用户行为为二元选择(0/1)时,建议采用杰卡德相似系数。

相似度矩阵:

(2)基于产品相似度和用户已浏览产品a的数据,根据公式P=SIM*R,计算用户对未浏览产品b的感兴趣程度。

  • P-用户对b产品的感兴趣程度

  • SIM-a与b产品之间的相似度

  • R-用户对a产品感兴趣与否(1/0)

(3)基于产品相似度矩阵,推荐算法会给用户推荐与其数据最高产品最相似的K个产品。也可以基于产品兴趣度,给用户推荐其兴趣度最高的K个产品。

3、算法实现:
基于Python的Numpy库

import numpy as np#计算杰卡德相似系数的函数
#a:喜欢a产品的用户数
#b:喜欢b产品的用户数
def Jaccard(a,b):return 1.0*(a*b).sum()/(a+b-a*b).sum()class Remommendor():sim =None #相似度矩阵#计算相似度矩阵的函数def similarity(self,x,jaccard):y = np.ones((len(x),len(x)))for i in range(len(x)):for j in range(len(x)):y[i,j] = jaccard(x[i],y[j])return y #训练函数def fit(self,x,jaccard = Jaccard):self.sim = self.similarity(x.jaccard)#推荐函数def recommend(self,a):return np.dot(self.sim,a)*(1-a)

4、模型评估:
对于用户可给产品打分的网站,使用预测准确度的评估指标。
对于用户只能选择“喜欢与否\浏览与否”的网站,要用分类准确度的评估指标。

这里重点解释基于分类准确度数据构建的模型的3个评估指标:

(1)准确率precesion:用户对被推荐产品感兴趣的概率;
准确率=用户被推荐产品中喜欢的数目/用户被推荐产品总数
(2)召回率recall:一个用户喜欢的产品被推荐的概率;
Recall=用户喜欢且被推荐的产品数/(用户喜欢且被推荐产品数+用户喜欢且违背推荐产品数);
(3)F1:综合考虑准确率和召回率,更好地评价算法的优劣;
评估指标分数越高越好。

5、注意事项

以上为个性化推荐,还有2种相关推荐列表:
(1)推荐用户购买过的商品的相关商品
(2)推荐浏览过该商品的其他用户经常购买的其他商品
相关推荐列表,是根据不同用户的行为,去计算商品的相似性,后面再写;

机器学习(一)协同过滤推荐算法相关推荐

  1. 推荐算法和机器学习系列 - 协同过滤推荐算法和余弦相似性算法

    协同过滤算法 协同过滤(CF)推荐算法通过在用户活动中寻找特定模式来为用户产生有效推荐.它依赖于系统中用户的惯用数据,例如通过用户对其阅读过书籍的评价可以推断出用户的阅读偏好.这种算法的核心思想就是: ...

  2. 基于机器学习实现协同过滤推荐算法的电影推荐系统

    推荐算法在互联网行业的应用非常广泛,今日头条.美团点评等都有个性化推荐,推荐算法抽象来讲,是一种对于内容满意度的拟合函数,涉及到用户特征和内容特征,作为模型训练所需维度的两大来源,而点击率,页面停留时 ...

  3. 14 机器学习 - CF协同过滤推荐算法原理

    1 概述 什么是协同过滤 (Collaborative Filtering, 简称 CF)? 首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做? 大部分的人会问问周围的朋友 ...

  4. Java语言开发在线购物推荐网 购物商城推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线购物推荐网 购物商城推荐系统 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据.人工智能.机器学习项目开发ShopRec ...

  5. Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据.人工智能.机器学习项目开发Mus ...

  6. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智能开发 FoodRecom ...

  7. 使用Java+SSM(Spring+SpringMVC+Mybatis)开发在线美食推荐网 美食推荐系统 美食天下美食爬虫 基于用户、物品的协同过滤推荐算法实现 大数据、人工智能、机器学习项目开发

    使用Java+SSM(Spring+SpringMVC+Mybatis)开发在线美食推荐网 美食推荐系统 美食天下美食爬虫 基于用户.物品的协同过滤推荐算法实现 大数据.人工智能.机器学习项目开发Fo ...

  8. 使用Java语言开发在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis)开发框架 机器学习、人工智能、大数据开发

    使用Java语言开发在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis)开发框架 机器学习.人工智能.大数据开发 ...

  9. 使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline

    使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline 一.项目简 ...

  10. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

最新文章

  1. 用户空间与内核空间数据交换的方式(zz)
  2. 获取前一天的时间安排表_要想有一个完美的婚礼 这份婚庆策划时间表少不了...
  3. 《炉石传说》架构设计赏析(1):游戏启动流程
  4. zkui - Zookeeper的Web UI界面 windows环境
  5. Vmware中的centos虚拟机克隆之后没有eth0
  6. python自动化工具哪个好用_微软最强 Python 自动化工具开源了!不用写一行代码!...
  7. js和python交互_JSShell:一个基于python的交互式Shell
  8. rocketmq namesrv 第一章启动过程
  9. Oracle如何根据SQL_TEXT生成SQL_ID
  10. 17.1加入主题模型的文本增强
  11. 操作系统--存储管理的任务
  12. 在vpc 2007上安装 ubuntu8.04-desktop(多图解)(转)
  13. php 支付宝退款40004,接入支付宝支付 错误码4000,排查方法——开发记录
  14. linux内存管理笔记(三十四)----匿名映射
  15. MATLAB系列笔记:三维绘图(一)
  16. FL Studio 20.9.2官方中文版全新发布更新功能介绍
  17. 敢用这张图片做“壁纸”手机秒变砖!
  18. 使用JXTA技术建立P2P网络(转)
  19. 国标流媒体服务器可以接入海康摄像头吗?是否会有断流问题?
  20. 广东二级计算机考试报名费用,广东二级计算机考试报名时间

热门文章

  1. 计算机学的是苹果系统,苹果电脑装windows7教程 苹果电脑装windows7方法
  2. COPY NAV导航网格寻路 -- 光照射线法
  3. vector_map矢量化地图的生成方法
  4. 【定时任务】cron表达式在线生成器怎么用?
  5. SWMM的改进版本,HS-SWMM的安装教程
  6. Flask接口开发教程
  7. 机器学习基石 作业四
  8. kindle刷机ttl_摔一下变砖了,ttl刷机没效果,谁帮看看最后三行那个error什么意...
  9. Java软件开发技术交流群
  10. 如何把JSON对象转为map对象