adapt to big dataset
spherical kmeans