R 基于K-均值聚类的记忆问题

R 基于K-均值聚类的记忆问题,r,k-means,R,K Means,我试图使用K means clustering对搜索历史中的关键短语进行聚类,但在运行stringdistmatrix()命令时遇到错误“无法分配大小为30gb的向量”。我使用的数据集包含63455个唯一元素,因此生成的矩阵需要大约30gb的内存来处理。有没有一种方法可以在不失去太多意义的情况下降低流程的要求 下面是我尝试运行的代码,如果您碰巧注意到任何其他错误: #设置数据源、使用格式、检查一致性 MyData在进行k-means聚类时,我不知道如何避免生成距离矩阵 你可以考虑设计出避免内存问

我试图使用K means clustering对搜索历史中的关键短语进行聚类,但在运行stringdistmatrix()命令时遇到错误“无法分配大小为30gb的向量”。我使用的数据集包含63455个唯一元素,因此生成的矩阵需要大约30gb的内存来处理。有没有一种方法可以在不失去太多意义的情况下降低流程的要求

下面是我尝试运行的代码,如果您碰巧注意到任何其他错误:

#设置数据源、使用格式、检查一致性

MyData在进行k-means聚类时,我不知道如何避免生成距离矩阵

你可以考虑设计出避免内存问题的可选聚类算法。想到的主要问题是CLARA(集群大型应用程序;)。在R中,它就像

cluster::clara
一样简单,只获取数字数据(如k-means),并要求您预先设置
k

请阅读手册(
?cluster::clara
),尤其是有关应设置为高于默认值的样本数的手册。希望有帮助


编辑:刚刚注意到你实际上并没有数字数据,所以也许克拉拉并不是很有帮助。您也许可以使用与CLARA相同的一些原则,包括多次采样数据以减少内存占用,以及稍后合并结果

在进行k-means聚类时,我不知道如何避免生成距离矩阵

你可以考虑设计出避免内存问题的可选聚类算法。想到的主要问题是CLARA(集群大型应用程序;)。在R中,它就像

cluster::clara
一样简单,只获取数字数据(如k-means),并要求您预先设置
k

请阅读手册(
?cluster::clara
),尤其是有关应设置为高于默认值的样本数的手册。希望有帮助


编辑:刚刚注意到你实际上并没有数字数据,所以也许克拉拉并不是很有帮助。您也许可以使用与CLARA相同的一些原则,包括多次采样数据以减少内存占用,以及稍后合并结果

你认为使用术语频率是一种值得的抽样方法吗?e、 g.如果前5个常用词是“猫”、“狗”、“老鼠”、“房子”、“树”,则仅从包含这些词的短语中创建矩阵?即使不进行抽样,您也可以始终减小字数的大小以减小差异矩阵的大小。矩阵的大小与项目数的平方成正比,因此将30GB降低到7.5GB只需要删除一半的元素。正如你所说的,你会选择最有用的词的一半,例如最频繁的词,如果这表明相关性。你认为使用术语频率是一种值得抽样的方法吗?e、 g.如果前5个常用词是“猫”、“狗”、“老鼠”、“房子”、“树”,则仅从包含这些词的短语中创建矩阵?即使不进行抽样,您也可以始终减小字数的大小以减小差异矩阵的大小。矩阵的大小与项目数的平方成正比,因此将30GB降低到7.5GB只需要删除一半的元素。正如你所说的,你会选择最有用的一半的单词,例如,最常用的单词,如果这表明相关性的话。