部分智能推荐算法总结

来源:互联网 发布:sql注入登录 编辑:程序博客网 时间:2024/05/01 04:08

简介

目前存在的推荐系统主要分为两种:

1.基于内容的推荐系统
方式:通过分析单个用户或资源的原始信息来进行推荐;
优点:对于稀疏性有一定的抵抗能力;
缺点:只能发现与已有兴趣相似的资源,难以挖掘新的感兴趣资源;
2.基于协同过滤的推荐系统
方式:基于历史上多个用户的访问信息对用户群体的喜好进行分析最后推荐使用者可能感兴趣的资源;
优点:能有效挖掘出新的感兴趣的资源,且无需考虑资源的表示形式;
缺点:对于稀疏性高的数据,系统性能会大大降低;


图模型

大多数的推荐算法都面临数据稀疏性问题,图模型的算法能明显的改进稀疏性问题、提高推荐准确度。

图模型:

(图有小问题,表达意思即可)

图模型的构造:

  用户对资源进行评分行为可以看作一种联系,表达了用户对资源的偏好。

 

  对这种联系建立模型,把用户和资源表示成图中的点,如果用户使用过某资源,则在该用户和资源之间连边,把评分作为边的权值。

加入用户的背景信息:

  用户背景信息是很强的社会信息,用户的背景能够决定用户对信息资源的需求。背景信息相同的人可能对资源有相似的偏好。


计算:

  使用带重启机制的随机游走算法(Random Walk with Restart),计算一个用户到其他所有用户的相关度。

RWR算法:算法从图中某个顶点出发,沿图中的边随机游走。在任意点上,算法以一定的概率随机地选择与该顶点相邻的边,沿这条边移动到下一个顶点,或以一定的概率直接回到出发点。对于一个非周期不可约的图,经过若干次随机游走过程,到达图中每一个顶点的概率值达到平稳分布,再次迭代也不改变图中的概率分布值。此时,图中每个点的概率值可以看作该顶点与出发点的联系紧密程度。


推荐计算过程:

1.把需要得到推荐的用户顶点作为出发顶点;

2.RWR迭代收敛之后,稳定概率值越大的顶点,与目标顶点联系越密切,越应该作为推荐项目。

3.对得到的稳定概率值进行排序后,排除用户已经看过的资源,把概率值最大的前k个资源作为推荐集合。


矩阵分解

矩阵分解的思路是把评分矩阵通过分解,用一个低秩的矩阵来逼近原来的评分矩阵。

对原来的庞大的常常又非常稀疏的矩阵进行降维和分解,而分解后得到的矩阵都是稠密矩阵。

v优点:
Ø比较容易编程实现
Ø比较低的时间和空间复杂度
Ø预测的精度比较高
Ø非常好的扩展性

缺点:
Ø推荐的结果不具有很好的可解释性。
Ø付出的空间代价太大。

几种矩阵分解方法:
1.PureSvd(简易)
直接对用户评分矩阵RSVD分解成两个矩阵,未知值填充0
2.LatentFactor Model(学术界主流)
实现满足一定约束条件的矩阵分解,需要构造一个优化问题;
3.NMF
用于非负的值才有意义的情况,因为上面两个方法都有负值出现;


Topic model

Topicmodel(主题模型)

其实网易的算法可以算是主题模型的一种简易展现。

1.形成一个用户兴趣向量,通过记录用户的点击,来分析用户对某主题新闻的兴趣,考虑时间段流行度的加权;

2.用K-means方法对目标用户推荐;

在主题模型中,主题表示一个概念、一个方面,表现为一系列相关的单词,是这些单词的条件概率。


通俗来说,一个主题就好像一个,它装了若干出现概率较高的词语,这些词语和这个主题有很强的相关性。

对于一段话来说,有些词语可以出自这个,有些可能来自那个,一段文本往往是若干个主题的杂合体。我们举个简单的例子,见下图:

            

readablenormally

主题模型(topicmodel)可以无监督地对文档和词进行分类。主题模型训练推理有两种:

1.LDA

2.pLSA

LDA可以将一篇文档用多个主题以概率形式组成,pLSA只有一个主题




增强学习

增强学习原理:

  Agent通过接收每一个状态下的响应评估来做一个较合理的行为,设定一个回报函数,目标就是最大化回报的和。

对于控制决策问题,有这么一种解决思路。我们设计一个回报函数(reward function),如果learning agent在决定一步后,获得了较好的结果,那么我们给agent一些回报(比如回报函数结果为正),得到较差的结果,那么回报函数为负。

比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。


增强学习算法用于改进主题模型:

1.首先利用个性化标签数据和历史访问数据组合构建每个用户向量;
2.然后在学习用户向量过程中,算法基于强化学习的框架更新用户向量权值,且对较新的用户评价数据给予更高的权重,从而有效反映了用户的最新兴趣;
3.最后根据学习到的用户兴趣向量,结合协同过滤的思想对用户进行推荐。


决策树

决策树构建比较简单:

1.将所有的用户评分数据映射到<like,dislike, unknown>三维空间上;
2.从根结点开始,选择最佳的分割项,自顶向下建树;
3.终止条件,同时考虑以下三种:

设定树的最大深度;

设定最佳分割项的误差阈值;

设定当前节点的最少评分数量;


集成学习


集成学习算法(EnsembleLearning):

  将一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。


算法:
1.Boosting
2.Bagging

集成学习

  集成学习算法应用于决策树                    随机森林

  随机森林算法:

1.可放回抽样;
2.分类时选一小部分特征;
3.不剪枝情况下生成tree
4.生成一片森林,分类时用每一棵树的结果vote


Bagging

  Bagging和随机森林的思路相似,随机有放回的采样数据,建立多个训练器,最终预测函数对分类问题采用投票的方式得到结果。


Boosting

  Boosting的思想是考虑了权重的:

1.初始化时对每一个训练例赋相等的权重;
2.然后用该学算法对训练集训练多轮,每次训练后,对训练失败的训练例赋以较大的权重;
3.得到一个预测函数序列,预测效果好的预测函数权重较大,反之较小;
4.最终的预测函数对分类问题采用有权重的投票。

基于Boosting的个性化推荐算法:

传统的协同过滤算法中,定位相似人群,利用KNN的方法,将评分乘以人群相似度加权值,取平均。

定位相似人群是最关键的步骤,其中有传统方法和基于局部结构两种方法;

传统相似度算法有:
1.余弦相似度;
2.正规化余弦相似度;(公式如下)
3.Pearson相关性;


I表示商品集合

r表示评分矩阵


基于局部结构的相似度计算有:

1.公共邻居:考虑两个用户之间共同打分的个数;
2.Salton指标;
3.Jaccard指标;
4.Sϕrensen算法;

I表示商品集合

r表示评分矩阵




上述众多的相似度测量方法可以产生众多的弱分类器,利用Boosting的思想来产生最优组合;





原创粉丝点击