如何以正确的方式进行机器学习?

数据挖掘 机器学习 数据挖掘 预测建模
2022-02-19 21:01:51

我对机器学习有一个基本的了解。我的问题是它在实际应用中是如何完成的。

如果我采用以下 ML 定义

如果计算机程序在 T 中的任务上的性能(由 P 衡量)随着经验 E 而提高,则称计算机程序从经验 E 中学习某类任务 T 和性能度量 P。

它谈到了经验E。我从上面了解到的是,你给算法E的数据越多,E就会增加,而这反过来又会增加P。

现在让我们考虑一个场景,您从 10,000 个可用数据行构建决策树模型。现在我有了模型,所以我可以说我的模型已经学习并停在那里!(从那时起永远使用该模型进行预测)?

根据定义,我需要提供更多数据以增加体验,进而获得性能提升。

机器学习也是一个持续的过程,因此您无法构建模型并就此止步。我们是否需要一次次向算法提供更多数据并改进模型以使模型真正学习?

3个回答

除了运行算法之外,没有真正的“正确方法”来使用机器学习,就像没有使用排序算法或任何其他类型的复杂自动化的“正确方法”一样。

一些指导方针/想法:

  • 一旦这些预测对您有用,您就可以开始使用您的模型进行预测。这可能是一旦他们通过了某个性能阈值,这将使预测成为实现其他目标的最佳方式。这可能只是意味着“比上一个 ML 模型更好”,但也可能意味着“比让某些人这样做更便宜、更快,即使它不太准确”。

  • 根据收集训练数据的方式以及模型的工作方式,可能既可以使用模型进行预测,也可以在新数据到达时继续对其进行训练。

  • 但是,不需要持续学习。不断适应新数据的学习系统在某些情况下很有用(例如推荐系统),但在其他情况下可能不合适(例如车辆的自动驾驶,您不想在驾驶时冒降低性能的风险)采用)。

被认为是非常标准的做法的一件事是通过使用测试指标来展示机器学习系统在学习一段时间后的表现。最简单的变化是将您的一些宝贵数据保留在一侧,故意不对其进行训练,然后测量性能。通常将两个这样的集合放在一边——一个交叉验证集用于帮助自动决定您的学习算法的变体,一个测试集用于评估该选择的最终结果。

我们是否需要一次次向算法提供更多数据并改进模型以使模型真正学习?

这称为在线学习建议用于基础关系可能发生变化并且可以快速获得反馈的任何应用程序。

但情况并非总是如此。可能的情况是,一旦学习了模型,我们就不会期望它会改变,因此这种“继续教育”是不必要的,而且这种反馈可能代价高昂或危险。(想象一下用一个你知道它的更新算法的机器人玩石头剪刀布;你应该能够通过喂它的动作来可靠地获胜,这些动作旨在让你有机会了解它的动作并战胜它。)

或者可能是定期提供反馈的情况,我的经验是人们经常从头开始重新训练模型,而不是尝试对以前的模型进行热启动。

这里的“经验”是 10000 行训练数据。人们期望用较少的数据,产生一个较差的模型(例如,如果有 1 行数据,或 10 行)。

在实践中,根据一些训练集指定模型然后用于预测的情况并不少见。