在数据科学领域,一个普遍的原则是,更高质量的训练数据能够产生更好的机器学习模型。这一原则在许多情况下是成立的,但并不适用于特征的数量。现实世界的数据集包含了许多不必要的特征,这些特征可能会影响模型的性能。因此,在选择用于建模的特征时,需要有所选择。数据集中包含许多独立变量,其中只有少数是有用的,其他的则不是。从组合中选择最佳的特征集需要采用多项式方法,这需要多项式时间复杂度。本文将讨论七种选择最佳特征以训练健壮的机器学习模型的方法。
具有领域知识的数据科学家或机器学习工程师能够帮助选择最佳的特征和变量集用于任何案例研究。对数据或领域有直觉的人有助于特征工程和选择最佳特征。例如,考虑汽车价格预测问题,其中制造年份、型号、独特的车牌号码是决定汽车价格的独特因素。
现实世界的数据集通常包含缺失值,这是由于记录失败或数据开发造成的。有各种技术可以填补缺失值,但这并不匹配真实数据。因此,训练在包含缺失值的特征上的模型可能不会得到更好的性能。最好的做法是丢弃包含超过某个阈值的缺失值的列或变量。可以丢弃有很多缺失值的‘cabin’特征。可以参考下面由泰坦尼克数据生成的图像。
目标类别标签与特征之间的相关性决定了每个变量与目标类别的相关程度。有许多相关性技术,如皮尔逊、斯皮尔曼、肯德尔等,用于观察两个特征之间的相关性。df.corr()
返回特征之间的皮尔逊相关系数。像sex
、Pclass
、fare
这样的变量与目标类别标签Survived
高度相关,因此被称为关键特征,从下面的泰坦尼克数据的相关性热图中可以看出。现在像PassengerId
、SibSp
这样的特征与目标变量不相关,可能不会影响模型性能。因此这些变量可以被排除。
特征之间的相关性会导致多重共线性,这可能会影响模型性能。如果一个变量与其他变量有很高的相关性,那么它就被认为是相关的。因此,一个特征的变化会导致其他相关特征的变化。从上面的泰坦尼克数据的相关性热图中,Pclass
和Fare
之间的皮尔逊相关系数很高,所以一个变量的变化会对另一个变量产生负面影响。