推荐算法总结

一、协同过滤

基于用户协同过滤UserCF

核心思想:
对于当前用户U,根据用户U和其他用户的历史行为数据(用户-物品评分信息),找到和用户U最相似的K个用户,然后将这K个用户喜好的物品而U没有行为的物品推荐给用户U
相似度计算:
用户相似度由用户U与其他用户V共同行为过的物品所影响
算法步骤:(要给用户推荐新物品,则要知道该用户对新物品的评分)
1)对于一个用户U未行为过的物品i,找到所有对物品i行为过的用户集合
2)根据共同行为过的用户行为数据,计算该用户集合与用户U的相似度,找到最相似的K个用户
3)根据这K个用户对物品i的评分,计算出用户U对物品i的评分(计算方式包括:加权平均求和、基于均值计算的加权平均求和、基于偏置项计算的加权平均求和)
4)将计算出得分的物品集合中分数最高的N个物品推荐给用户U

优缺点:
1)性能:适用于用户较少产品;若用户过多,计算用户相似度矩阵复杂度太高,成本太大
2)领域:适用于时效性强,用户个性化兴趣不太明显的领域(基于用户协同过滤算法结构多样化会比较好,但比较难解释,所以适用于个性化不太明显的领域)
3)实时性:由于用户相似度计算是离线计算,所以有行为不一定有推荐结构的变化
4)冷启动:新用户刚加入时,对物品产生的行为很少,不能立即对他进行推荐,因为用户相似度是每隔一段时间离线计算的。所以冷启动问题就是新用户刚加入时给他推荐什么
5)推荐理由:很难提供令用户信服的推荐解释

基于物品协同过滤ItemCF

核心思想:
对于当前用户U而言,根据用户U历史行为过的物品列表,找出和列表中物品最相似的K个物品,将这K个物品推荐给用户U
相似度计算:
物品相似度受物品i与物品j共同行为过的用户影响
算法步骤:(要给用户推荐新物品,则要知道该用户对新物品的评分)
1、获取用户U行为过的所有物品集合
2、对于该用户U未行为过的物品i,计算物品i与上方物品集合的相似度,获取相似度最高的K个物品
3、根据用户U对这K个物品的评分计算用户U对物品i的评分(计算方式包括:加权平均求和、基于均值计算的加权平均求和、基于偏置项计算的加权平均求和)
4、将计算出得分的物品集合中分数最高的N个物品推荐给用户U

优缺点:
1)性能:适用于物品数明显小于用户数的场合,如果物品很多,物品相似度矩阵代价就很大
2)领域:长尾物品丰富,用户个性化需求强烈的领域
3)实时性:用户有新行为,一定会导致推荐结果的实时变化(因为可以利用之前数据马上计算出物品的相似度并推荐物品)
4)冷启动:没有冷启动问题。当新用户加入只要对一个物品发生过行为,那么就可以给该用户推荐与该物品相似的其他物品(因为物品的相似度计算依靠之前已经存在的数据进行计算,快速方便)
5)推荐理由:利用用户的历史行为给用户推荐,比较令人信服

基于模型协同过滤Mode_based

基于用户和基于物品协同过滤都称为以记忆为基础的协同过滤技术,共同缺点是资料稀疏、难以处理大数据量下的即时结果,因此发展出基于模型的协同过滤

核心思想:
基于历史资料得到一个模型,再用此模型进行预测用户对物品的评分

主要方法:
一、关联规则算法
#Apriori 算法:
1、算法目的:在一个数据集中找出项之间的关系,比如购买鞋子用户10%可能也会去购买袜子。该算法通过计算3个值来寻找强关联规则!
2、基本名词解释:
    1)事务:每一条交易称为一个事务
    2)项:交易的每一个物品称为一个项
    3)项集:包含零个或者多个项的集合叫做项集
    4)K-项集:包含K个项的项集叫做K-项集,比如{cola,egg}叫做2-项集
    5)频繁项集:支持度大于等于某个阈值的项集就叫做频繁项集
3、3个关键值:支持度、置信度、提升度,计算这个3个值来寻找强关联规则
    1)A->B支持度:表示同时购买A、B的订单数占总订单数的比例
    2)A->B置信度:表示购买A物品订单同时购买了B物品订单的比例,即等于同时购买A和B订单数占购买A物品订单数比例(条件概率)。置信度表示购买A物品有多少概率去购买B物品。
    3)A->B提升度:表示购买A物品的用户同时购买B物品的用户数占购买B物品的比例,计算公式为=置信度/B物品占总数的比例。如果大于1表示正相关性越高,如果等于1表示没有相关性,互相独立,如果小于1则表示负相关性越高。一般在提升度大于3,则认为提升度是有价值的

4、结论:A->B:购买A的用户有【置信度】的概率去购买B,而这种情况发生的概率为【支持度】
    1)满足支持度和置信度的规则,称之为【强关联规则】,该又分【无效强关联规则】和【有效强关联规则】
    2)无效强关联规则:如果提升度<=1,则表示无效强关联规则
    3)有效强关联规则:如果提升度>1,则表示有效强关联规则

二、聚类算法

#K-Means算法
1、算法目的:K-Means聚类是一种无监督学习方法(与之对应的是监督学习,其训练样本是带有标记信息的,其目的是对带有标记的数据集进行模型学习,从而便于对新的样本进行分类),其实质是依据某种距离度量,使得同一聚簇之间相似性最大化,不同聚簇之间相似性最小化。聚类的输入对象不需要带有类别标签,最后组成的分类是由使用的算法决定的

2、算法步骤:
    1)从数据中选择K个对象作为初始聚类中心
    2)计算每个聚类对象到聚类中心的距离,并且划分类
    3)根据划分好的类,计算该类的中心(平均值,同理也可以推广到计算中位数作为质心,原理本质一样)
    4)重复2-3步骤,不断迭代
    5)迭代停止条件为每次迭代后类变化不大为止(即中心点的收敛);或者迭代到足够次数;或者选择运行结果最好的那次迭代

三、分类算法:

主要思路:根据文本特征或属性,划分到已有的类别中。常用分类算法包括:决策树分类法、朴素的贝叶斯分类算法、基于支持向量机的分类器,神经网络法,K-最近邻法,模糊分类法

#决策树法
1、算法思想:根据用户数据的特征进行预测数据的最终走向,本质是一组If-Then的规则集合。其本质需要根据给定的训练数据集构建一个决策树模型(即分类规则),使它能够对实例进行正确的分类(先训练,再预测)
2、基本名词解释:
    1)根节点/父子节点/子节点:同树结构一样
    2)叶子节点:指没有子节点的节点
    3)裁枝:移除决策树中子节点的过程叫做裁枝
3、算法步骤:
    1)特征选择:指从众多特征中选择一个特征作为当前节点分裂的标准,选择特征有不同的量化评估方法,比如ID3(通过信息增益选择特征),C4.5(通过信息增益比选择特征),CART(通过Gini指数选择特征)等。特征选择的目的在于对数据集划分后,各数据集纯度要比划分前数据集纯度高
    2)决策树的生成:根据特征评估标准,从上至下生成子节点,直到数据集不可分则停止决策树成长。这个过程实际是将纯度低的数据集不断分裂成纯度高的数据集的一个过程。
    3)决策树裁剪:裁剪树枝来缩小树结构规模,缓解过度拟合

5、其他内容:
1)信息增益:在划分数据集前后信息发生的变化称之为信息增益,获得信息增益最高的特征就是最好的【特征】,所以我们要先统计不同集合的信息增益,而集合信息的度量方式称之为熵

#朴素贝叶斯分类算法

1、算法思想:主要思路是计算在不同特征下属于某个分类的条件概率(通过贝叶斯公式),通过概率大小来将数据进行分类。其前提条件是特征要互相独立
2、基本公式:贝叶斯公式,其中A为特征,B为分类
3、算法步骤:
1)假设x={a1,a2,a3,..,an}是一个待分类项,而每个a都是物品x的一个特征属性
2)有已知类别C={y1,y2,...,yn}
3)计算P(y1|x),P(y2|x)的概率,即X物品属于每个分类的概率(条件概率)
        1)找到一个已知分类的待分类的数据集合,训练样本
        2)根据训练样本,计算出每个分类下的特征属性概率,即P(a1|y1),即在属于分类y1的条件下特征属性是a1的概率
        3)根据2的结果和贝叶斯公式,可得出在a1的条件下属于y1分类的概率最大化值(通过分子最大化得到)
4)选择3结果中概率最高的一个值,这个值就是x属于具体哪个y分类

你可能感兴趣的:(推荐算法总结)