我经常看到人们根据机器学习问题的现有特征创建新特征。例如,这里:https ://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/人们认为一个人的家庭规模是一个新特征,基于关于兄弟姐妹和父母的数量,这是现有的特征。
但这有什么意义呢?我不明白为什么创建相关的新功能很有用。算法的工作不是自己做吗?
我经常看到人们根据机器学习问题的现有特征创建新特征。例如,这里:https ://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/人们认为一个人的家庭规模是一个新特征,基于关于兄弟姐妹和父母的数量,这是现有的特征。
但这有什么意义呢?我不明白为什么创建相关的新功能很有用。算法的工作不是自己做吗?
用于说明这一点的最简单示例是 XOR 问题(见下图)。想象一下,给你的数据包含和协调和二元类预测。您可以期望您的机器学习算法自行找出正确的决策边界,但如果您生成了附加特征,那么问题就变得微不足道了为您提供近乎完美的分类决策标准,而您只使用了简单的算术!
因此,在许多情况下,您可以期望从算法中找到解决方案,或者通过特征工程,您可以简化问题。简单的问题更容易和更快地解决,并且需要不太复杂的算法。简单的算法通常更健壮,结果通常更易于解释,它们更具可扩展性(更少的计算资源、训练时间等)和可移植性。您可以在伦敦 PyData 会议上的 Vincent D. Warmerdam 精彩演讲中找到更多示例和解释。
此外,不要相信机器学习营销人员告诉你的一切。在大多数情况下,算法不会“自行学习”。您通常只有有限的时间、资源、计算能力,而且数据通常大小有限且嘈杂,这些都无济于事。
将这一点发挥到极致,您可以将数据作为实验结果的手写笔记照片提供,并将它们传递给复杂的神经网络。它会首先学会识别图片上的数据,然后学会理解它,并做出预测。为此,您需要一台功能强大的计算机和大量时间来训练和调整模型,并且由于使用了复杂的神经网络,因此需要大量数据。以计算机可读格式(如数字表)提供数据,极大地简化了问题,因为您不需要所有的字符识别。您可以将特征工程视为下一步,您可以在其中转换数据以创建有意义的功能,以便您的算法自行解决的问题更少。打个比方,就像你想读一本书的外语,所以你需要先学习语言,而不是阅读翻译成你理解的语言的书。
在泰坦尼克号数据示例中,您的算法需要弄清楚对家庭成员求和是有意义的,以获得“家庭规模”特征(是的,我在这里对其进行了个性化)。这对人类来说是一个明显的特征,但如果您将数据仅视为数字的一些列,则并不明显。如果您不知道与其他列一起考虑时哪些列是有意义的,那么算法可以通过尝试这些列的每种可能组合来找出答案。当然,我们有聪明的方法来做到这一点,但是如果立即将信息提供给算法,它仍然容易得多。
好吧,如果你打算使用一个简单的线性分类器,那么生成新特征是非常有意义的,这些新特征是现有特征的非线性函数,特别是如果你的领域知识表明你得到的特征将是有意义的和信息丰富的。请注意,除非您明确提供,否则线性分类器无法考虑那些复杂的特征。
理想情况下,如果您使用足够强大的非线性分类算法,它应该能够创建一个决策边界,该决策边界考虑输入特征的任意非线性变换(如果它们为分类提供信息)。然而,在实践中,大多数非线性分类器只关注某种类型的转换。例如,多项式核 SVM 将考虑特征之间的多项式交互,但也许可以通过应用其他类型的转换来创建更具信息性的特征......
简而言之,如果领域知识表明手工制作的非线性特征组合可能提供信息,那么将其添加到现有的特征集中是有意义的。
确实,某些机器学习模型具有处理变量之间的非线性和交互的能力,但是,视情况而定,我认为有必要这样做的三个原因。
如果只给你两个特征,和. 一个简单的线性模型将找不到任何方法对目标变量进行分类。因此,您需要新的四次特征来捕捉非线性:.
如果您事先知道某些功能(来自业务知识或经验),则可能有助于创建它们以加快模型的运行时间并简化您的模型。例如,在您的泰坦尼克号数据示例中,如果您使用的是决策树分类模型。如果您知道老妇人(年龄和性别)更有可能存活下来,通过创建一个捕获信息的特征,您的树可以对新变量进行一次拆分,而不是对两个变量进行两次拆分。如果您事先知道该功能很重要,它可能会加快计算时间。
在现实世界中,你不会得到像 Kaggle 提供的单一数据集。相反,您会从各地获取信息。例如,如果您想预测像亚马逊这样的在线零售公司的客户流失率,您有客户人口统计信息、购买交易信息。您需要从不同的来源生成很多特征,在这种情况下,您会发现可以从事务级别获取/聚合很多有用的特征。正如 Andrew Ng 所说:通常,进行特征工程的能力决定了机器学习项目的成败。