欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 机器学习 - 贪心算法、前向搜索、后向搜索

机器学习 - 贪心算法、前向搜索、后向搜索

2025/2/13 23:58:48 来源:https://blog.csdn.net/liruiqiang05/article/details/145587642  浏览:    关键词:机器学习 - 贪心算法、前向搜索、后向搜索

传统特征选择会涉及到贪心算法、前向搜索、后向搜索的知识,通过本文,更好的认识三者的概念,并结合三个具体的例子,加深对三者的理解,为后面学习传统的特征选择做准备。

一、贪心算法、前向搜索和后向搜索

贪心算法、前向搜索和后向搜索都是解决优化问题时常用的策略,但它们的应用范围和侧重点有所不同,下面分别说明它们的概念、联系与区别:

1. 贪心算法

  • 概念
    贪心算法是一种构造解的策略,在每一步都选择在当前看来最优的选项(即局部最优解),期望通过这种局部最优的选择最终获得全局最优解。
  • 特点
    • 每一步只关注局部最优,不回溯修改之前的决策。
    • 计算效率高,但不保证能找到全局最优解,适用于满足贪心选择性质和最优子结构的问题。

2. 前向搜索(前向选择)

  • 概念
    前向搜索是一种特征选择方法,它是一种具体的贪心算法。其基本思想是:
    • 从一个空的特征集合开始,逐步将最能提升模型性能的特征添加到集合中,直到满足停止条件(例如,添加任何特征都不能显著改善模型性能或达到预设的特征数量)。
  • 特点
    • 每一步都只选择当前最有利的特征。
    • 容易实现,但可能错过特征之间的协同作用,因为它不考虑后续可能的组合效果。

3. 后向搜索(后向消除)

  • 概念
    后向搜索也是一种特征选择方法,采用贪心策略,但与前向搜索相反。其基本思想是:
    • 从包含所有特征的集合开始,逐步移除对模型性能影响最小的特征,直到进一步移除会导致性能显著下降或达到预设标准。
  • 特点
    • 开始时考虑所有特征,逐步消除冗余或噪声特征。
    • 计算成本较高,尤其当初始特征数很多时。

三者之间的联系与区别

  • 联系

    • 贪心算法思想:前向搜索和后向搜索都是基于贪心算法的策略,在每一步都做出局部最优的决策,希望构造出整体上较优的特征子集。
    • 目标一致:它们都旨在从高维特征中挑选出能使模型性能最优的子集,最终提高模型的泛化能力和计算效率。
  • 区别

    • 起始点不同
      • 前向搜索从空集开始,每一步添加一个最优特征;
      • 后向搜索从全特征集开始,每一步剔除一个影响最小的特征。
    • 搜索方向
      • 前向搜索关注的是“逐步构建”模型;
      • 后向搜索关注的是“逐步简化”模型。
    • 计算成本和风险
      • 前向搜索在开始时计算量较小,但可能遗漏后续特征间的协同作用;
      • 后向搜索一开始需要考虑所有特征,计算量较大,但在某些情况下能更全面地评估特征重要性。

结论

  • 贪心算法是一种普适的算法策略,旨在每步选择局部最优。
  • 前向搜索后向搜索是应用于特征选择中的两种具体贪心策略,它们都在尝试从所有可能的特征组合中寻找一个最优(或近似最优)的子集。
  • 前向搜索从空集开始逐步构建,而后向搜索从全集开始逐步消除,两者在实际应用中各有优缺点,但都共享贪心算法的基本思想。

这种划分和理解有助于在实际机器学习项目中,根据数据特点和计算资源,选择合适的特征选择策略,从而优化模型性能。

二、应用举例

下面分别给出三个简单易懂的例子,分别说明贪心算法、前向搜索和后向搜索的基本思想和过程。

1. 贪心算法的例子:零钱找零问题

问题描述:
假设你需要找零 37 分(或 37 单位货币),你拥有的硬币面额有 25、10、5 和 1 分。目标是使用尽可能少的硬币来凑够 37 分。

贪心算法思路:
每一步都选取不超过当前剩余金额的最大面额的硬币。

求解过程:

  1. 当前需要找零 37 分,最大面额不超过 37 的是 25 分,选一个 25 分硬币后,剩余 37 - 25 = 12 分。
  2. 接下来需要找零 12 分,最大面额不超过 12 的是 10 分,选一个 10 分硬币后,剩余 12 - 10 = 2 分。
  3. 现在剩余 2 分,最大面额不超过 2 的是 1 分,选两个 1 分硬币,剩余 0 分。

结果:
共用了 1 个 25 分、1 个 10 分和 2 个 1 分硬币,总共 4 个硬币完成找零。

这种每一步都做局部最优选择的策略就是贪心算法,它的优点是简单高效,但需要满足贪心选择性质才能得到全局最优解。

2. 前向搜索的例子:特征选择(前向选择)

问题描述:
假设我们有一个小数据集用于预测房价,原始特征有三个:面积(A)、房龄(B)、楼层(C)。目标是从这三个特征中选择一个子集,使得用这些特征建立的模型在预测房价时效果最好。

前向搜索思路:
从空集合开始,每一步选择一个能使模型性能(如预测准确率或均方误差)最优提升的特征,直到没有特征可以进一步显著改善模型。

求解过程:

  1. 初始阶段:
    • 空集合:{}
    • 分别使用单个特征建立模型,得到三个模型的性能评估。例如,模型用 A 得到的性能最好。
  2. 第一步:
    • 选择特征 A,当前特征集为 {A}。
  3. 第二步:
    • 在剩余的特征 {B, C} 中,尝试分别将 B 或 C 加入当前特征集,构建两个模型 {A, B} 和 {A, C}。
    • 假设模型 {A, B} 的性能比 {A, C} 更优,则选择 B,当前特征集变为 {A, B}。
  4. 停止条件:
    • 如果加入 C 后模型性能没有明显提升,则停止搜索,最终选定的特征子集为 {A, B}。

这种方法通过逐步添加特征,寻找使模型性能逐步提升的最佳特征组合,典型的贪心策略。

3. 后向搜索的例子:特征选择(后向消除)

问题描述:
还是考虑前面的房价预测问题,数据集包含三个特征:面积(A)、房龄(B)、楼层(C)。但这次我们从全特征集开始,希望通过逐步剔除不重要的特征来简化模型。

后向搜索思路:
从包含所有特征的集合开始,每一步移除对模型性能影响最小的特征,直到移除任何特征都会使模型性能明显下降为止。

求解过程:

  1. 初始阶段:
    • 全特征集合:{A, B, C}。
    • 构建模型并评估整体性能。
  2. 第一步:
    • 分别尝试移除 A、B、C 中的每一个特征,得到三个模型:{B, C}、{A, C}、{A, B}。
    • 比较三个模型的性能,假设移除 C 后模型性能下降最小,则认为 C 对模型贡献较小,将 C 移除。
    • 当前特征集为 {A, B}。
  3. 第二步:
    • 继续尝试从 {A, B} 中移除一个特征,评估移除 A 和移除 B 对模型性能的影响。如果移除任一特征后性能都会明显下降,则停止。
  4. 最终结果:
    • 最终选定的特征子集为 {A, B}。

后向搜索从全特征集出发,通过逐步消除冗余或噪声特征,达到简化模型、提高泛化能力的目的。

总结

  • 贪心算法
    通过每一步选择局部最优决策(例如零钱找零问题),来构造全局解。

  • 前向搜索
    从空集合开始逐步添加特征,每一步都选择能够使模型性能最大提升的特征。

  • 后向搜索
    从全特征集开始逐步消除特征,每一步移除对模型影响最小的特征,直到进一步移除会显著降低模型性能。

这三个方法都基于贪心策略,但应用场景和搜索方向不同,通过这样的特征子集搜索,能够在高维数据中找到对模型最有用的特征组合。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com