我在数据挖掘领域是个初学者,想对我的电影数据集进行聚类以找出类型组。我的数据集中有86部电影,涵盖了26种不同的类型。我希望通过聚类将电影归入少数几个类型,而不是26个。例如,运行某种聚类算法后,我可能会得到4个聚类,或者任何最适合我数据集的小数量。我的数据集定义如下:M1 { G1,G2,…..G26} M2{G1,G2,…..G26},其中每个类型G1,….,G26的值可以是0或1,0表示不存在,1表示存在。下一步,我计划在这些数据上运行k-means聚类,并希望使用一个好的距离函数,例如皮尔逊相关系数。
我在MATLAB中进行实验。我尝试使用k=3,4,5,6进行k-Means聚类,同时也运行了层次聚类。
我不知道如何判断哪个聚类结果更好。如何检查这一点?作为初学者,我不知道如何在MATLAB中绘制二进制特征的聚类图。另外,我也不知道如何在k-Means中使用皮尔逊相关系数作为距离度量。请帮助我。
回答:
评估是聚类中最困难的部分。
如果你知道自己在寻找什么,就不需要进行聚类分析了。
因此,聚类没有所谓的客观“真相”。你认为什么是聚类很大程度上取决于你的个人需求,除非你将这些需求编码进自定义算法中,否则聚类算法计算的结果很可能完全不同于你的预期。
例如,k-means最小化方差。方差是否符合你对聚类的理解呢?
对于你的用例,最好的健全性检查是每个现有类型分配应该主要在一个聚类内。如果类型分配到处都是,那么聚类并没有按照你的类型概念进行聚类。