事实上,特征工程比超参数调优更重要,这是作为一个教训和一个重要的提醒而言的,这将彻底改变在构建任何机器学习模型之前处理问题和数据的方式。
当我开始作第一份全职工作时,作为一名研究机器学习的工程师,我非常兴奋,痴迷于建立奇特的机器学习模型,而没有真正关注我所拥有的数据。
其实我很不耐烦。我非常想要结果,所以我只关心从我的模型中挤出每一个性能百分比。不用说,我尝试了这么多次都失败了,我想找出原因。
一个团队成员告诉我,“你应该更多地关注获得好的特征(特征工程),而不是优化模型的超参数(超参数调优)。如果你没有可以学习好特征的模型,即使你有最佳的超参数,也不会改善模型的性能。”
从那一刻开始,我知道我必须做出须改变,方法必须改变,心态也必须改变。
一旦我试图理解我想要解决的实际业务问题和我拥有的数据,我添加了一些新特征以更好地表示问题,这样模型可以有效地学习基础模式。
结果如何呢?
我成功地改进了模型的AUC(这是一个分类问题),与使用超参数调优进行少量或没有改进相比,这是一个显著的改进。
鉴于我认识到了特征工程的重要性,在此,我希望分享特征工程和超参数调优的重要性。
到本文结束时,我希望你能理解为什么特征工程比超参数调优更重要,并且在进入调优部分之前使用特征工程来解决问题。
特征工程的重要性
我记得第一次开始学习数据科学时,特征工程并不总是包含在书籍和在线课程中。这给了我一个错觉:在应用机器学习来解决问题时,特征工程可能并不重要。
在讨论什么是特征工程及其重要性之前。让我们先来尝试了解机器学习模型的工作原理。
机器学习模型如何运作?从本质上讲,机器学习模型只是一种算法,通过对历史数据进行训练来学习模式,最终根据看不见的测试数据进行预测。
换句话说,如果数据的代表性不足以描述你尝试解决的问题,那么模型将无法学习基础模式。而这就是特征工程要发挥作用的地方。
特征工程是将原始数据转换为更能代表预测模型的基础问题的特征的过程,从而提高了模型对于不可见数据的准确性。特征工程是机器学习应用的基础,数据中的特征对于你使用的预测模型非常重要,并将影响你将要实现的结果。
特征的质量和数量对模型的好坏有很大的影响。你可以说特征越好,结果就越好。但这并不完全正确,因为获得的结果还取决于模型和数据,而不仅仅是选择的特征。不过选择正确的特征仍然非常重要。更好的特性可以产生更简单、更灵活的模型,并且通常会产生更好的结果。
虽然模型的性能取决于几个因素:准备的数据和特征,训练中使用的模型,问题陈述,衡量模型成功的指标等等,但特征仍然是确定模型成功的关键部分。
在我看来,虽然你可以汇总数据以生成其他功能(平均值和最大值等),但拥有强大的业务领域知识可以让你更多地了解拥有的数据,并根据其相关性和关系生成新特征。
凭借出色的特征,它在模型选择方面提供了更多空间。你可以选择更简单的模型,但仍然能够获得良好的结果,因为你的数据现在更具代表性,而不那么复杂的模型可以轻松地学习基础模式。
最终,特性工程归结为问题表示。如果你的数据具有能够很好地表示问题的优秀特征,那么模型很可能会因为很好地学习了模式而给出更好的结果。
超参数调优的重要性
什么是超参数调优?在机器学习中,超参数调优是为学习算法选择一组最优超参数的问题。
模型超参数是模型外部的配置,其值无法从数据估计。作为一名数据科学家(或机器学习从业者),模型超参数对我们来说是未知的。
我们只能通过搜索超参数的离散空间,根据给定的默认值,经验法则或反复试验找到最佳值。
例如,一些超参数是训练神经网络的学习率,支持向量机(SVM)的C和sigma值,或k近邻(KNN)的k值。
超参数是至关重要的,因为它们控制机器学习模型的整体行为。最终目标是找到超参数的最佳组合,最小化预定义的损失函数以提供更好的结果。
如果不这样做,由于模型不能收敛且无法最小化损失函数,将导致次优结果。
这就像探索各种可能性并尝试找到最佳组合,以提供最佳结果。用于调整超参数的一些常用技术包括网格搜索,随机搜索,贝叶斯优化等。
特征工程比超参数调优更重要
现在我们已经了解了特征工程和超参数调优的重要性,让我们深入挖掘,看看为什么前者比后者更重要。
这并不是说超参数调优并不重要,而是当我们谈论改进模型的性能和最终结果时,特征工程是一个优先事项,特别是在现实生活中的场景。
首先,我们必须了解大多数机器学习库中超参数的默认值足以满足大多数用例,通常很难显著提高性能。在Kaggle中,超参数调优非常重要。在现实生活中,这并不重要。
其次,面对现实吧。超参数调优耗费时间且计算成本高。迭代不同的超参数组合需要花费大量时间才能实现微小的改进。更糟糕的是,如果是大量数据和复杂模型,每次迭代都需要大量资源。在商业领域中,时间就是金钱。如果搜索最佳超参数所需的工作量和时间不能匹配最终的ROI,那么如果你的模型足够好,可以在给定一组具有强大功能的数据下部署,根本不需要超参数调优。
最后,在现实生活中,由于给定的时间限制,要同时获得最优特征和超参数是极其困难的。因此,为了在更短的时间内实现改进的巨大成果,更智能的选择是首先进行特征工程以足够好地表示问题,使模型可以准确地学习和预测。只有在拥有强大的功能之后,如果时间允许或业务环境需要,我们才能考虑超参数调优。这就是为什么特征工程最重要,而超参数调优应该排在后面。
教材推荐
通过分享我的错误和学习经验,希望你已经理解了这两者的重要性,以及为什么在提高模型性能时,特征工程应该是首要任务。
如果你想了解有关特征工程以及如何将其应用于机器学习问题的更多信息,那么我向你推荐一本书“ Feature Engineering for Machine Learning”。
在典型的机器学习课程中,特征工程并不是作为一个正式的主题,而这本书旨在通过贯穿全书的几个特征工程技术,供你应用和练习。