`
whoisjackychen
  • 浏览: 13104 次
文章分类
社区版块
存档分类
最新评论

[转]关联推荐功能实现

阅读更多

关联推荐介绍 

关联推荐 包括 基于行为的推荐(user-based,相对来说困难些) 和 基于内容的推荐(item-based,相对来说简单些)。 

行为推荐可以基于日志数据,比如订单数据、访问日志等。比如你在当当网上查看一本书时,当当会推荐“买过此书的用户还买过什么书”。 

内容推荐比较简单些,只需梳理内容之间的关联性即可得到基础数据,之后做推荐。比如你在当当网上查看一本书时,当当会推荐“你可能对以下所列书籍也感兴趣”。或者书籍组合推荐之类的。 

具体案例即实现: 
基础表: 

具体案例及实现 
案例描述: 
基础表中有用户(user_group_map)访问应用的日志(user_hitrate_log)信息,基于这写基础表数据,实现为用户推荐关联应用的功能(即基于行为的推荐)。 

基础表: 

-------------------------三个月  访问过此应用的同组用户 
CREATE TABLE CRMTEST.log_ref_user 

  resourceid        varchar(32)       NOT NULL, 
  url        varchar(120)       , 
  group_id         VARCHAR(32)     NOT NULL, 
  USERID         VARCHAR(32)     NOT NULL, 
  group_userid  VARCHAR(32)     NOT NULL 

  DATA CAPTURE NONE 
  IN TBS_DEV1; 
  
comment on CRMTEST.log_ref_user 

  resourceid        is '资源id', 
  url        is '资源url', 
  group_id         is '用户组id', 
  USERID         is '用户id', 
  group_userid  is '同组用户id' 
); 
-----------------三个月  访问过此应用的同组用户 三个月内  还访问的应用排名 
CREATE TABLE CRMTEST.log_ref_resource 

group_id         VARCHAR(32)     NOT NULL, 
  resourceid        varchar(32)       , 
  url        varchar(120)       , 
  ref_resourceid  VARCHAR(32)     NOT NULL, 
  ref_resourcename  VARCHAR(32)     , 
  ref_resourceurl  VARCHAR(120)     , 
  ref_visitcount  integer     , 
  ref_rank  integer    , 
  ref_resourcetype  integer     

  DATA CAPTURE NONE 
  IN TBS_DEV1; 
  
comment on CRMTEST.log_ref_resource 

group_id         is '用户组id', 
  resourceid        is '资源id', 
  url             is '资源url', 
  ref_resourceid  is '关联应用id', 
  ref_resourcename  is '关联应用名称', 
  ref_resourceurl  is '关联应用url', 
  ref_visitcount  is '关联应用访问次数', 
  ref_rank  is '关联应用排名', 
  ref_resourcetype is '关联应用的资源类型' 
); 

关联推荐算法/口径: 

关联推荐算法/口径: 
-------------------------三个月  访问过此应用的同组用户 
insert into log_ref_user 
  (resourceid, url, group_id, userid, group_userid) 
  select s1.uniqueid, url, s1.group_id, s1.userid, s2.userid 
    from (select uniqueid, group_id, t1.userid 
            from user_hitrate_log t1 
            left join user_group_map t2 on t1.userid = t2.userid 
           where hittime >= '2011-01-01 00:00:00' 
             and hittime <= '2011-04-01 00:00:00' 
           group by uniqueid, group_id, t1.userid 
           order by uniqueid, group_id) s1 
    left join (select uniqueid, group_id, t1.userid 
                 from user_hitrate_log t1 
                 left join user_group_map t2 on t1.userid = t2.userid 
                where hittime >= '2011-01-01 00:00:00' 
                  and hittime <= '2011-04-01 00:00:00' 
                group by uniqueid, group_id, t1.userid 
                order by uniqueid, group_id) s2 on s1.uniqueid = 
                                                   s2.uniqueid 
                                               and s1.group_id = 
                                                   s2.group_id 
    left join sys_menu_item s3 on s1.uniqueid = char(s3.menuitemid) 
   where s1.userid != s2.userid 
   order by s1.uniqueid, s1.group_id 

-----------------三个月  访问过此应用的同组用户 三个月内  还访问的应用排名 
insert into log_ref_resource 
  (group_id, 
   resourceid, 
   url, 
   ref_resourceid, 
   ref_resourcename, 
   ref_resourceurl, 
   ref_resourcetype, 
   ref_visitcount) 
  select group_id, 
         t1.resourceid, 
         t1.url, 
         uniqueid, 
         menuitemtitle, 
         t3.url, 
         resource_type, 
         count(*) num 
    from log_ref_user t1 
    left join user_hitrate_log t2 on t1.group_userid = t2.userid 
    left join sys_menu_item t3 on t2.uniqueid = char(t3.menuitemid) 
   where hittime >= '2011-01-01 00:00:00' 
     and hittime <= '2011-04-01 00:00:00' 
     and t1.resourceid != uniqueid 
   group by group_id, 
            t1.resourceid, 
            t1.url, 
            uniqueid, 
            menuitemtitle, 
            t3.url, 
            resource_type 
   order by group_id, t1.resourceid, num desc 

三个月  访问过此应用的同组用户 这个口径 可能有点难理解(其实就是一个自关联的笛卡尔积),回头补充些示例数据吧。。。 

这个案例只是关联推荐的一个简单实现,没有考虑 最低支持度/置信度、及性能(剪枝)之类的问题。

分享到:
评论

相关推荐

    java实现灰色关联算法,计算灰色关联度

    在Java编程环境中实现灰色关联算法,可以让我们更好地处理这些复杂问题。下面将详细介绍灰色关联算法的基本原理,以及如何使用Java来实现它。 灰色关联算法的核心思想是通过比较参考序列和待测序列之间的差异,来...

    DbGridEh中实现关联子表的下拉功能

    在DbGridEh中实现关联子表的下拉功能,可以有效地提高用户体验,让用户通过下拉列表快速选择和查看相关数据。 实现这个功能的关键在于理解主从表的概念以及如何在DbGridEh中设置关联。首先,你需要在数据库层面上...

    c++实现关联规则Apriori算法

    总的来说,"c++实现关联规则Apriori算法"涉及的知识点包括数据挖掘、关联规则学习、Apriori算法、C++编程、VS2010开发环境、数据结构和算法优化。掌握这些知识,将有助于我们开发出适用于各种场景的高效数据挖掘工具...

    Loadrunner 自动关联手动关联

    * Regular expression:该功能由函数 web_reg_save_param_regexp 实现。 * Right Boundary:设置右边界,这里是用来填写关联时对于数据处理的右匹配内容规则,选项同左边界。 * DFEs:在录制选项和回放选项中我们...

    VC ListBox内容关联功能的实现.rar

    VC ListBox内容关联功能的实现,左侧ListBox的任意项,在鼠标单击后,会在右侧显示出关联的内容,类似于读取数据库显示的内容,其实两者之间都是静态的,只不过存在一定的关联,本源码就是演示如何关联的功能。

    vb 实现文件关联 实现自己所设定的文件关联名,实现自己编程软件中的后缀,文件关联

    在本例中,我们将通过VB脚本实现这一功能,使得指定的文件扩展名能够与开发者编写的软件相关联。 ### 一、文件关联的基础概念 文件关联是指将一个文件类型(通常是基于其文件扩展名)与一个或多个应用程序相关联的...

    用java写的左关联右关联join类

    现在,当我们用Java实现这个功能时,我们可能需要设计一个类或者一组类,这些类能够处理数据结构(例如,使用List、Map或者其他集合框架中的类来表示数据表),并提供方法来进行左关联和右关联的操作。这通常涉及到...

    能实现一对多关联的通用EXCEL导入功能

    在IT行业中,开发一个能实现一对多关联的通用EXCEL导入功能是一项常见的需求,尤其是在数据管理、数据分析或者系统集成的场景下。这个功能允许用户通过上传Excel文件来批量导入包含复杂关系的数据,例如一个学生可以...

    文件关联实现源代码

    下面将详细讨论如何使用C++语言实现文件关联功能以及涉及的关键技术。 首先,我们需要理解注册表在文件关联中的作用。注册表是Windows操作系统中存储系统和应用程序设置的重要数据库。在文件关联中,我们需要修改`...

    CAD中的部件关联原理及其实现

    H SEM系统采用了一套完整的语法规则和系统结构来支持其功能实现。其中,H SEM语言的设计尤为重要,它定义了如何描述部件及其关联的方式。此外,系统还采用了多项关键技术,如数据管理、图形渲染等,以确保系统的高效...

    dialog弹框上实现下拉列表功能,有二级关联菜单选项功能ExpandableListViewDemo-master

    dialog弹框上实现下拉列表功能,有二级关联菜单选项功能ExpandableListViewDemo-master 通过设置属性,可实现只显示一个Group的子菜单 , 显示全部Group的子菜单 。需要自己设置就可以了。

    基于Javascript技术的关联表单设计和实现.pdf

    在本文介绍的关联表单系统中,使用了Javascript语言来实现关联表单的功能。该系统使用selectcity.js文件来存放省市和地区的数据,然后在ASP程序中调用该文件,并实现了关联表单的功能。 该系统的实现机制可以分为...

    使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能完整源码.zip

    购物类的网站都有商品推荐的功能,通过SQL Server Analysis Services的数据挖掘功能,可以轻松的来构建类似的功能,其中一种方案是把DMX查询挖掘模型的过程封装到SSAS CLR存储过程当中,然后在前端展示,这个例子...

    Objective-C的Category与关联对象实现原理 - iOS知识库1

    Category和关联对象是Objective-C中两个强大的机制,提供了灵活的方式来扩展类的功能和实现对象之间的关联。通过了解Category和关联对象的实现原理和应用场景,我们可以更好地使用它们来开发高质量的 iOS 应用程序。

    基于ssm+mysql关联规则的计算机类考研院校推荐系统设计与实现.docx

    为了解决这个问题,本文开发了一个基于关联规则的考研院校推荐系统,该系统使用了JSP技术来实现系统功能,并选择了MySQL数据库来存储数据。该系统的主要功能包括院校搜索、院校信息查看等功能。系统的设计和实现可以...

    关联规则挖掘高效的关联规则算法实现

    ### 关联规则挖掘与高效算法实现 #### 一、关联规则挖掘概述 关联规则挖掘是数据挖掘中的一个重要领域,主要用于发现存在于大量数据集中的频繁项集之间的有趣的关系或相关性。这种技术在零售业、市场篮子分析、...

    vscode关联vivado实现自动跳转到定义位置exe文件

    7. 关联Vivado和VSCode:在VSCode中打开Vivado工程的根目录,现在你应该能够通过插件的功能(通常是右键点击并选择“Go to Definition”或使用快捷键)来实现代码内的定义跳转。 此外,`README.md`文件可能包含关于...

Global site tag (gtag.js) - Google Analytics