我可以使用 k-mean 算法之类的聚类方法找到类似的玩家吗?

数据挖掘 聚类 推荐系统
2022-02-21 15:08:21

我正在从事一个关于 NBA 数据的数据挖掘项目。我想制作一个类似于 google 的推荐系统,您可以在其中搜索玩家并获得类似玩家的推荐。我打算根据他们的统计数据制作这样的系统。我的数据看起来像这样

14  Tony Allen  709     357     15386   2178    4580    0.476   102     363     0.281   2076    4217    0.492   0.487   1220    1701    0.717   804     1567    2371    942     995     299     964     1675    5678

15  Al-Farouq Aminu     431     228     9988    1119    2592    0.432   188     607     0.31    931     1985    0.469   0.468   530     731     0.725   618     1724    2342    488     413     245     540     813     2956

我想到的一种方法是使用 k-means 聚类,但我不确定如何使用这些聚类来找到相似的玩家。每个集群将有数百名玩家,我需要进一步过滤。

有人对处理这个问题有任何建议/技巧吗?

2个回答

对于寻找相似的对象,k-means 没有多大意义。

k-means 基于相似的对象。如果平方偏差对您的数据不起作用,那么 k-means 也不起作用。

因此,不要使用 k-means,而是使用不使用 k-means 的最近邻搜索

您可以使用此类数据进一步或具体地进行操作。我建议先彻底分析数据,然后再决定应用哪些算法。评估每个参数的平均值、四分位数、最大值和最小值(例如在箱线图中),验证您是否有缺失值并在这种情况下决定处理方法(删除数据、插补 - 从数据中预测缺失值 -或平均值,作为常用技术)。还要验证是否可以从您拥有的信息中创建一个新的代表性特征,或者甚至混合一组特征来减少(先验特征选择;如果根据您对上下文的了解很有意义,那就可以了 - NBA) . 例如,在为数据提供上下文(例如

之后我会建议一些简单的算法,例如:

  • 层次聚类:可以帮助您建立玩家的谱系,因此您可以看到哪些玩家直接聚集在一起,哪些其他人影响了这个集群(因此它们在某些更普遍的方面相似,但没有那么多以至于聚集在一起)。
  • K-Means:嗯,尝试一下总是好的;在计算方面它不会那么昂贵。问题是确定 K 会相当复杂,但它可以从可视化的角度为您提供提示,但实际上并不能直接帮助信息检索任务。
  • K-Nearest-Neighbors:确定 K 也很复杂(但不是那么复杂),它可以为根据他们在空间中的距离检索相似玩家提供第一个提示。这是一种基于案例的推理形式,但实际上对于您的目的非常实用。这里的关键是确定正确的距离度量。从欧几里得作为一种典型的方法开始。然后您可以尝试其他一些距离度量,例如考虑到特征协方差的 Malahanobis 距离。

遵循这些方法,您可以初步了解甚至是功能解决方案。观察结果后,您可以更深入地了解(如有必要)。

记得事先规范化或标准化数据。您还可以在应用 PCA 或 LDA 之后可视化第一个主成分(如果您有目标变量,则为最后一个),以观察数据分布情况。

在通过特征选择和/或提取技术提炼数据后,可以应用相同的方法;在某些情况下会产生非常有趣的结果。