【问题标题】:K-means clustering with predefined dataset [closed]使用预定义数据集进行 K 均值聚类 [关闭]
【发布时间】:2016-07-29 02:04:55
【问题描述】:

我正在尝试对 R 中“ggplot2”包附带的电影数据集进行聚类。我将使用 k-means。该数据集附带的列名是:

[1] "title"       "year"        "length"      "budget"      "rating"     
 [6] "votes"       "r1"          "r2"          "r3"          "r4"         
[11] "r5"          "r6"          "r7"          "r8"          "r9"         
[16] "r10"         "mpaa"        "Action"      "Animation"   "Comedy"     
[21] "Drama"       "Documentary" "Romance"     "Short" 

您认为根据电影类型进行聚类是个好主意吗?我有点迷茫,不知道从哪里开始。有什么建议吗?

【问题讨论】:

  • 不清楚你想达到什么目的
  • 我只是想引入一些想法,以便更多地了解集群是什么以及做什么。就像在这个数据集的例子中,你会怎么做来聚类它,你会有什么问题?

标签: r cluster-analysis data-mining k-means


【解决方案1】:

回答您的第一个问题:是的,我认为这是一个有趣的项目。使用此数据集可能是了解不同数据挖掘技术的一种很酷的方式。

要回答您的第二个问题,这里有一些建议。聚类是一种无监督学习技术。当目标变量(在这种情况下,目标变量可能是电影的类型)未知时,学习是无监督的。但是,查看您列出的列,您似乎确实拥有流派信息。考虑到这一点,您有两个选择。首先,您可以假装自己没有流派信息。在这种情况下,您将对其余数据应用 k-means。聚类完成后,您可以通过将算法与已知类型进行比较来评估算法的执行情况。其次,您可以将此问题视为分类问题。在这种情况下,您将使用流派信息来学习可以预测流派的模型。你可能已经知道了,但我只是想说。

为了给你一些关于聚类问题的具体建议,我首先想知道 'r1', ..., 'r10' 变量代表什么。它们是数字变量还是分类变量? K-means 有两个步骤:一个是将数据点分配给离它最近的质心,另一个是通过取集群中所有数据点的平均值来计算新的质心。取这些变量的平均值有意义吗?

考虑到这一点,我建议首先选择要在聚类算法中使用的变量。然后编写以下函数:一个可以计算两点之间的距离,一个可以将观测值分配给最近的质心,一个可以根据分配重新计算质心。

【讨论】:

  • 谢谢迈克尔。这澄清了一些疑虑。回答您的问题:r1-10。乘以 10 可以得到将这部电影评为 1 分的用户的百分位数(最接近 10%)。
【解决方案2】:

您需要弄清楚是什么造就了一个好的集群。

有数百万种方法可以对这个数据集进行聚类。因为您可以对数据进行不同的预处理,使用不同的算法、距离等。

没有您的指导,聚类算法只会做一些事情,并且可能会返回一个完全无用的结果!

所以你需要首先得到一个明确的目标:什么是好的聚类?

然后您可以尝试调整数据,以便聚类算法针对此目标进行优化。对于 k-means,您需要在预处理中完成所有这些操作。对于 hclust,您还可以选择符合您需求的距离函数。

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 2017-12-09
    • 2017-03-07
    • 2018-12-20
    • 2017-05-11
    • 2012-07-28
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多