I am working on a clustering problem for which I have to manually choose the number of clusters. I have a visualization tool that helps me decide whether the clusters are good. In order to automatically select the number of clusters, I tried the following: compute the silhouette associated to several clusterings and choose the configuration giving the best score. My clustering algorithm uses a correlation $p \in [0,1]$ to regroup the elements. Since silhouette requires a dissimilarity, I converted my similarity into a dissimilarity. I tried different formulas for this conversion: $1-p$, $1/(1+p)$, or $1/(1+\exp(1+p^2))$.
Every time, the clustering seems nice (visually), but the silhouette is poor (around 0).
I think the reason might be because the conversion formula I am using is not appropriate, but I don't have any idea of what a good similarity to dissimilarity conversion could be. Any idea?