专栏首页大数据风控R中协同过滤算法

R中协同过滤算法

协同过滤(Collaborative Filtering,简称CF)

协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于其他相似顾客对哪些产品感兴趣的分析。

数据结构 协同过滤,主要收集每个用户对使用过的物品的评价。 评价可以理解为经常在电商网站上出现的,五星级的评分。 注意:不同用户的评分标准不同,所以需要对评分进行标准化处理。 标准化为0-1之间的值。

①用户评分向量

②商品评分向量

③向量距离计算(采用欧氏距离)

④相似度计算(Similarity) sim(x,y)=1/1+d(x,y)

⑤越接近1越相似,越接近0越不相似

⑥相似邻居计算

  • 固定数量的邻居(k-neighborhods)

不论邻居的“远近”,只取最近的k个,作为其邻居。

  • 基于相似度门槛的邻居(Threshold-based neighborhoods)

基于相似度门槛的邻居计算是对邻居的远近进行最大值的限制,落在以当前点为中心,距离k的区域的所有点都作为当前点的邻居。

实现协同过滤的API

(API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令) install.packages(“recommenderlab”) Recommender(x,method=”UBCF”,parameter) 1、x 训练样本 2、method 推荐方法,UBCF为基于用户的协同过滤方法 3、parameter推荐方法的参数(是一个list对象) method 距离的计算方法

  • euclidean 欧式距离
  • pearson 皮尔森距离
  • cosine 余弦距离

nn 固定邻居的数量 normalize是否标准化,默认为FALSE

代码实现:

library(recommenderlab)

data <- read.csv('data.csv')

rm <- as(data, "realRatingMatrix")

rec <- Recommender(
  rm, 
  method="UBCF", 
  parameter=list(
    method="euclidean",
    nn=3
  )
)

pre <- predict(rec, rm, n=1)

as(pre, 'list')

$`1`
[1] "104"

$`2`
[1] "107"

我们可以看到,给用户1推荐的是104,给用户2推荐的是107 协同过滤算法目前应用于各大电商网站,我们经常可以电商网站中看到猜你喜欢之类的栏目,就是根据协同过滤算法得到的结果!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R中如何用ifelse进行数据分组

    数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分来研究,以揭示内在的联系和规律性; 在R中,我们常用ifelse函数来进...

    Erin
  • R中数据的标准化0-1标准化

    数据标准化,是将数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化; x=(x-min)/(max-min) >data <- read.csv('1...

    Erin
  • R中的线性回归分析

    回归分析(regression analysis) 回归分析是研究自变量与因变量之间关系形式的分析方法,它主要是通过建立因变量Y与影响它的自变量Xi(i=1,2...

    Erin
  • vue+element踩坑记-实时获取页面的xy坐标

    今天没事的时候自己写着玩想到一个以前喜欢用jQuery写的实时获取坐标的这样一个事情,今天用vue简单的实现一下,因为我的windows在公司,我的mac没有安...

    何处锦绣不灰堆
  • vue笔记

    https://github.com/vuejs/vue-devtools#vue-devtools

    lilugirl
  • vue-element-admin 运行并且打包部署

    vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,...

    王小婷
  • O2O:移动互联网时代的商业革命

    最近要去上海见一位做O2O业内的朋友,也见到了这本书的作者。我现在从事的是微信第三方开发行业,虽然一些应用和O2O相关,但还算不上纯粹的O2O,之前我也没有专门...

    张子阳
  • SystemVerilog中从event看fork...join执行顺序

    前面我写过一篇关于event的文章。SystemVerilog中event,今天再来说点新花样。本次仿真使用的仿真器是VCS2019.06

    数字IC小站
  • 都说Vue面试难,到底问什么问题了?

    Vue目前作为前端三大框架之一,在行业内使用的越来越广泛,但你有系统地学习过,并且掌握了其要领么?

    ConardLi

扫码关注云+社区

领取腾讯云代金券