【学习笔记】构建一个基础的推荐系统

学习目标:

《自己动手做搜索引擎》

学习内容:

欧式距离
在这里插入图片描述

余弦距离
皮尔逊系数
在这里插入图片描述

Jaccard距离
在这里插入图片描述

学习时间:

1小时

学习产出:

笔记
构建一个基础的推荐系统
本节将使用相似用户给出的评级为Toby推荐他没有评级过的电影。有如下几个步骤:
1.抽取出Toby没有评级过的电影。
2.找到所有其他用户给这些电影的评级。
3.将所有用户(不包括Toby自己)对第一步中找到的电影的评级乘以与Toby的相似度。
4.计算每一部电影作品的评级和,并除以所有相似度之和。

library(reshape2)
library(data.table)
library(dplyr)
setwd("D:/RecommenderSystems_R-master")
data <- read.csv("movie_rating.csv",header = TRUE)
head(data)
#转成矩阵
movie_ratins = as.data.frame(acast(data,title~critic,
value.var="rating"))
View(movie_ratins)
#基于用户相似度,给用户推荐其未评级过的电影
#1用户相似度--相关系数
sim_users= cor(movie_ratins[,1:6],use="complete.obs")
View(sim_users)
#2选出用户未评级过的电影,以及其他用户对这些电影的评级,
这些评级分和相似度的乘积作为该部电影的评级分
rating_critic = setDT(movie_ratins[colnames(movie_ratins)[6]]
,keep.rownames = TRUE)[]
names(rating_critic) = c('title','rating')
View(rating_critic)

title_na_critic = rating_critic$title[is.na(rating_critic$rating)]
title_na_critic

#data loading
ratings = read.csv("movie_rating.csv")
ratings_t = ratings [ratings $title %in% title_na_critic,]
View(ratings_t)
x = (setDT(data.frame(sim_users[,6]),keep.rownames = TRUE)[])
names(x) = c('critic','similarity')
ratings_t =  merge(x = ratings_t, y = x, by = "critic", all.x = TRUE)

ratings_t$sim_rating = ratings_t$rating*ratings_t$similarity

#predicting the non rated titles
result = ratings_t %>% group_by(title) %>% summarise(sum(sim_rating)/sum(similarity))
library(dplyr, warn.conflicts = FALSE)

# Suppress summarise info
options(dplyr.summarise.inform = FALSE)   


基于近邻算法的推荐引擎
个性化推荐引擎
基于模型的推荐系统
混合推荐引擎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值