训练数据的另一个基本问题是特征提取。假设你在一家银行工作,银行需要一个机器学习程序来学习识别不良信贷风险。程序的训练数据是过去许多客户的记录,每个客户的记录上会标注他信贷记录是否良好。客户记录通常包括他们的姓名、出生日期、住址、年收入、交易记录、贷款记录和相应的还款信息等。这些信息在训练数据中被称为特征。不过,所有的特征在程序训练中都有意义吗?其中某些特征可能和该客户的信贷风险毫无关系。如果你事先不知道哪些特征和机器要学习的目标有关系,那么你可能试图将所有特征都放入训练数据中。但是,这样就会产生一个很严重的问题,被称为维度诅咒:训练数据包含的特征越多,你需要给程序提供的训练数据量就越大,程序学习的速度也就越慢。
最简单的应对方式就是只在训练数据中包含少量的特征,但这也会引起一些问题。一方面,你可能不小心忽略了程序正确学习所必需的特征,即确实标明客户信贷记录不良的特征,另一方面,如果你没有合理地选择特征,可能会在程序中引入偏差。例如,假设你给不良信贷风险评估程序训练数据里面导入的唯一特征是客户地址,那么很可能会导致程序在完成机器学习以后带有地域歧视。人工智能程序或许会变得有偏见,这种可能,以及它所引发的问题,我们将在后面详细探讨。