r-K表示使用预定义数据集进行聚类



我正在尝试对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" 

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

您需要弄清楚是什么让成为一个好的集群。

有数百万种方法可以对该数据集进行集群。因为你可以以不同的方式预处理数据,使用不同的算法、距离等等

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

因此,您需要首先获得一个明确的目标:什么是好的集群?

然后,您可以尝试调整数据,以便聚类算法为此目标进行优化。对于k-均值,您需要在预处理中完成所有这些操作。对于hclust,您还可以选择与您的愿望相匹配的距离函数。

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

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

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

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

最新更新