I want to use a clustering algorithm to group various images of clothing together. For example, within shoes, I would like the algorithm to form clusters for sneakers, high heels, boots, etc. So far, I have used the tensorflow inception model ( from the following tutorial: https://www.tensorflow.org/tutorials/image_retraining), replacing the final output layer of the model with a layer that uses the K-means clustering algorithm.
Essentially, the next to last layer of the model produces a length 2048 vector of features for each clothing item. I wanted to determine the most important/distinguishing features from each vector to use when training my model. In order to try to isolate the most significant features, I first extracted the "top 10" features. To do this, I ran the K-means algorithm where the inputted matrices had vectors all of length one so as to isolate one feature at a time (this was done once for each feature). Based on the Silhouette Coefficient of each model, I took the 10 features that produced the highest Silhouette Coefficient to be the top 10.
I then formed pairs by pairing each of the top 10 features with each of the original 2048 features (excluding doubles) to form length 2 vectors. I then ran the model on the matrices of length 2 vectors. Taking the grouping of 10 features that produced the highest Silhouette Coefficient to be my "top 10" pairs. I continued this way to form larger vectors.
My hope was that this approach would allow me to somewhat efficiently determine the combination of features that are most distinguishing and would be best to train my model on. However, as I progressed, there was no improvement in my model's clustering ability (as measured by the Silhouette Coefficent); nor did the plotting of the points indicate any useful groupings.
I am not sure why this didn't work, nor am I aware of any other approaches. Does anyone know of a better way to go about this? Any suggestions would be greatly appreciated.