推荐算法越来越多的运用到我们的生活中,特别是在网站中,当你浏览大大小小的网站,你的行为被时刻记录着,并根据一些依据对你推荐一些物品。下面会简单介绍一下推荐算法,后续会继续对这些算法进行补充。
1.协同过滤算法
2.基于流行度的算法
3.基于模型的算法
4.混合算法
协同过滤算法
协同过滤算法有两种,一种是基于用户的协同过滤算法,一种是基于物品的协同过滤算法。
基于用户的协同过滤算法
该算法主要是找出用户的相似用户,将相似用户浏览或购买而用户没有购买的商品推荐给用户。
基于用户的协同过滤算法流程如下:
1.分析各个用户对item的评价(通过浏览记录、购买记录等);
2.依据用户对item的评价计算得出所有用户之间的相似度;
3.选出与当前用户最相似的N个用户;
4.将这N个用户评价最高并且当前用户又没有浏览过的item推荐给当前用户。
如下图:
基于物品的协同过滤算法
基于物品的协同过滤算法原理为在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。基于物品的协同过滤算法原理大同小异,只是主体在于物品:
1.分析各个用户对item的浏览记录。 依据浏览记录分析得出所有item之间的相似度;
2.对于当前用户评价高的item,找出与之相似度最高的N个item;
3.将这N个item推荐给用户。
如下图:
基于流行度的算法
该方法比较简单粗暴,主要是把当前的流行物品或者时间推荐给用户,不考虑用户的偏好,这种算法比较适合应用在新用户上,这类用户没有任何历史数据,可以直接给他们推荐流行的东西,根据用户的点击,再进一步推荐。
基于模型的算法
基于模型的方法有很多,用到的诸如机器学习的方法也可以很深,这里只简单介绍下比较简单的方法——Logistics回归预测。我们通过分析系统中用户的行为和购买记录等数据,得到如下表:
表中的行是一种物品,x1~xn是影响用户行为的各种特征属性,如用户年龄段、性别、地域、物品的价格、类别等等,y则是用户对于该物品的喜好程度,可以是购买记录、浏览、收藏等等。通过大量这类的数据,我们可以回归拟合出一个函数,计算出x1~xn对应的系数,这即是各特征属性对应的权重,权重值越大则表明该属性对于用户选择商品越重要。
在拟合函数的时候我们会想到,单一的某种属性和另一种属性可能并不存在强关联。比如,年龄与购买护肤品这个行为并不呈强关联,性别与购买护肤品也不强关联,但当我们把年龄与性别综合在一起考虑时,它们便和购买行为产生了强关联。比如(我只是比如),20~30岁的女性用户更倾向于购买护肤品,这就叫交叉属性。通过反复测试和经验,我们可以调整特征属性的组合,拟合出最准确的回归函数。最后得出的属性权重如下:
基于模型的算法由于快速、准确,适用于实时性比较高的业务如新闻、广告等,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是常说的Feature Engineering。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。
混合算法
通常推荐算法中会使用多种算法的融合,往往会得到比单一算法更好的结果,算法融合可以使用加权融合,赋予不同算法不同的权重,从而得到不同的结果。
总结:
以上几类推荐算法中,基于流行度的算法比较适合使用在新用户群体中,不需要分析用户行为数据,就可以直接进行推荐。基于用户的协同过滤算法比较适合使用在用户数目较少的情况下,用户数过大会使得计算量过大。基于物品的协同过滤算法比较适合使用在用户数目大的情况下。基于模型的推荐算法,可以使用多种不同的模型来进行推荐,具体需要根据实际情况。在条件允许的情况下,可以使用模型融合算法,或许会得到更好的结果。
参考博客:https://blog.csdn.net/u010670689/article/details/71513133/
参考博客:https://blog.csdn.net/xiaokang123456kao/article/details/74735992