数据依赖项

数据对机器学习开发者的重要性与代码对传统编程人员一样重要。本课将重点介绍您应该针对数据提出的各类问题。

数据依赖项

  • 输入数据(特征)决定了机器学习系统的行为。
    • 我们为软件库编写单元测试,但数据呢?
  • 选择输入信号时需要小心谨慎。
    • 可能比在决定依赖哪些软件库时更谨慎?
  • 可靠性
    • 信号不可用时会出现什么情况?您知道吗?
  • 可靠性
    • 信号不可用时会出现什么情况?您知道吗?
  • 版本控制
    • 计算此信号的系统是否发生变化?频率会发生什么?
  • 可靠性
    • 信号不可用时会出现什么情况?您知道吗?
  • 版本控制
    • 计算此信号的系统是否发生变化?频率会发生什么?
  • 必要性
    • 信号的实用性能否证明将其纳入考虑范围的价值?
  • 相关性
    • 是否有任何输入信号密不可分,以至于需要采取额外策略来梳理它们?
  • 相关性
    • 是否有任何输入信号密不可分,以至于需要采取额外策略来梳理它们?
  • 反馈环
    • 我的哪些输入信号可能会受到模型输出的影响?

视频讲座总结

机器学习系统的行为取决于其输入特征的行为和品质。随着特征的输入数据发生变化,您的模型也会随之变化。有时,这种改变是可取的,但有时则不可取。

在传统软件开发中,您更关注代码而不是数据。在机器学习开发中,虽然编码仍然是作业的一部分,但您的关注点必须扩大到包含数据。例如,在传统软件开发项目中,最佳做法是编写单元测试以验证代码。在机器学习项目中,您还必须持续测试、验证和监控输入数据。

例如,您应持续监控模型以移除未使用的(或很少使用的)特征。设想某个特征对模型贡献很少或没有贡献。如果该功能的输入数据突然更改,则模型的行为可能会以意想不到的方式突然更改。

可靠性

关于输入数据的可靠性的一些问题:

  • 信号是否始终可用?信号来源是否不可靠?例如:
  • 信号是否来自在负载过重的情况下崩溃的服务器?
  • 信号是否来自每年 8 月去度假的员工?

版本控制

关于版本控制的问题:

  • 计算这些数据的系统是否会发生变化?如果是这样,请执行以下操作:
  • 频率
  • 您如何知道系统何时发生了变化?

有时,数据来自上游进程。如果该流程突然发生变化,那么您的模型可能会受到影响。

考虑为从上游进程接收的数据创建您自己的副本。然后,只有当您确定可以安全执行此操作时,才能前进到下一个上游数据版本。

必要性

以下问题可能会提醒您注意正则化

  • 这个功能的用处是否值得包含?

人们往往倾向于向模型添加更多特征。例如,假设您发现一项新功能,添加该功能会使模型略微准确。较高的准确率听起来当然比较低的准确率更好。 不过,您刚刚增加了维护负担。该附加功能可能会意外降级,因此您必须对其进行监控。请先仔细考虑,然后再添加能带来短期短期效果的功能。

相关性

有些特征(无论是正面还是负面)与其他特征相关联。 请思考以下问题:

  • 是否有任何特征密不可分,以至于需要采取额外策略来梳理它们?

反馈环

有时,模型可能会影响自己的训练数据。例如,某些模型的结果反过来直接或间接地向同一模型输入特征。

有时一个模型会影响另一个模型。例如,设想两个用于预测股票价格的模型:

  • 模型 A,这是一个不良预测模型。
  • 模型 B。

由于模型 A 有缺陷,因此它错误地决定购买库存 X 中的库存。这些交易会推升股票 X 的价格。模型 B 将股票 X 的价格用作输入特征,因此模型 B 很容易就股票 X 的价值得出一些错误的结论。因此,模型 B 可以根据模型 A 的有缺陷的行为买卖股票 X 的股份。模型 B 的行为可能会影响模型 A,并可能触发郁金香狂热效应或导致 X 公司的库存出现滑动