目录

一、绪论
1.1 研究背景
1.2 推荐算法简述
1.3 论文框架
二、协同过滤算法
2.1 基于用户的最近邻推荐
2.1.1 算法简介
2.1.2 算法表示
2.1.3 代码分析
2.2 基于物品的最近邻推荐
2.3 Slop One 算法
2.3.1 算法简介
2.3.2 算法表示
2.3.3 代码分析
三、算法优化
3.1 并行编程模式
3.1.1 MapReduce 简介
3.1.2 MapReduce 在 python 中的实现
3.1.3MapReduce 的实际应用
3.2 简化技术 SVD
四、实验仿真结果与分析
4.1 数据集
4.2 度量标准
4.3 实验结果
五、GUI 设计
参考文献

一、绪论

1.1 研究背景

随着网络的普及,网络资源不断丰富,网络信息量不断膨胀。用户要在众多的选择中挑选出自己真正需要的信息好比大海捞针,出现了所谓的“信息过载”的现象。信息过载是指的是社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障的状况。信息过滤就是解决信息过载的重要工具。信息过滤通过建立用户和信息产品之间的关系,利用已有的选择过程或相似性关系,一方面挖掘用户潜在感兴趣的信息,另一方面让信息能够展现在对它感兴趣的用户面前。

基于信息过滤技术的推荐系统具有良好的发展应用前景。目前,几乎所有大型的商务系统,如Amazon,cnNow,eBay,dangdang等,都不同程度的使用了各种形式的推荐系统。各种提供个性化服务的Internet站点也需要推荐系统的大力支持。在同趋激烈的竞争环境下,推荐系统能有效保留用户,提高销售。

从总体的层次结构看,推荐系统可以分为三大模块:输入功能模块、推荐方法模块与输入功能模块[1]。推荐方法模块是最为核心的,其中协同过滤算法被广泛应用。

1.2 推荐算法简述

基于不同的推荐应用场景,有不同的推荐算法。主要可以分为以下三类:

基于协同过滤的推荐:根据用户集合对待推荐对象集合的推荐行为,找到用户之间的相关性,据此做出推荐。该推荐算法最大的优点在于并不需要用户和待推荐对象的属性特征,它的推荐来源仅仅是用户对于待推荐对象的行为。这使得推荐并不需要对用户和待推荐对象显式地进行信息采集,而是隐含在业
务系统的日常运作中。

基于内容的推荐:根据待推荐对象属性之间的相关性,当用户喜欢某个对象是,给该用户推荐与该对象相关的其它对象。相关的推荐算法有:决策树算法、支持向量机法、贝叶斯分类算法、人工神经网络算法等等,该类算法通常是将推荐问题化为分类问题,进而求解。

基于知识的推荐:这主要有两种基本类型,一是基于约束推荐,二是基于实例推荐。这两种推荐在过程上比较相似:用户必须指定需求,然后系统设法给出解决方案。如果找不到解决方案,用户必须修改需求。

鉴于本文旨在对协同过滤算法进行研究,故作进一步的阐述。基于协同过滤的推荐面临的最大挑战是稀疏矩阵问题。由于用户评分数据的极端稀疏性,传统的相似性度量方法不能有效地计算目标用户的最近邻居,协同过滤推荐系统的推荐质量难以保证。为此,矩阵分解技术(如SVD)和混合推荐方法被应用于矩阵稀疏问题中,并有较好的改进效果。

1.3 论文框架

考虑到现有的知识水平与实际问题,本文的研究目标为:以推荐系统的协同过滤技术为研究目标,旨在比较基于用户、物品的最近邻推荐与slope one算法性能的优劣,并尝试利用并行计算和矩阵的奇异值分解技术进行算法优化,在最后我们给出了推荐模块的仿真设计,初步完成推荐系统的核心构建。

本文的研究内容主要包括以下几个方面:

  1. 对目前的推荐算法进行了简要的介绍,并对协同过滤算法进行详细研究分析,重点分析了传统的基于物品最近邻、基于用户最近邻以及提出不久的slope one协同过滤算法,研究了三种算法的具体实现过程,并进行仿真实验。

  2. 针对数据量过大,协同过滤算法难以满足系统的实时性要求,我们利用Python的PP模块,采用Map-Reduce思想进行并行编程,减少系统的响应时间。此外,鉴于用户-物品评分矩阵可能产生噪点,我们通过仿真实验探究了矩阵分解技术SVD是否能减少评分矩阵的噪点。

  3. 在实现了协同过滤算法后,我们将其应用于GUI设计中,实行了简单的推荐功能。推荐模块是推荐系统的核心,实现该模块对进一步开发推荐系统很有意义。

二、协同过滤算法

2.1 基于用户的最近邻推荐

2.1.1 算法简介

基于用户的协同过滤是个性化推荐中应用最为广泛的方法,它是基于邻居用户的兴趣爱好预测目标用户的兴趣偏好。算法的基本思想根据用户对物品的评分向量之间的相似性,搜索目标用户的最近邻居,然后根据最近邻居的评分向目标用户产生推荐。

2.1.2 算法表示

该算法分为三步,如下:

步骤1.建立用户模型:协同过滤算法的输入数据通常表示为一个m*n的用户—评价矩阵R,其中m为用户数,n为项目个数,ri,jr_{i,j}ri,j​表示第i个用户对第j个物品的评分值:



这里的评分值可以是用户的浏览次数,购买次数等隐式的评分,还可以采用显示评分。在本论文中该矩阵是用户对电影的评分矩阵。

步骤2.寻找最近邻居:基于用户的最近邻推荐系统的核心是为一个需要推荐服务的目标用户寻找最似的”邻居“:对一个用户u ,要产生一个根据相似度大小排列的“邻居”集合N = { N1 , N2 , ⋯, Ns} , u 不属于N ,从N1 到Ns ,按相似度sim(u,Ni)sim ( u , N_i)sim(u,Ni​) 从大到小排列。其中,用户之间相似度的度量是有较多选择的,常见的有:

Person相关系数:

sim(a,b)=∑p∈P(ra,b−raˉ)(rb,p−rbˉ)∑p∈P(ra,b−raˉ)2∑p∈P(rb,p−rbˉ)2sim(a,b)=\frac{\sum_{p \in P}(r_{a,b}-\bar{r_a})(r_{b,p}-\bar{r_b})}{\sqrt{\sum_{p \in P}(r_{a,b}-\bar{r_a})^2} \sqrt{\sum_{p \in P}(r_{b,p}-\bar{r_b})^2}}sim(a,b)=∑p∈P​(ra,b​−ra​ˉ​)2​∑p∈P​(rb,p​−rb​ˉ​)2​∑p∈P​(ra,b​−ra​ˉ​)(rb,p​−rb​ˉ​)​

其中,sim a b ( , )表示用户 a 与用户 b 之间的相似度(下同), raˉ\bar{r_a}ra​ˉ​表示用户 a 的平均评分。

余弦相似度:

sim(a,b)=cos(a⃗⋅b⃗)=a⃗⋅b⃗∣∣a⃗∣∣⋅∣∣b⃗∣∣sim(a,b)=cos(\vec{a} \cdot \vec{b})=\frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \cdot ||\vec{b}||}sim(a,b)=cos(a⋅b)=∣∣a∣∣⋅∣∣b∣∣a⋅b​

其中,a⃗\vec{a}a表示用户的评分向量,∣∣a⃗∣∣||\vec{a}||∣∣a∣∣表示向量的模。

改进的余弦相似度:

sim(a,b)=∑u∈U(ru,a−ruˉ)(ru∈b−ruˉ)∑u∈U(ru,a−ruˉ)2∑u∈U(ru∈b−ruˉ)2sim(a,b)=\frac{\sum_{u \in U}(r_{u,a}-\bar{r_u})(r_{u \in b}-\bar{r_u})}{\sqrt{\sum_{u \in U}(r_{u,a}-\bar{r_u})^2} \sqrt{\sum_{u \in U}(r_{u \in b}-\bar{r_u})^2}}sim(a,b)=∑u∈U​(ru,a​−ru​ˉ​)2​∑u∈U​(ru∈b​−ru​ˉ​)2​∑u∈U​(ru,a​−ru​ˉ​)(ru∈b​−ru​ˉ​)​

其中,U 为所有同时给物品 a 和 b 评分的用户集。
针对不同的应用场景,用户之间的相似度是不同的,这需要在实际中加以分析。

步骤三.产生推荐物品,计算方法如下:
pred(a,p)=raˉ+∑b∈Nsim(a,b)⋅(rb,p−rbˉ)∑b∈Esim(a,b)pred(a,p)= \bar{r_a}+\frac{\sum{b \in N sim(a,b) \cdot (r_{b,p}-\bar{r_b})}}{\sum_{b \in E} sim(a,b)}pred(a,p)=ra​ˉ​+∑b∈E​sim(a,b)∑b∈Nsim(a,b)⋅(rb,p​−rb​ˉ​)​

其中, pred(a,p)表示用户 a 对物品 p 的评分,N 为最近邻居集,rb,pr_{b,p}rb,p​为用户b 对物品 p 的评分。公式的实质是在用户的最近邻居集 N 中查找用户,并将目标用户与查找到的用户的相似度的值作为权值,然后将邻居用户对该项目的评分与此邻居用户的所有评分的差值进行加权平均。其中,最近邻居的个数是《推荐系 统》[2]20~50 个最适宜。

通过上述方法预测出目标用户对未评价物品的评分,然后选择预测评分最高的TOP-N项推荐给目标用户。Top-N推荐集的产生:分别统计“最近邻居”集中的用户i 对不同项的兴趣度的加权平均值,取其中N 个排在最前面且不属于Iu的项作为Top - N 推荐集。

2.1.3 代码分析

2.2 基于物品的最近邻推荐

基于物品的协同过滤算法根据用户的历史数据给他们推荐那些与之前的物品相似的物品,通过分析用户的行为记录计算物品之间的相似度。该算法最大的好处在于可以离线计算物品之间的相似度,并将其存入相似度矩阵,进而可以满足推荐系统实时性的要求。

鉴于该算法跟基于用户的最近邻推荐算法类似,不再赘述。

2.3 Slop One 算法

2.3.1 算法简介

由 Daniel Lemire 教授在 2005 年提出的一个基于项目的推荐算法,根据用户对物品之间的评分差异来进行推荐。其最大的优点在于算法的核心思想很简单,易于实现,执行效率高,同时推荐的准确性也相对很高。一个著名的开源分布式框架Mahout 就实现了该算法,但目前来说该算法还没有用于商业用途。

2.3.2 算法表示

2.3.2.1 例子说明

由于采用例子的形式可以直观地展示该算法的核心思想,故举两例

(1)例 1

UserB 对 ItemA 的评分是 1,对 ItemB 的评分是 2;UserA 对 ItemA 的评分是2,那么,预测 UserA 对 ItemB 的评分多少呢?

根据 Slope One 算法, P (UserA, ItmeB) = (2-1)+2=3。

(2)例 2


那么,UserA 对 Item3 的评分是多少呢?Slope One 算法认为:平均值可以替代某两个未知个体之间的打分差异,Item1 和 Item3 的平均差值是:(5−3)+(3−4)2=0.5\frac{(5-3)+(3-4)}{2}=0.52(5−3)+(3−4)​=0.5; User Item2 跟 Item3 的平均差值是:5-2=3, 因此,根据 Item1,UserA 对 Item3 的评分是 2+0.5=2.5;根据 Item2,UserA 对 Item3 的评分是 5+3=8。整体的预测还要考虑到同时评分的个数,可以给那些有更多数据支持的偏移量更大的权重:
P(UserA,Item3)=2×2.5+1×82+1=4.33P(UserA,Item3)=\frac{2 \times2.5+1 \times 8}{2+1}=4.33P(UserA,Item3)=2+12×2.5+1×8​=4.33

2.3.2.2 算法思想

给定两个物品 j 和 i,令Sj,i(R)S_{j,i(R)}Sj,i(R)​) 标记同时包含对物品 i 和物品 j 的评分集合,两个物品 i 和 j 的平均偏差值 dev 可以计算如下:

devj,i=uj−ui∣Sj,i(R)∣dev_{j,i}=\frac{u_j-u_i}{|S_{j,i}(R)|}devj,i​=∣Sj,i​(R)∣uj​−ui​​

就像例 1,我们能根据每一个同时评分的物品 i 预测用户 u 对物品 j 的评分,记为devj,i+uidev_{j,i}+u_idevj,i​+ui​

这些单个预测的简单组合可以用来计算所有同时评分物品的平均值:

pred(u,j)=∑i∈Releveant(u,j)(devj,v+ui)∣Relevant(u,j)∣pred(u,j)=\frac{\sum_{i \in Releveant(u,j)}(dev_{j,v}+u_i)}{|Relevant(u,j)|}pred(u,j)=∣Relevant(u,j)∣∑i∈Releveant(u,j)​(devj,v​+ui​)​

其中,Relevant u j
表示那些至少有 1 次与物品 j 被用户 u 同时评分的相关物品
集合。即 , Relevant(u,j)={i∣i∈S(u),i≠j,∣Sj,i(R)∣>0}Relevant(u,j)= \{i|i \in S(u),i \neq j,|S_{j,i}(R)|>0 \}Relevant(u,j)={i∣i∈S(u),i​=j,∣Sj,i​(R)∣>0}, 其中,S(u)表示 u 中评分的元素集合。

由例 2 可知,这个基本方案并没有考虑同时评分物品的数量。很显然,如果同时评分的物品数越多预测器就越有效。因此,进行加权处理,公式如下:
pred(u,j)=∑i∈Relevant(u,j)(devj,i+ui)⋅∣Sj,i(R)∣∑i∈∣Relevant(u,j)⋅∣Sj,i(R)∣pred(u,j)=\frac{\sum_{i \in Relevant(u,j)}(dev_{j,i}+u_i) \cdot |S_{j,i}(R)|}{\sum_{i \in |Relevant(u,j) } \cdot |S_{j,i}(R)|}pred(u,j)=∑i∈∣Relevant(u,j)​⋅∣Sj,i​(R)∣∑i∈Relevant(u,j)​(devj,i​+ui​)⋅∣Sj,i​(R)∣​

2.3.3 代码分析

系统的实时响应性,我们先根据历史数据训练模型,并将得到的数据存入数据库。故当要给用户推荐 Item 时,只需从数据库读取偏置值和权重进行运算即可,从而提高响应速度。主要代码分析如下:

三、算法优化

3.1 并行编程模式

3.1.1 MapReduce 简介

并行编程模式,通俗的说就是指并行编程的一种形式,一种方式。并行编程模式只要指并行编程时,程序员将程序各模块并行执行时,模块间的通信方式。而 MapReduce 就是其中最重要的一种模式,它指的是这样一类问题的解决方案:我们可以分两步来解决这类问题。第一步,使用一个串行的 Mapper 函数分别处理一组不同的数据,生成一个中间结果。第二步,将第一步的处理结果用一个Reducer 函数进行处理(例如,归并操作),生成最后的结果。

3.1.2 MapReduce 在 python 中的实现

Python 中有许多和并行计算相关的模块,比如·MrJob,Parallel Python,Dispy等等。在本系统中,我们使用的是 Parallel Python 模块,因为该模块说明文档详细,例子生动有趣,便于学习。

3.1.3MapReduce 的实际应用

很多的机器学习算法不能直接用在MapReduce框架上,比如简单贝叶斯,k-紧邻算法等等。因为他们的原始编程模式为串行的,需要改造原有的算法,使之能在MapReduce框架上运行。

在本系统中,我们在基于用户的协同过滤的过程中使用了MapReduce编程框架。考虑到该过程中要实时的计算一个用户与其他用户的相似度,往往需要花费很多时间,造成用户的不良体验,本系统使用Mapreduce框架,将任务进行分解。如下图所示:


3.2 简化技术 SVD

在很多情况下,数据会有噪声,即无相关的信息。这些无用的信息往往是很难从肉眼看出来的,我们可以用矩阵分解将原始矩阵转化成心得易于处理的形式,这种新的形式通常是多个矩阵的乘积。在线性代数中有许多的矩阵分解的方法,最常见的一种矩阵分解形式就是 SVD 矩阵分解,形式如下:

Datam∗n=Um∗mSm∗mVn∗nTData_{m*n}=U_{m*m}S_{m*m}V^T_{n*n}Datam∗n​=Um∗m​Sm∗m​Vn∗nT​

SVD 是一个强大的降维工具,可以用 SVD 来逼近矩阵并从中提取出重要的特征。通过保留矩阵 80%~90%的能量,我们可以得到矩阵中重要的特征并去掉噪声。在 2006 年的 Netflic 比赛中,最后的 100 万元的大奖就颁给了一支使用 SVD算法的队伍。当然,也有文献[2]情况下,预测质量会比基于记忆的预测技术差,这可以解释为没有考虑所有可用的信息。因此需要谨慎地使用 SVD 技术,本文将对此进行仿真实验。鉴于 SVD 的原理需要较多的数学知识,故此处不再推导, 可参考文献[3].

四、实验仿真结果与分析

4.1 数据集

我们采用 MovieLens 站点(http://grouplens.org/datasets/movielens/) 提供的数据集 MovieLense100k. 该数据集有 100,000 来自 943 位用户对 1682 部电影的评分记录,每个用户至少对 20 部电影进行了评分。该数据集已经基于 5 折交叉验证产生了 5 份数据,如第一份训练集文件名为:u1.base,相应的测试集名为u1.test

为了度量整个数据集的稀疏性,我们引入稀疏等级的概念,其定义为用户评分数据矩阵中未评分条目所占的百分比。我们选择的电影数据集的稀疏等级为

1−100000/(943∗1682)=0.9369531-100000/(943*1682)=0.9369531−100000/(943∗1682)=0.936953

4.2 度量标准

评价推荐系统推荐质量的度量标准有很多,其中平均绝对偏差MAE(mean absoluterror)应用最为广泛,故本文采用平均绝对偏差MAE为度量标准。MAE通过计算预测的用户评分与实际的用户评分之间的偏差度量预测的准确性,MAE 越小,推荐质量越高。

设预测的用户评分集合表示为{p1,p2,…pN},对应的实际用户评分集合为{q1,q2, … ,qN},则平均绝对偏差MAE 定义为[3]:

MAE=∑i=1N∣pi−qi∣NMAE=\frac{\sum_{i=1}^{N}|p_i-q_i|}{N}MAE=N∑i=1N​∣pi​−qi​∣​

4.3 实验结果

首先对各种不同的相似性度量标准和近邻个数 k 进行实验,选择最佳的相似性度量标准和近邻个数 k;

然后,对基于物品的最近邻推荐采用 SVD 技术处理,并跟没采用该技术的进行比较;

接着,对基于模型的推荐算法:基于物品的最近邻推荐和 slope one 进行比较;

最后将基于用户的最近邻推荐与基于模型的推荐算法混合,将预测误差尽可能地降低。

本实验采用的编程语言是 Python,编程环境是 eclipse + pydev。

余弦相似度和 Person 相似度

由于改进的余弦相似度跟 person 很相似,故只考虑 person 相似度。我们以 K近邻个数为自变量,步长为 10,并以 u1.base 作为训练集和 u1.test 作为测试集,进行 5 次仿真实验,实验结果如下所示:


从上图中,我们可以看出,采用余弦度量作为相似度度量比 Pearson 相似度优良许多。并且,当我们选用余弦指数时,横向比较,容易发现当近邻个数 k 为10~50 时,效果较为不错。

SVD 技术

由于余弦相似度带来的 MSE 更低,故以后的测试计算相似度时均采用余弦相似度。另外,鉴于 SVD 对推荐系统的性能推荐效果不确定,对基于物品的最近邻推荐,以有 SVD 技术和没有 SVD 技术作比较。其中,数据来源为 u1~u5.base和 u1~u5.test。


由上图可知,无 SVD 技术对应的 MAE 比有 SVD 技术的 MAE 小。这说明 MAE技术并不能改进推荐效果。这可能是因为评分矩阵的非奇异在降低噪声的同时,也减少了可用信息,故 SVD 技术不能盲目用于去除评分矩阵的噪声。

Slope one 和基于物品最近邻推荐

这两种算法都是基于模型的,都能训练模型所得数据写入数据库,进而加快推荐速度。但二者的推荐性能谁优谁劣呢?我们采用 5 折交叉验证方法进行实验。


由上图可知,slope one 的推荐性能比基于物品的最近邻推荐要稍微差一些。但 slope one 算法简单,维基百科[9]上对此评价很高:该算法堪称基于项目评价的 non-trivial 协同过滤算法最简洁的形式。因而自从 2005 年被提出来后就受到很大的推广。

推荐算法混合[8]

当一个用户的观看记录与数据库中的用户观看记录共同项太少时,用户之间相似度的计算就相对不可信,故此时应该采用基于物品的最近邻推荐算法来进 行推荐算法如下,其中共同项的阈值暂取为 10,在实际应用中对其进行多次试验来确定其值(出于时间考虑,本实验未做)。

五、GUI 设计

推荐系统界面的设计,采用基于 python 语言的 wxpython 与 wxFormbuilder插件进行设计。其中用到的算法也是通过 python 语言实现的。出于简单考虑,我们没有设计记录用户行为模块,该 GUI 主要实现推荐系统的推荐算法模块功能。在测试过程,使用的是 Movie lens 数据集。

图 7 推荐模块流程


读入记录用户行为的 txt 文件,txt 文件的记录格式:(用户 ID,电影 ID,评分)。在读入 txt 文件后,程序会将 txt 文件中的用户 ID 以及用户已观看的影片数目,显示在界面的右边部分作为基本信息。使用者可以在界面中选择推荐算法,有 Slope one 预测算法、基于用户的最近邻推荐算法、基于物品的最近
邻推荐以及混合算法,同时可以设置希望系统推荐出的电影数目,设置完相关参数后,点击推荐,系统会给出指定数目的推荐电影的 ID,即为推荐结果。

另一方面,离线更新对于推荐系统很重要。由于在给新的用户推荐电影时,新用户的观看电影记录以及评分也可以作为资料训练模型,所以本系统设计了数据库更新功能。通过点击数据库更新按钮,系统将根据用户观看记录,使用基于模型的推荐算法(基于物品的最近邻推荐和 slope one)重新计算,更新数据库,使得推荐的结果更加符合实际。

参考文献

[1]张亮 推荐系统中协同过滤算法若干问题的研究[D] 北京 北京邮电大学 2009

[2]ietmar Jannach[著],蒋凡译 推荐系统[M] 北京 人民邮电出版社 2013 8-15

[3]ing liu[著],俞勇译 Web 数据挖掘[M] 北京 清华大学出版社 2013 384-412

[4]Mark Lutz[著],李军译 Python 学习手册[M] 北京 机械工业出版社 2011 19-398

[5Peter Harrington[著],李锐译 机器学习实战[M] 北京 人民邮电出版社 2014 270-282

[6]张雪文 智能推荐系统中协同过滤算法的研究[D] 上海 上海交通大学 2008

[7]邓爱林、朱扬勇、施伯乐 基于项目评分预测的协同过滤推荐算法[J] 上海 软件学院 2003

[8]张月蓉 基于混合推荐的电影推荐系统的研究与实现[D] 安徽 安徽大学 2013

[9] 维基百科: http://zh.wikipedia.org/wiki/Slope_one

“泰迪杯”挑战赛 - 基于协同过滤的推荐算法研究与 GUI 设计相关推荐

  1. “泰迪杯” 挑战赛 - 利用协同过滤与卷积神经网络为电视产品制订智能化营销推荐

    目录 问题重述 模型假设 数据预处理 3.1 数据清洗 3.1.1 数据缺失的分析和处理 3.1.2 数据异常的分析和处理 3.2 数据规约 数据分析 4.1 电视产品体系图 4.2 收视用户体系图 ...

  2. 推荐算法-基于协同过滤的推荐算法

    推荐算法-基于协同过滤的推荐算法 在如今信息量呈爆炸式增长的时代,谷歌百度等搜索引擎为人们查找信息提供了便利,帮助用户快速查找有价值的信息.然而此类查询方式是大众化的,无法根据个人兴趣为用户展示相关的 ...

  3. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

  4. 基于协同过滤的推荐算法(用户协同、物品协同、模型协同)

    文章目录 一.介绍 1.基于用户的协同过滤推荐 2.基于项目(物品)的协同过滤推荐 3.基于模型的协同过滤推荐 二.实现步骤 1.用户协同过滤和物品协同过滤的实现方法 1)收集用户偏好 2)计算用户或 ...

  5. “泰迪杯” 挑战赛 - 基于市场资金流向分析的商品期货量化交易策略(附suibian代码)

    目录 基于市场资金流向分析的 Suibian 期货策略 摘要 1 问题重述 1.1 问题重述 2 符号说明及名字定义 3 问题分析与求解 3.1 资金流向指标的定义 3.2 持仓量.成交量和价格的关系 ...

  6. “泰迪杯”挑战赛 - 基于非侵入式负荷检测与分解针对日常电器的电力数据挖掘

    目录 1.挖掘目标 2.分析方法与过程 2.1 问题 1 分析方法与过程 2.1.1 单个设备运行特征 2.1.2 实时用电量计算 2.2 问题 2 分析方法与过程 2.2.1 流程图 2.2.2 基 ...

  7. “泰迪杯”挑战赛 - 基于Java的面向网络舆情的关联度分析(附算法代码)

    目 录 研究目标 分析方法与过程 2.1. 总体流程 2.2. 具体步骤 2.3. 结果分析 结论 参考文献 1. 挖掘目标 本次建模目标是利用网络爬虫工具采集的大量网络舆情信息,采用数据挖掘技术,给 ...

  8. “泰迪杯”挑战赛 -利用收视记录定义用户画像(基于爬虫数据分析)

    目录 一. 引言 1.1 背景 1.2 研究内容 1.3 研究思路 二.数据预处理 2.1 附件 1:用户收视信息 2.1.1 用户收视信息 2.1.2 用户回看信息 2.1.3 用户点播信息 2.1 ...

  9. 基于CF(协同过滤)推荐算法

    基于物品的CF(协同过滤)推荐算法 1.1算法简介 CF(协同过滤)简单来形容就是利用兴趣相投的原理进行推荐,协同过滤主要分两类,一类是基于物品的协同过滤算法,另一种是基于用户的协同过滤算法,这里主要 ...

  10. 基于协同过滤的推荐引擎

    探索推荐引擎内部的秘密"系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用.同时在理论讲解的基础上,还会结合 Apache Maho ...

最新文章

  1. R语言grafify包简单、快速绘制19个漂亮的统计图实战
  2. 一个进程仅存在给定类型的一个挂起信号,同一进程同样类型的其他信号不被排队
  3. 电脑的cpu是怎么制作的?
  4. 云开发的数据库权限机制解读丨云开发101
  5. CSS3(animation, trasfrom)总结
  6. 云计算管理工具:根植热土
  7. mysql+php+模板+条目_PHP.MVC的模板标签系统(四)
  8. 苹果7plus专用计算机,iphone7plus怎么用 iphone7plus使用技巧【详解】
  9. linux 下的两种软件安装方式 —— 源码(编译、安装),编译好的二进制(直接安装)
  10. 3-4 创建一个新的项目
  11. java找链表中最小值_算法图解:如何找出栈中的最小值?
  12. CC2530射频通信
  13. Cmder安装并解决cmder here报错问题
  14. CAN 报文编码学习笔记二:汽车CAN协议测试——发送与接收
  15. 搜索进阶-迭代加深搜索
  16. 3D迷宫(DirextX9)
  17. 值传递,指针传递,引用传递的区别
  18. kaggle中的房价预测的一些数据分析方法详解
  19. python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  20. 1-3 laravel C R U D=(数据验证)

热门文章

  1. 《WINDOWS游戏编程之从零开始》第四章学习笔记
  2. HeadFirstJava——11_异常处理
  3. 词霸豆豆 — 互联网时代的金山词霸
  4. 电影mysql设计_电影院数据库设计(案例)
  5. Linux内核启动流程详解
  6. jQuery框架的ajax
  7. 访问类路径下资源的两种方式
  8. WPS2016专业版
  9. Oracle下载及安装超详细教程
  10. 一代霸主的没落——诺基亚