目前,我正在 Coursera 上参加精彩的“如何赢得数据科学竞赛”课程。有一次,作者声称,鉴于他们的经验,机器学习算法和参数调整的实际选择远不如特征工程重要。一方面,这在直觉上似乎很有道理,另一方面,这似乎与“没有免费的午餐”定理相矛盾。你知道任何更严格地处理这个主题的参考资料吗?
† 请注意,他们在这里似乎隐含地只考虑了 XGBoost 等高性能算法。
目前,我正在 Coursera 上参加精彩的“如何赢得数据科学竞赛”课程。有一次,作者声称,鉴于他们的经验,机器学习算法和参数调整的实际选择远不如特征工程重要。一方面,这在直觉上似乎很有道理,另一方面,这似乎与“没有免费的午餐”定理相矛盾。你知道任何更严格地处理这个主题的参考资料吗?
† 请注意,他们在这里似乎隐含地只考虑了 XGBoost 等高性能算法。
你想要引用声明,但我认为这个建议虽然有用,但具体源于这种情况。
这些方法在 Kaggle 和其他比赛中运行良好的事实与这些比赛中的数据集类型有关。通常,尤其是在初级竞赛中,数据由许多示例组成,具有异构数据类型(分类、连续、缺失),这些都是轻度预测的,并且可以利用交互效应。房价竞赛就是一个典型的例子。在这种情况下,基于树的集成(如 XGBoost 和随机森林)非常有效和实用。它们足够灵活,可以学习交互和非线性,如果操作正确,不会过度拟合,并且可以自然地处理各种数据。
无论是在更高级的比赛中还是在实践中,对于其他类型的数据(图像、文本或只是不是很多数据)和其他问题设置(预测、推荐系统),XGBoost 通常都不是最佳解决方案,或者在大多数方法的一部分。并不是说在实践中也存在许多问题,其中 XGBoost 只是分类或回归性能方面的最佳方法。
在文本数据或图像上,已知基于树的方法效果不佳。时间序列数据也是一个真正不同的野兽。我认为 Kaggle 上一个有趣的例子是国际象棋评分比赛,你可以在这里找到获胜的方法:https ://www.kaggle.com/c/ChessRatings2/discussion/568 。
NFL 不关心与数据无关的算法吗?特征工程完全依赖于数据,因为它不是一个严格的、定义明确的算法,特别是在 Kagglers 的意义上。对于不同的数据集,他们根据专业知识、直觉和大量挥手选择不同的特征。这不像他们使用有原则的、明确定义的先验方法。换句话说,他们并不总是在不同的比赛中使用相同的特征工程算法。
谢谢你的有趣问题。我认为如果没有更严格的特征工程定义,这个问题将很难最终回答,这似乎很难给出。
我不认为没有免费午餐会有任何紧张,因为我认为特征工程涉及改变优化问题。有一个没有免费午餐的版本(等同于原始定理),它指出以下内容:
定理 (Radcliffe and Surry, 1995)考虑函数位于有限集之间的所有函数的集合中和. 让表示长度性能向量由和. 对于任意两个算法 A 和 B,以及对于任意函数, 存在一个函数 这样.
鉴于您的问题,我认为这有一个有趣的解释。如果您愿意将特征工程建模为目标函数的可逆变换, 那么有一个序列排列至, 和算法一样好. 所以从这个意义上说,这似乎证实了算法不如问题表述重要的民间传说。我的符号取自 (Schumacher et al. 2001),它比较了没有免费午餐的几个版本。
拉德克利夫、尼古拉斯 J. 和帕特里克 D. 萨里。“搜索算法的基本限制:透视进化计算。” 今天的计算机科学。施普林格,柏林,海德堡,1995. 275-291。
舒马赫、克里斯、迈克尔 D. Vose 和 L. Darrell Whitley。“没有免费的午餐和问题描述长度。” 第三届遗传与进化计算年会论文集。摩根考夫曼出版公司,2001 年。