zoukankan      html  css  js  c++  java
  • 推荐算法

    推荐算法越来越多的运用到我们的生活中,特别是在网站中,当你浏览大大小小的网站,你的行为被时刻记录着,并根据一些依据对你推荐一些物品。下面会简单介绍一下推荐算法,后续会继续对这些算法进行补充。

    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

     

  • 相关阅读:
    Centos下安装JAVA
    发布app到appstore的详细步骤
    修改Struts2的struts.xml配置文件位置
    linux 打印当前进程环境变量
    软件复用
    用Delphi开发OPC客户端工具的方法研究
    位图显示地图
    idFTPserver控件实现的ftp 服务器
    电子地图概念
    Tidftp实现自动更新程序
  • 原文地址:https://www.cnblogs.com/r0825/p/9697962.html
Copyright © 2011-2022 走看看