Which technique is most appropriate for reducing the dimensionality of a dataset while preserving as much variance as possible?