数据对机器学习开发者来说就像代码对传统编程人员一样重要。 本节课将重点介绍您应该针对数据提出的问题类型。
视频讲座总结
机器学习系统的行为取决于其输入特征的行为和品质。随着特征的输入数据发生变化,您的模型也会随之变化。有时,这种变化是可取的,但有时却不是。
在传统软件开发中,您更关注代码而不是数据。在机器学习开发中,虽然编码仍然是这项工作的一部分,但您的关注点必须更多,才能包含数据。例如,在传统软件开发项目中,最好编写单元测试以验证代码。在机器学习项目中,您还必须不断测试、验证和监控输入数据。
例如,您应该持续监控模型,以移除未使用的(或很少使用的)特征。想象一下,某项特征对模型贡献很少或没有贡献。如果该功能的输入数据突然更改,则模型的行为也可能会以意想不到的方式突然发生变化。
可靠性
需要考虑输入数据的可靠性的一些问题:
- 信号是否始终可用,还是来源不可靠?例如:
- 信号是否来自因负载过重而崩溃的服务器?
- 这个信号是否来自每年 8 月去度假的人们?
版本控制
关于版本控制的一些问题:
- 计算这些数据的系统是否发生了变化?如果是这样:
- 频率
- 您如何知道系统何时发生了变化?
有时数据来自上游进程。如果该过程突然改变,您的模型可能会受到影响。
考虑为从上游进程收到的数据创建自己的副本。然后,只有当您确定可以安全执行此操作时,才转到下一版本的上游数据。
必要性
以下问题可能会提醒您注意正则化:
- 此功能的实用性是否能证明添加它的费用?
您总是会倾向于向模型添加更多特征。例如,假设您发现了添加特征,使模型略微准确的一项新功能。较高的准确率听起来当然比较低的准确率更好。 但是,现在您已经增加了维护负担。该附加功能可能会意外降级,因此您必须对其进行监控。请先三思,然后添加能带来短期成功的功能。
相关性
有些特征会与其他特征相关联(正或负)。 请思考以下问题:
- 是否有任何特征密不可分,以至于需要采取额外策略来梳理它们?
反馈环
有时,模型会影响自己的训练数据。例如,一些模型的结果会直接或间接地向同一个模型输入特征。
有时,一个模型会影响另一个模型。例如,考虑以下两种用于预测股票价格的模型:
- 模型 A - 是一个不良的预测模型。
- 型号 B。
由于模型 A 存在 bug,因此它错误地决定购买库存 X 中的库存。 这些交易会推动库存 X 的价格上涨。模型 B 将股票 X 的价格用作输入特征,因此模型 B 很容易就股票 X 的价值得出一些错误的结论。因此,模型 B 可以根据模型 A 的错误行为购买或出售股票 X 的股份。而模型 B 的行为可能会影响模型 A,并可能触发郁金香狂热行为或触发 X 公司的股票