如何对链接遍历数据集进行聚类

数据挖掘 机器学习 聚类 scikit-学习
2021-09-28 03:33:00

我在我的移动应用上使用 Google Analytics 来查看不同用户如何使用该应用。我根据他们移动到的页面绘制路径。给定一个 100 个用户的路径列表,我该如何对用户进行聚类。使用哪种算法?顺便说一句,我正在考虑使用 sckit learn 包来实现。

我的数据集(在 csv 中)看起来像这样:

DeviceID,Pageid,Time_spent_on_Page,Transition.<br> 
ABC,Page1, 3s, 1->2.<br>
ABC,Page2, 2s, 2->4.<br>
ABC,Page4,1s,4->1.<br>

所以路径,这里是1->2->4->1,其中1,2,4是Pageids。

2个回答

@Shagun 的回答实际上是正确的。我只是扩展它!

您的问题有两种不同的方法:

图法

  • 正如@Shagun 的回答中所述,您有一个加权有向图,并且您想要对路径进行聚类。我再次提到是因为重要的是要知道您的问题不是顶点聚集的图聚类社区检测问题!
  • 使用数据的最后两列在 networkx 中构建图表,您可以将花费的时间添加为权重,并将通过该链接的用户添加为边缘属性。毕竟,您将拥有用于聚类的不同特征:个人在图中遇到的所有顶点的集合、所花费时间的总、均值和标准差、最短路径分布参数……可用于对用户行为进行聚类.

标准数据

  • 所有这些都可以通过有效地读取矩阵中的数据来完成。如果您将指定用户的每条边视为单行(即,您将有M x N行,其中M是用户数,N是边数,以防您坚持使用 100 例!)并将属性添加为列您可能能够对行为进行聚类。如果用户通过一条边n次,则在与该用户和该边对应的行中添加一个计数列,其值为n并且与时间花费等值相同。开始和结束边也可以提供信息。请注意节点名称是分类变量。

关于聚类算法,如果您快速浏览一下 SKlearn,就可以找到足够的信息。

希望它有所帮助。祝你好运 :)

我自己没有使用过这样的数据集,但我认为你可以将这个问题建模为一个图形,其中页面形成节点,然后你可以根据过渡来定向边。根据在节点上花费的时间为节点添加权重,然后使用图聚类算法。如果您选择使用它,您可以使用 python 中的networkx库进行基于图形的分析。

编辑:我们可以使用有关不同可能路径的信息以及它们用于对用户进行分类的频率。让我们以谷歌搜索应用为例。假设我想搜索图像。一种选择是我使用图像搜索选项,进行查询并到达结果页面。另一种是我先进行查询,然后在得到结果后切换到图像选项。在这两种情况下,我都在同一页面上做了。我可以使用这些信息对我的用户进行分类。现在可能有很多可能的路径,所以我要考虑哪些?该图可用于在此处利用有关您希望如何对用户进行分类的信息。将其建模为图形对我来说非常直观,因为它适用于路径的概念。