关于数据挖掘的问题

baggio785 2007-10-10 11:11:29
现在想做这样一个数据挖掘的东东,请大家给些参考意见

比如,一个书籍网站,共有N本书。在具体书籍详细介绍页面,会有这部分内容:
阅读过本书的人还读了这些书
1 书名一
2 书名二
.
.
.
.
.
.
10 书名十

规则为:如果某个用户1浏览了书A后,接连(注意,这里是接连)浏览了B、C、D、E;用户二浏览了书B后,接连浏览了E、O、H、G;用户三浏览了书E后,接连浏览了F、W、R、P;用户四浏览了书Q后,接连浏览了B、C;

那么在书B的详细介绍页面,显示的“阅读过本书的人还读了这些书”为
1 C
2 E

数据采集的表结构为:
id,书籍id,用户的sessionid,时间

然后定时对采集的数据进行数据挖掘分析

不知道大家有没有明白我的意思。还请大家对这个规则提出一些建议,以及数据采集的表结构如何?

在这里先谢谢大家了
...全文
410 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
baggio785 2007-10-19
  • 打赏
  • 举报
回复
没人啦?
sp4 2007-10-15
  • 打赏
  • 举报
回复
这个东西看数据分析是如何设计的了。
baggio785 2007-10-14
  • 打赏
  • 举报
回复
顶起来
baggio785 2007-10-13
  • 打赏
  • 举报
回复
顶起来
baggio785 2007-10-11
  • 打赏
  • 举报
回复
windily :最开始的想法是不分顺序的,但是考虑这样子,有可能每本书的结果,雷同的会比较多,所以分了以下顺序

windily 2007-10-11
  • 打赏
  • 举报
回复
感觉这样的数据不准确,谁知道紧接着看的书就是与之前那本书最相关的
areswang 2007-10-11
  • 打赏
  • 举报
回复
学习!
chenhongxin 2007-10-11
  • 打赏
  • 举报
回复
学习了,谢谢了。
lovelacy 2007-10-11
  • 打赏
  • 举报
回复
帮你顶
windily 2007-10-11
  • 打赏
  • 举报
回复
我的问题是用户看完a书后,接着看bcd,可是你只记录b,那这样cd对与a就没用了,b,c,d顺序的区别这么大吗?
baggio785 2007-10-11
  • 打赏
  • 举报
回复
windily :不用最相关,要的数据是用户看完某本书后,紧接着看的是那些书

dongle2001 :按照你提供的数据,结果应该是C、E;因为看完B后,马上(是马上,或者说看完B后所看的下一本书)又看的书只有C和E,而C被浏览的次数是2,大于E被浏览的次数1,所以C排在E的前面
dongle2001 2007-10-11
  • 打赏
  • 举报
回复
规则为:如果某个用户1浏览了书A后,接连(注意,这里是接连)浏览了B、C、D、E;用户二浏览了书B后,接连浏览了E、O、H、G;用户三浏览了书E后,接连浏览了F、W、R、P;用户四浏览了书Q后,接连浏览了B、C;

用户1看过B后,还看过C,D,E
用户2看过B后,还看过E、O、H、G
用户4看过B后,还看过c

所以看过b的用户还看了C,E,O, D, H, G

不知道,lz要的结果C,E是怎么来的。
baggio785 2007-10-10
  • 打赏
  • 举报
回复
mengmou,我现在暂时先不考虑具体的sql语句,想让大家帮忙看看:

这样的表结构,以及规则是否合理呢?

也希望大家给出建议,或者其他的规则
mengmou 2007-10-10
  • 打赏
  • 举报
回复
select b.书籍,t2.书籍 as 之后书籍
from #book b
join #tb t on t.书籍 = b.书籍
join #tb t2
on t2.用户 = t.用户 and t2.id > t.id
and not exists(
select 1 from #tb where 用户 = t2.用户 and id > t.id and id < t2.id
)
where datediff(hour,t.时间,t2.时间) < 24
group by b.书籍,t2.书籍
order by b.书籍,count(*)
baggio785 2007-10-10
  • 打赏
  • 举报
回复
mengmou ,最后的结果基本正确,但是排序不对,应该按照浏览的次数来排序的
baggio785 2007-10-10
  • 打赏
  • 举报
回复
但是如果数据多了,至少重复性会很大了,这不是预期的数据

mengmou ,谢谢,我先看看啊
dobear_0922 2007-10-10
  • 打赏
  • 举报
回复
dobear_0922 我一开始的想法就是你说的,但是这样的话所有的书籍详细页面的“阅读过本书的人还读了这些书”的内容就是一样的
----------

应该是不一样的吧,例如一个用户看了A,B,C,E, 另一个用户看了B,A,D,F, 那么统计的结果就是:
A: B,C,D,E,F
B: A,C,D,E,F
C: A,B,E
D: A,B,F
E: A,B,C
F: A,B,D
mengmou 2007-10-10
  • 打赏
  • 举报
回复
--建立测试环境
create table #book(书籍 varchar(10))
insert #book
select 'a' union all
select 'b' union all
select 'c' union all
select 'd' union all
select 'e' union all
select 'f' union all
select 'g' union all
select 'h' union all
select 'o' union all
select 'p' union all
select 'q' union all
select 'r' union all
select 'w'
go
create table #tb(id int identity,用户 int,书籍 varchar(10),时间 datetime)
insert #tb(用户,书籍,时间)
select '1','a','2007-10-10 11:40:36.273' union all
select '1','b','2007-10-10 11:41:36.273' union all
select '1','c','2007-10-10 11:42:36.273' union all
select '1','d','2007-10-10 11:43:36.273' union all
select '1','e','2007-10-10 11:44:36.273' union all
select '2','b','2007-10-10 11:40:36.273' union all
select '2','e','2007-10-10 11:41:36.273' union all
select '2','o','2007-10-10 11:42:36.273' union all
select '2','h','2007-10-10 11:43:36.273' union all
select '2','g','2007-10-10 11:44:36.273' union all
select '3','e','2007-10-10 11:40:36.273' union all
select '3','f','2007-10-10 11:41:36.273' union all
select '3','w','2007-10-10 11:42:36.273' union all
select '3','r','2007-10-10 11:43:36.273' union all
select '3','p','2007-10-10 11:44:36.273' union all
select '4','q','2007-10-10 11:42:36.273' union all
select '4','b','2007-10-10 11:43:36.273' union all
select '4','c','2007-10-10 11:44:36.273'
go
--执行测试语句
select distinct b.书籍,t2.书籍 as 之后书籍
from #book b
join #tb t on t.书籍 = b.书籍
join #tb t2
on t2.用户 = t.用户 and t2.id > t.id
and not exists(
select 1 from #tb where 用户 = t2.用户 and id > t.id and id < t2.id
)
where datediff(hour,t.时间,t2.时间) < 24
order by b.书籍
go
--删除测试环境
drop table #tb,#book
go
/*--测试结果
书籍 之后书籍
---------- ----------
a b
b c
b e
c d
d e
e f
e o
f w
h g
o h
q b
r p
w r

(13 row(s) affected)
*/
baggio785 2007-10-10
  • 打赏
  • 举报
回复
是一段时间内的,比如1天内的
mengmou 2007-10-10
  • 打赏
  • 举报
回复
接连这个词也不准确啊,我第一天只看了a,第二天只看了b,也是接连?
加载更多回复(11)

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧