Skip to content

MrKZZ/-_Recommand_System

Repository files navigation

新闻推荐系统

1.新闻的聚类:

​ 基于内容的文本聚类,将文本内容相近的新闻合并成一个类别,实现对同类内容的新闻推荐,以及测试情况下提升对同类内容的准略率。

2.物品之间的相似度(基于物品的协同过滤):

物品之间的相似度是通过用户的行为计算物品之间的相似度,不是通过物品内容的关系计算相似度。(内容之间的相似度通过新闻的聚类已经完成)物品之间的相似度实现了物品之间的潜在关联信息。

这里相似度计算方法使用 物品i与j的相似度 = 同时喜欢物品i和物品j的用户数 / (喜欢物品i的用户数 * 喜欢物品j的用户数

得到物品之间的相似度之后,可以进行归一化,实验表明归一化过程可以增加推荐系统的准确性。归一化操作:$w^*{ij} = w{ij}/max_j(w_{ij})$

得到物品之间的相似度之后,推荐算法希望找到与物品i最相似的k个物品进行推荐,但是同样需要关注用户对某件物品的喜好程度。使用$w_{ij}$表示物品i和j之间的相似度,用$r_{ui}$表示用户u对物品i的喜欢程度,因此可以使用公式$p_{uj} = w_{ij}*r_{ui}$来表示用户u对物品j的喜好程度。

基于物品的协同过滤算法可以实现推荐理由,基于用户历史上对该物品的喜好程度对用户进行推荐。

基于商品的协同过滤算法:

1544588417828

基于商品的改进协同过滤算法:

1544588520907

​ 未改进的算法中,计算物品之间的相似度矩阵使用了物品i与物品j之间的公共用户数目进行计算,该公共用户数目越大表明两件商品越接近。改进算法中惩罚了活跃用户对两件商品相似度的影响。即有一部分用户什么商品都买,因此他们对商品i.j相似度的贡献应该小于一个不活跃用户在某一时刻对两将商品i,j同时产生行为的贡献度。从实验结果可以看出,这一点大幅提升了物品之间的协同过滤效果。

3.用户之间的相似度(基于用户的协同过滤):

用户之间的相似度通过用户u喜欢的物品清单ulist,与用户v喜欢的物品清单vlist的交集 ulist&&vlist \(用户u的喜好物品清单数 * 用户v喜好物品清单数) 当然这里有相同的一件商品分子相当于做了加一操作,可以改进的一点是:降低每一件相同物品所带来的权重变化,例如取对数,如果存在一件相同商品,分子进行加$1/log(1+N(i))$,这里N(I)表示喜欢商品i的总用户数量,惩罚了对于大众都喜欢的商品对两用之间的相似度的影响。

得到用户之间的相似度之后,推荐算法希望对用户u推荐与他兴趣相似度最高的几个用户所喜欢的物品,这里同样需要考虑用户对该物品的喜好程度,因此同物品间的协同过滤相似,使用$w_{uv}$表示用户u和v之间的相似度,用$r_{vi}$表示用户u对物品i的喜欢程度,因此可以使用公式$p_{uj} = w_{uv}*r_{vi}$来表示用户u对物品 i 的喜好程度。

基于用户的协同过滤算法:

1544588626996

基于用户的改进协同过滤算法:

1544588694093

4.LFM隐藏语义模型

​ 通过对物品按照兴趣特点进行分类,对用户按照兴趣特点进行分类,然后从相应的兴趣特点分类中选取可能喜欢的商品推荐给用户。

​ 隐语义模型的分类来自于对用户行为的统计,代表了用户对物品分类的看法。因于一模型LFM算法通过如下公式进行计算: $$ Preference(u,i) = r_{ui} =p_u^Tq_i=\sum_{k=1}^Kp_{u,k}q_{i,k} $$ 其中,$p_{u,k}$度量了用户u与隐类k的关系,$q_{i,k}$度量了k个隐类与物品i之间的关系。分类个数k是可以随精度进行调节的。在使用隐语义模型过程中,有几点前人比赛过程中的经验可以借鉴,减少调参数次数。1.对每个用户,需要保证正负样本数目的平衡。2.对于每个用户的负样本采样,需要选取那些热门商品但是该用户却没有用户行为的商品,本次实验中,认为新闻就是一个一个的商品。

​ 经过正负样本的采样,得到一个用户-物品集和:${(u,i)}$如果$(u,i)$是正样本,则有$r_{u,i}=1$,否则有$r_{u,i}=0$,通过优化下式的损失函数来找到最优的参数p,q。 $$ C = \sum_{(u,i)}(r_{ui}-\hat{r_{ui}})^2=sum_{(u,i)}[r_{ui}-\sum_{k=1}^Kp_{u,k}q_{i,k}]^2+\lambda||p_u||^2+\lambda||q_i||^2 $$ 上式中后两项为正则化项,防止发生过拟合现象,K表示隐类数目,参数可调。$p_{u,k}$和$q_{i,k}$表示用户u与k个隐类的相似度,和商品i与k个隐类的相似度,求和得到在k个隐类的条件下,u与i的关联即表示u对i的喜欢程度,通过对样本采样得到$r_{ui}$可以得到真实情况下用户u对i的喜欢程度,两项做差得到错误率,将错误率最小化得到我们需要的模型参数P,Q。

基于隐语义模型的分类:

正负样本均采样10:

1544669279932

正负样本均采样20:

1544670146567

正负样本均采样30:

1544672485492

正负样本均采样50:

​ 正在跑

正负样本均采样100:

​ 正在跑

新闻推荐中需要解决的问题:

1.由于新闻推荐中新闻 时效性 非常强,必须完成关于新闻时间衰减对用户兴趣的影响,需要根据用户浏览的时间对用户进行推荐。

​ 基于物品之间的协同过滤,考虑时间惩罚因素:

1544609566284

​ 基于用户的协同过滤改进算法,考虑时间因素

1544611303852

​ 基于用户的协同过滤算法, 考虑时间因素:

1544619080377

2.由于用户新闻的浏览中,新闻事件是一个待推荐的商品,而相似的商品肯恩那个对应不同的新闻,因此需要对商品进行聚类,即根据商品内容将商品进行聚类。完成一定程度上基于内容的推荐。

对新闻数据进行聚类:

​ 新闻样本聚类采用了提取新闻标题关键词,通过设定Jaccard系数阈值,对内容相关新闻进行聚类,实验中,新闻聚类对效果提升影响有限。部分新闻聚类结果如下:

1544672758835

选取一行验证新闻聚类效果:

1544672891952

1544672927092

1544672998566

1544673038675

1544673094936

1544673139292

数据和照片无法上传!!!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages