如何根据标签对用户进行聚类

我想根据用户观看的节目的类别或标签对用户进行聚类。有什么最简单/最好的算法可以做到这一点吗?

假设我有大约20,000个标签和数百万个观看事件可以用作信号,是否有我可以使用pig/hadoop/mortar或在neo4j上实现的算法?

就数据而言,我有用户、他们观看的节目以及节目的标签(通常每个节目有大约10个标签)。

我希望最终得到k个聚类(可能是十几个?)或广泛的分类,我可以用这些分类来对用户进行分类和分组,并从中获得一些关于他们如何被划分的见解 – 每个聚类都有一组代表性的标签。

我看到一些帖子建议使用层次算法,但不确定在这种情况下如何计算“距离”。那将是两个用户之间的距离,还是用户与一组标签之间的距离,等等?


回答:

你基本上是想根据他们的标签来聚类用户

为了简单起见,假设你只有10个标签(而不是20,000个)。假设一个用户,比如user_34,拥有第2个和第7个标签。对于这个聚类任务,user_34可以被表示为10维空间中,他的相应坐标是:[0,1,0,0,0,0,1,0,0,0]。

在你自己的情况下,每个用户同样可以被表示为20,000维空间中的一个点。你可以使用Apache Mahout,它包含许多有效的聚类算法,比如K-means。

由于一切都在数学坐标系统中得到了很好的定义,计算任意两个用户之间的距离很容易!可以使用任何距离函数来计算,但欧几里得距离是事实上的标准。

注意: Mahout和许多其他数据挖掘程序支持许多适合稀疏特征的格式,即你不需要在文件中插入…,0,0,0,0,…,只需指定哪些标签被选中即可。(参见Mahout中的RandomAccessSparseVector

注意: 我假设你只想聚类你的用户。从聚类中提取代表性信息有些棘手。例如,对于每个聚类,你可以选择在聚类用户之间更常见的标签。或者,你可以使用来自信息论的概念,比如信息增益,来找出哪些标签包含更多关于聚类的信息。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注