# Improving clusters

Say we have 10 classes. We have obtained two kinds of clusters in an unsupervised manner. One type is heavily clustered, i.e, say it shows only 4 clusters and one heavily cut, i.e, it shows say, 20 clusters. You can assume that clustering is being done properly, i.e similar ojects don't occur in different clusters in the first type of clustering and, only similar objects are present in heavily cut clustering. Now, using these clusters (4 and 20), is there some way to better our clustering and bring the number of clusters close to the real value?

• If you know you have 10 classes, why are you doing cluster analysis rather than some form of classification? Commented Jul 3, 2017 at 11:09
• I am testing my algorithm I have written for a task and, trying to improve it. Changing the parameters of it produces the said affect. That's why I wanted to know if I could post process to improve the clusters I get from my algorithm Commented Jul 3, 2017 at 11:14

Assume you don't want to use any information about the objects except the information provided by the clustering results. Then an object is defined by a pair $(a,b)$ where $a$ is its cluster in the first clustering, $b$ in the second. There are up to $80=4\times 20$ different points.
If the second clustering is a sub-clustering of the first (each small cluster is included in a big cluster), then this approach is useless. The thing is interesting when $a$ and $b$ are not totally correlated.
You can cluster the points with a distance like : $$d((a;b),(a'b'))=1_{a\neq a'} + \beta1_{b\neq b'}$$
I would naturally use $\beta<1$. Maybe you can use hierarchical clustering with a well found linkage criterion (maybe mean linkage) : https://en.wikipedia.org/wiki/Hierarchical_clustering.
You can alternatively represent objects as $4+20=24$ dimensional points : $(a;b)=\vec e_a+\beta \vec e_b$ (bag of words where a "word" is belonging to a certain cluster) and do a K-means with Euclidean distance.