用户从分类用户行为中分析Mahout

Tur*_*cia 9 classification cluster-analysis mahout

我正在尝试使用Mahout对用户进行聚类和分类.目前我处于规划阶段,我的想法与想法完全混合,因为我对这个领域相对较新,所以我坚持数据格式化.

假设我们有两个数据表(足够大).在第一个表中有用户及其操作.每个用户至少有一个动作,他们也可以有太多的动作.表中有大约10000个不同的user_actions和数百万条记录.

user        - user_action
u1          - a
u2          - b
u3          - a
u1          - c
u2          - c
u2          - c
u1          - b
u4          - f
u4          - e
u1          - e
u1          - d
u5          - d
Run Code Online (Sandbox Code Playgroud)

在另一个表中,有行动类别.每个动作可能没有或多个类别.共有60个类别.

user_action - category
a           - cat1
b           - cat2
c           - cat1
d           - NULL
e           - cat1, cat3
f           - cat4
Run Code Online (Sandbox Code Playgroud)

我将尝试使用Mahout构建用户分类模型,但我不知道应该做什么.我应该创建什么类型的用户向量?或者我真的需要用户向量吗?

我想我需要创造类似的东西;

u1 (a, c, b, e, d)
u2 (b, c, c)
u3 (a)
u4 (f, e)
u5 ()
Run Code Online (Sandbox Code Playgroud)

问题在这里,一些用户执行了超过100000个操作(其中一些是相同的操作)

所以; 我认为这更有用;

u1 (cat1, cat1, cat2, cat1, cat3)
u2 (cat2, cat1, cat1)
u3 (cat1)
u4 (cat4, cat1, cat3)
u5 ()
Run Code Online (Sandbox Code Playgroud)

我也担心的事情是

  • 我该如何为用户加权?例如,u1至少有三个与cat1相关的动作,而u3只有1.这一个应该是不同的?
  • 如何减少活动用户和被动用户之间的差异?像u1有太多的动作和类别,u3只有1.

欢迎任何指导.

awc*_*olm 1

我会像您一样为每个用户创建一行,并且为每个类别创建一列;如果我正确理解你的示例,这将导致 60 列。列的值范围从 0 到用户看到该类别的最大次数。结果是每个用户有 60 个号码,其中大多数为 0。

可能需要对行执行某种标准化。与在文本挖掘中生成文档向量的过程进行类比,可以将术语频率归一化之类的东西应用于行。每列可能还需要标准化。

从这里开始,可以使用您选择的算法和聚类有效性度量来执行聚类,以帮助指导您选择最有趣的聚类。

其本质是您必须迭代地重复该过程,也许以新的方式表示输入数据。