推荐系统—影视评分预测(续)

基于Movielens的推荐系统—评分预测 (Python3) 压缩文件中包含一下列表: 1,movielens 公开实验数据集(推荐系统研究经常用到~) 2,模拟预测评分的python代码(python3.x) 希望对大家学习有所帮助。有问题可以邮箱联系。 立即下载

在上一篇文章推荐系统—影视评分预测中提出了,几点思考:


=============================一、theta/x的意义?=============================

首先是模型:以下的model1/model2都把user想简单了

(1)model1:给定x=(romance,action),回归优化theta。

首先模型就给x赋予了意义(movie类型),那么可以认为theta也跟着有了意义(喜欢romance or action?)


(2)model2:给定theta=(0, 5, 0),回归优化x。

此模型也给theta赋予了意义(喜欢romance or action?),那么x也跟着有了意义(movie类型romance or action?)


model1/model2存在什么样的问题呢?——把user想得too simple

喜欢action类型的电影的user就会对所有action类型的电影打高分么?

读者一定不会是这个审美。同样跟演员/导演等等是相关的。

这个质疑就是在质疑模型(不是指回归模型)建得simple了,当然对问题建模可以从简单到精细,这也是按着科学的思路来的。

复杂的模型可能此时求解有困难(没有找到方案or硬件设施跟不上等问题),转而研究简单的模型。

那么总结model1与model2就是:

给定一个参数(theta or x)用回归模型优化另一个(x or theta),我们赋予给定参数的意义就可以用来解释预测参数。

(3)还有model3:就是协同过滤——同时优化x/theta

这个跟机器学习里面我们学的 “线性回归”就有差别了,

ML里面都是model1/model2似的:给定(y, X) or (y, Theta)

现在给了一个y,就要 x/theta,还是头一次见。

从优化上面来看:J(x,theta)的凸性看不出来,使用Ng的优化得到的是否是全局最优?

这个问题应该是明确的,但是对于《推荐系统》书看得不多(本身优秀的参考书籍也不多),目测应该是全局最优。

此问题待以后深入《推荐系统》时再去解决。


现在假设model3得到了正确的求解,但是x/theta的意义是什么呢? 此处x/theta的维数是由我们来给定的,code中用的是feature=10

我觉得看不出来什么意义?

再或者我们“意义是什么”?为什么一定要有意义,我们是不是被model1/model2带坏了?一定要找个意义?

那么仅仅从“为了回归y”的目的上来考虑,可以没有“意义”;

没有意义,我们对未评分的预测算是什么呢?—没有model1/model2的模型解释,model3的预测就显得没有道理(意义。。。)。

写到这想到 杨绛给一个年轻人的回信:“读书太少,想得太多”。抓狂

这些问题先不深究,待读读书/看看paper来了解目前对此的研究情况。

=============================二、是否对x-feature添加分量1==============================

我是想做个数值实验来着,code做的是协同过滤,x/theta都是未知的随机变量了。那么也就无法对x-feature添加分量1了。

后来做了行均值化,那么对于model1:给定x=(romance,action),回归优化theta,就有点意思了。

。。。一个结论记错了,刚查了下,木有意思了。

所以问题可以是更一般些了:在机器学习中“线性回归”为什么要对x-feature添加分量1?——我查清楚放到评论里。

=============================三、x-feature的意义=============================

这个在<一>中已经论及,这里再整理下:

  • model1/model2的模型对某一参数赋予了意义(不一定是romance/action,还可以是其他),另一参数也就有了意义。
  • model3找不出什么意义来。

=============================四、词语意义=============================

"基于内容的推荐":

看过《集体智慧编程》,此书第二章:提供推荐,也是在讲推荐系统。其中提到“基于用户过滤”和“基于物品过滤”,跟这个名字很相似,但是套路好像真不一样。待查。

"协同过滤":

看到这个我想到的是——啤酒和尿布,这个好像跟这里的回归模型差别很多,啤酒尿布那块用贝叶斯来搞的,待查。


=============================五、协同过滤code=============================

%% Machine Learning Online Class
clear,clc

%% Part 1: Entering ratings for a new user
movieList = loadMovieList();
my_ratings = zeros(1682, 1);
my_ratings(1) = 4;
my_ratings(98) = 2;
my_ratings(7) = 3;
my_ratings(12)= 5;
my_ratings(54) = 4;
my_ratings(64)= 5;
my_ratings(66)= 3;
my_ratings(69) = 5;
my_ratings(183) = 4;
my_ratings(226) = 5;
my_ratings(355)= 5;

fprintf('\n\nNew user ratings:\n');
for i = 1:length(my_ratings)
    if my_ratings(i) > 0 
        fprintf('Rated %d for %s\n', my_ratings(i), ...
                 movieList{i});
    end
end

%% Part 2: Learning Movie Ratings
%  Now, you will train the collaborative filtering model on a movie rating 
%  dataset of 1682 movies and 943 users%
fprintf('\nTraining collaborative filtering...\n');
%  Load data
load('ex8_movies.mat');

%可见评分比例比较小
fprintf('------用户评分百分比:%f-------\n',sum(R(:))/numel(R))
%  Add our own ratings to the data matrix
Y = [my_ratings Y];
R = [(my_ratings ~= 0) R];
%  Normalize Ratings
[Ynorm, Ymean] = normalizeRatings(Y, R);
%  Useful Values
num_users = size(Y, 2);
num_movies = size(Y, 1);
num_features = 10;

% Set Initial Parameters (Theta, X)
X = randn(num_movies, num_features);
Theta = randn(num_users, num_features);

initial_parameters = [X(:); Theta(:)];
% Set options for fmincg
options = optimset('GradObj', 'on', 'MaxIter', 200);
% Set Regularization
lambda = 10;
%优化部分 计算X Theta使costFunction最小
%原代码 此处有误: 需将Y 改为Ynorm
theta = fmincg (@(t)(cofiCostFunc(t, Ynorm, R, num_users, num_movies, ...
                                num_features, lambda)), ...
                initial_parameters, options);

% Unfold the returned theta back into U and W
X = reshape(theta(1:num_movies*num_features), num_movies, num_features);
Theta = reshape(theta(num_movies*num_features+1:end), ...
                num_users, num_features);

fprintf('Recommender system learning completed.\n');
%% Part 3: Recommendation for you 
%  After training the model, you can now make recommendations by computing
%  the predictions matrix.
p = X * Theta';
my_predictions = p(:,1) + Ymean;
movieList = loadMovieList();

[r, ix] = sort(my_predictions, 'descend');
%此处代码有点小误,既然是推荐,那么user评过分的movie应该过滤掉,
%以下代码木有过滤
fprintf('\nTop recommendations for you:\n');
for i=1:10    
    j = ix(i);
    fprintf('Predicting rating %.1f for movie %s\n', my_predictions(j), ...
            movieList{j});
end

fprintf('\n\nOriginal ratings provided:\n');
%此处简单修改了下,增加了对比
fprintf('----------Movie------------------初始化评分----------预测评分-------\n')
for i = 1:length(my_ratings)
    if my_ratings(i) > 0 
        fprintf('%-36s  %d          %4.3d\n', movieList{i}, my_ratings(i), my_predictions(i))
                
    end
end


输出:

Part 1: Entering ratings for a new user


Part 2: Learning Movie Ratings


Part 3: Recommendation for you 









基于Movielens的推荐系统—评分预测 压缩文件中包含一下列表: 1,movielens 公开实验数据集(推荐系统研究经常用到~) 2,模拟预测评分的python代码(python3.x) 立即下载

相关推荐

豆瓣电影评分,共12W+,精准无重复,截止2020年2月底

花了20块钱,用两种办法采集,1 豆瓣电影ID采集,2 CMS影视名字搜索采集,并结合站内其他侠士以往评分,共12W条。时间截止2020年2月20日.

基于Python机器学习算法的电影推荐系统以及票房预测系统

摘要: 本实验基于电影数据集开展,完成三大任务:1)对电影特征进行可视化分析,展示了预算、受欢迎程度等与票房的关系;2)开发电影票房预测算法,在Kaggle比赛中取得前6.8%的成绩;3)实现九种推荐算法,包括基于内容、KNN协同过滤、奇异值分解及多种集成方法。实验通过数据增强和算法优化,构建了完整的电影数据分析系统,为票房预测和个性化推荐提供了有效解决方案。

毕业作品网站 3829

豆瓣电影评分数据集

豆瓣电影评分数据,从豆瓣上获取的数据,可以做电影推荐

推荐系统实践-评分预测问题(8)

评分预测问题是如何通过已知的用户历史评分记录预测未知的用户评分记录。

wolf_qu的博客 1392

matlab矩阵标准化代码-recommender:使用协作过滤算法基于用户评分的电影推荐系统。(来自Coursera机器学习练习)

matlab矩阵标准化代码问题来自安德鲁·伍(Andrew Ng)的Coursera机器学习课程项目,我想用python而不是matlab / octave来实现它们。 使用基于电影分级数据集的协作过滤学习算法来实施电影推荐系统。 想法是,该算法不仅会根据其他人或整体移动收视率来推荐电影,而且还会通过预测用户对某些类型或电影口味的喜好来推荐用户的其他电影收视率来推荐电影。 ex8_movies.mat中存储了两个数据集矩阵。 电影分级数据集是1682x944矩阵,其中行表示电影,而列表示用户。 等级是1到5之间的整数。因此,第i行和第j列中的数字2表示用户j给电影ia的等级为5(满分2)。在文件ex8_movies.mat中,还存储了另一个矩阵,该矩阵称为指标矩阵,具有相同等级的等级矩阵。 该矩阵中的值为1,表示用户给电影定了一个等级,或者为0,则没有给出等级。 创建一个新用户的分级列表,并将该列表添加到电影分级矩阵中。 然后使用标准值随机初始化X和Theta。 并使用fmin_cg查找优化的X和Theta,以最小化我实现的成本函数。 使用这两个值,可以计算电影收视率预测。 要执行,只

西门子S7-200SMART控制步进电机(五)

前面详细讲述了运动控制向导的配置和运动控制指令的使用方法,接下来要讲的是简单程序的编写和调试。 在编写程序时,需要注意的是自定义的符号和地址不能与运动控制向导分配的存储器冲突。 一、软硬件组成 1、软件:STEP-7-Micro/WIN SMART软件; 2、硬件:西门子S7-200 SMART ST40 PLC、57步进电机和驱动器(DM542)。 二、手动控制步进电机旋转方向和速度 具体步骤...

qq_43134642的博客 2万+

推荐系统简介三:推荐系统评测

用户调查需要有一些真实用户,让他们在需要测试的推荐系统上完成一些任务,我们需要记录他们的行为,并让他们回答一些问题,最后进行分析;很多网站都有让用户给物品打分的功能,如果知道用户对物品的历史评分,就可以从中学习一个兴趣模型,从而预测用户对新物品的评分。精确率(preciSion):所有被检索的item中,"应该被检索到"的item占的比例。在评测一个推荐系统时,需要考虑上述三方的利益,一个好的推荐系统是能够令三方共赢的系统。网站提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TOP-N推荐。

weixin_43597208的博客 793

大话西游2单机版V8一键架设教程:从下载到GM权限全流程(附仙玉修改技巧)

本文详细讲解了大话西游2单机版V8的一键架设全流程,包括环境准备、服务端配置、客户端安装及GM权限获取等关键步骤。特别提供了仙玉修改技巧和高级资源管理方法,帮助玩家快速搭建个性化游戏环境并掌握核心控制功能。教程涵盖Windows系统兼容性设置、常见问题解决方案以及数据备份策略,适合各类怀旧玩家和技术爱好者。

weixin_29254673的博客 1036

推荐系统2(案例):电影评分、基于k临近

pickle模块只能在python中使用,python中几乎所有的数据类型(列表、字典、集合、类等)都可以用pickle来序列化。pickle提供了一个简单的持久化功能,可以将对象以文件的形式存放在磁盘上。lambda表达式是一行的函数,他们在其它语言中也被称为匿名函数。使用方法:在lambda语句中,冒号前面是参数,可以有多个,用逗号隔开,冒号右边是返回值。总结:上述两个案例都没有用到KNN,如果用,在相关处。k临近,增加一部分代码,其他同前一个案例。(预测给定用户对给定物品的评分值)

799喵的博客 361

人工智能100问☞第5问:什么是AI三要素?

人工智能的核心三要素是​​数据、算法和算力​​,分别作为AI的“燃料”、“大脑”和“动力”,三者协同驱动智能系统的学习、推理与决策能力。

bjdx_001的博客 1991

高动态范围结构光三维测量技术:从多曝光融合到深度学习的演进与应用

本文深入探讨了高动态范围结构光三维测量技术的演进与应用,从传统的多曝光融合技术到深度学习驱动的创新方案。通过工业案例展示了该技术在提升测量精度和效率方面的显著优势,特别是在处理高反光、复杂表面时的突破性表现。文章还提供了针对不同工业场景的技术选型指南,帮助工程师优化三维测量解决方案。

weixin_29063979的博客 293

推荐系统- 评分预测问题

目前为止都是在讨论TopN推荐,即给定一个用户,如何给他生成一个长度为N的推荐 列表,使该推荐列表能够尽量满足用户的兴趣和需求。本书之所以如此重视TopN推荐,是因为 它非常接近于满足实际系统的需求,实际系统绝大多数情况下就是给用户提供一个包括N个物品 的个性化推荐列表。 但是,很多从事推荐系统研究的同学最早接触的却是评分预测问题。从GroupLens到Netflix Prize到Yahoo! Music的KDD Cup,评分预测问题都是推荐系统研究的核心。评分预测问题最基本 的数据集就是用户评...

JohnBanana的专栏 5624

TDDFT计算软件Octopus学习笔记(二):基态计算(Si)

本文以硅为例,来进行基态计算。

陈啸的博客 7307

python对电影进行预测评分_推荐系统—影视评分预测

本文根据Andrew Ng的 Machine Learning 的课写就。======================================= 一、预测电影评分 ==========================================全文以“预测电影评分”例子展开r(i,j)=0则表明user_j没有对movie_i 没有评分,推荐系统 ...

weixin_28881575的博客 4171

FM收音机调试-RDA5807M

收音机调试 IC型号:RDA5807M

mangofu的博客 6163

8.26华为OD机试真题 新系统【仓库查询】

华为OD机试真题 新系统【仓库查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓库查询】多语言题解。

qq_45776114的博客 546

推荐系统—影视评分预测

本文根据Andrew Ng的Machine Learning的课写就。 =======================================一、预测电影评分========================================== 全文以“预测电影评分”例子展开 r(i,j)=0则表明user_j没有对movie_i 没有评分, 推荐系统要做的就是通过预测use

极度视界 1万+

芒果YOLOv8改进72:动态标签分配策略篇之ATSS:自适应训练样本选择Adaptive Training Sample Selection策略

YOLOv8代码实践|ATSS标签分配策略改进🥭

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2909

影视推荐系统

本文介绍了一个基于Spring Boot框架的影视推荐系统,采用Java语言和MySQL数据库开发。系统通过分析用户历史行为和兴趣偏好,结合协同过滤与深度学习算法,实现精准的个性化推荐。开发环境包括JDK1.8、Tomcat7、Maven3.3.9等工具,管理员可通过指定路径访问后台管理系统。文章详细阐述了系统的技术选型理由,包括Java的开源特性、MySQL的高效性以及Spring Boot的便捷性。项目实现了用户行为分析、推荐算法优化等功能,并提供了部分界面效果展示和核心代码片段,满足影视平台对个性化推

JAVA编码选手的博客 1469

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

基于协同过滤推荐算法的影视推荐系统

【2025最新】基于协同过滤推荐算法+Java+SpringBoot+Vue+MySQL的影视推荐系统,前后端分离。

计算机学姐的博客 1595

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

基于邻域的评分预测:User-Based协同过滤算法实践

在电商、影视等推荐场景中,预测用户对未体验物品的评分是推荐系统的核心任务之一。本文将分享我在《推荐算法与应用》课程中完成的**基于用户的协同过滤(User-Based CF)**实验,详细拆解如何通过余弦相似度和Pearson相似度实现评分预测,并分析不同参数对预测效果的影响。完整代码和实验数据已开源,建议边读边动手实践。

m0_54846764的博客 1075

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

从零构建影视推荐系统,基于Python的协同过滤算法详解

掌握影视推荐系统构建全流程,基于Python实现协同过滤算法。结合影视数据分析Python实践,详解用户行为建模与相似度计算,适用于视频平台个性化推荐场景,提升推荐精准度。方法清晰、代码可复用,值得收藏。

InitPulse的博客 832

推荐系统实践——好的推荐系统

推荐系统:在信息过载时,一种为客户提供筛选、提出建议供用户选择的工具。推荐系统的基本任务是联系用户和物品,解决信息过载的问题。

weixin_57105037的博客 1526

Springboot计算机毕业设计面向影视人群的特色推荐系统2o9bg

随着互联网技术的飞速发展和数字娱乐产业的蓬勃兴起,电影作为一种重要的文化消费形式,其产量与观众需求均呈现出爆炸式增长。面对海量的电影资源,用户如何在众多选择中快速找到符合个人口味的影片成为一大挑战。传统的电影推荐方式往往依赖于热门榜单或人工推荐,缺乏个性化和精准性,难以满足用户日益增长的个性化需求。因此,本研究旨在设计并实现一个面向影视人群的特色推荐系统,该系统能够基于用户的观影历史、偏好、行为数据等,运用先进的算法模型,为用户提供量身定制的电影推荐服务,从而提升用户体验,促进电影文化的传播与发展。

CK3036的博客 987
上一篇: 推荐系统—影视评分预测
下一篇: Theano 在windows下安装
LiFeitengup
博客等级 码龄15年 466粉丝 59原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值