Using Unlabeled Data for Supervised Learning