首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据分类用户行为使用Mahout进行用户分析

根据分类用户行为使用Mahout进行用户分析
EN

Data Science用户
提问于 2015-06-29 17:32:31
回答 1查看 183关注 0票数 3

我试图用Mahout对用户进行聚类和分类。目前,我正处于计划阶段,我的思想与想法完全混在一起,而且由于我对这一领域相对较新,所以我被数据格式化困住了。

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

代码语言:javascript
运行
复制
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种类型。

代码语言:javascript
运行
复制
user_action - category
a           - cat1
b           - cat2
c           - cat1
d           - NULL
e           - cat1, cat3
f           - cat4

我将尝试用Mahout构建一个用户分类模型,但我不知道该做什么。我应该创建什么类型的用户向量?还是我真的需要用户向量?

我想我需要创造出这样的东西;

代码语言:javascript
运行
复制
u1 (a, c, b, e, d)
u2 (b, c, c)
u3 (a)
u4 (f, e)
u5 ()

在这里,一些用户执行了100000多个操作(其中一些是相同的操作)。

因此,我认为这更有用;

代码语言:javascript
运行
复制
u1 (cat1, cat1, cat2, cat1, cat3)
u2 (cat2, cat1, cat1)
u3 (cat1)
u4 (cat4, cat1, cat3)
u5 ()

我还担心的是

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

欢迎任何指导。

EN

回答 1

Data Science用户

发布于 2015-07-01 21:38:16

我认为这方面的一个解决方案可能是使用矩阵分解,以执行某种协作过滤。这样,您就不必显式地处理两个关注点。

为此,创建一个用户X操作矩阵W,其中行是用户,列是操作。W(i,j),即I行和j列上的矩阵条目是用户i执行操作j的次数。大多数协作过滤算法将未给出数据的矩阵条目视为丢失的数据值。

当您分解这个矩阵时,您将它分解为两个部分( W= A*B )。A矩阵将有行是用户,列作为潜在的维度。从这个A中,您可以得到每个用户的特征向量。然后,您可以在这些特征向量上运行聚类来对用户进行聚类。有关分解方法的更多直觉,请在google上查找“协作过滤的矩阵分解”。Mahout有矩阵因式分解实现,您可以使用。

使用动作类别完全是另一回事。这取决于一个类别意味着什么。这是否意味着一个类别中的每一个动作都是非常相似的,还是它们只是有一个或两个相似的方面。一个非常简单的方法是分解一个行动+类别X(用户X)矩阵。这可以使用前面提到的相同的实现来解决。你也可以有更多花哨的方案,比如修正矩阵B的一部分,使其与行动X类别矩阵非常相似。但这些方案将要求您自己编写优化代码。

票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/6264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档