Unsupervised dimensionality reduction: from principal component analysis to modern nonlinear techniques