最近我在工作中遇到了问题。我希望有人能对我的算法设计提出一些建议。问题在于
假设我们有n个标记的不同对象,我们想将它们聚类成k个组,这些组没有标记。我需要为每个聚类做一些计算。我现在所做的是经历所有可能的情况
我的Matlab代码
for i = 0:k^n-1
clustering = dec2base(i,k,n); % convert i into k-based value that has n digits, which is one possible clustering
do some computation
end
显然,这不是一种有效的实现,因为很多可能的情况都是完全相同的聚类。例如,n = 4,k = 3.0001和0002表示相同的聚类,因为它们都指示前三个对象属于一个组,第四个对象属于一个组。最后一组内部没有任何对象。另一个例子是1122,1100,1211,0022,2211和2200是相同的聚类。
对于k = 2的情况,很容易,我只需要忽略后半部分的情况。但是对于任意值k,我可以使用任何方法或理论来减少这些重复的聚类吗?非常感谢你!