Unsupervised Learning Types, Algorithms and Applications