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

时间:2015-06-29 23:11:52

标签: 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

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

user_action - category
a           - cat1
b           - cat2
c           - cat1
d           - NULL
e           - cat1, cat3
f           - cat4

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

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

u1 (a, c, b, e, d)
u2 (b, c, c)
u3 (a)
u4 (f, e)
u5 ()

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

因此;我认为这更有用;

u1 (cat1, cat1, cat2, cat1, cat3)
u2 (cat2, cat1, cat1)
u3 (cat1)
u4 (cat4, cat1, cat3)
u5 ()

我也担心的事情是

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

欢迎任何指导。

1 个答案:

答案 0 :(得分:1)

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

可能需要对行执行某种规范化。通过类比于在文本挖掘中产生文档向量所做的事情,可以将诸如术语频率归一化之类的东西应用于该行。每列也可能需要标准化。

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

这样做的本质是你必须迭代地重复这个过程,或者以新的方式表示输入数据。