Day 10 : 用於生产的机械学习 - Data Define 与建立基准

  • 接续介绍 ML 专案生命周期,本日说明第 2 阶段「资料 Data」的工作流程,依其说法分为2大步骤,分别为「定义资料及建立基准」及「标注及特徵工程」。是4个阶段中相当重要的流程,由於您已上线的 ML 系统是会持续不断的资讯流,也是传统以模型为中心的 AI 较为棘手的议题,故分为两个步骤介绍,本日介绍专注在定义资料与建立基准。

定义资料

  • 简单的说,就是定义资料的 X 与 y。
  • 此阶段试图将「商务需求/使用者服务的的需求」转化爲特徵 X 与标签 y。
  • 譬如提供电商购物 App 服务:
    • 使用者有接收促销讯息、限时完成折扣品购物提醒需求。
    • 商业上有增加黏着度、转换率与促销提醒。
    • X: 使用者消费纪录、时间戳记、明细分类等。
    • y: 促销讯息点击率、用户评价等。

定义资料的工程思考

  • 资料标签是否具有连续性,牵涉到标注资料是否有也呈现连续性、X推导y可以属於回归/分类问题。
  • 蒐集资料的频率,属於串流或批次。
  • 蒐集资料前、後的属性设计,譬如通勤纪录了经纬度地理位置,特徵工程时需要转为距离的状况。
  • 资料的安全与隐私考量,也关注着资料的公平性,解释力。
    • 举例如:提示储存隐私资料的风险、提供使用者控制提供何种资料的权限。
    • 确保少数集合能受到公平的结果,譬如不该提供素食主义者或特定宗教饮食忌讳的餐厅。

蒐集资料

  • 依据定义资料进行蒐集,蒐集来源包含开放资料、使用者数据、网路爬虫、服务商 API 等。
  • 垃圾进,垃圾出,蒐集资料时做好资料 ETL。
  • 资料蒐集与使用,要特别注意「资料安全、用户隐私」,以及在提供「公平」的服务,「消逆偏见」与歧视。

关注总是在变的资料- Drift & Skew

由於资料随着时间的推移变化,新概念还来不及定义,未分类的 "Unknow" 资料越来越多,而且旧概念的意涵转变,会减损模型预测的准确程度。

飘移 Drift

对於用於生产的机械学习,遇到的飘移情形可以归纳为资料飘移与概念飘移两种:

  • 资料飘移 Data Drift
    • 输入的数据 x 本身的改变。
    • 原本 ML 系统在旧数据效果良好,伴随着未知的数据出现,在未知数据区域表现效果差,ML 系统预测效果衰退。
  • 概念飘移 Concept Drift
    • x 与 y 关系改变。
    • 当目标变量本身的统计属性发生变化时,就会发生概念漂移。世界已经改变,模型需要更新。
    • 可以是渐进的、突发的、反覆/季节性的。

偏斜 Skew

  • 指两个不同版本的资料,比较之下发生了 Schema 、特徵 x 及资料分布偏斜的差异。
  • 版本可能是训练资料与现实资料的差异,前次已布署的训练结果与本次训练结果之间的差异。
  • 需要能比对资料版本之间差异的工具协助验证。

持续不断的改进资料品质

  • 用於生产的机械学习常会回头检视并改进资料的品质,是持续循环的过程,在Day 04 以数据为中心的 AI 引用 Deeplearning.ai 的循环图,训练模型、错误分析以决策、改进资料等 3 项任务,在 ML 生命周期中持续循环。
  • 您会需要持续关注资料的主因是用於生产的机械学习,接收到的资料是持续流动的。

建立基准

  • 根据 Scope 所定义的专案目标,设定欲达成的基准值或警戒值。
  • 基准可来自过去的经验、领域知识、先前绩效、参考标竿的绩效、 HLP 等。
  • 如果能针对不同干扰情境(例如:语音辨识时的交通噪音、工厂内设备噪音)建立不同基准,对於後续不同情境改善与监控会有帮助。

验证资料

  • 视觉化的验证资料集,比对现有与之前的情况是否有偏斜与飘移,需要工具协助。
  • TFDV 是由 Google 开源,可以检视资料健康情形的模组,作为 TFX 端对端 (end to end) 流程组合的一部份组件,也可以单独使用,并且与 Notebook 环境整合。详细介绍将独立一篇说明。
  • 在微软 Azure 侦测资料集的资料漂移说明文件,说明可以在 Azure studio 的 [资料集/监视器] 页面中更新设定,以及分析现有资料的特定时间周期,可深入解析到资料漂移的程度,以及要进一步调查的特徵与提示。

小结

  • 定义资料的特徵 X 与标签 y ,蒐集所需资料,建立达成的目标与基准警戒值,对後续监控与改进有帮助。
  • 资料总是在变,世界也是不停往前走,可以监控资料飘移与偏斜,并关注 ML 系统的资安、隐私、公平的情形,改进特定/少数族群的服务体验,也是 AI 落地必须要注意的。

参考


<<:  Ruby on Rails 方法的存取控制

>>:  Leetcode 挑战 Day 07 [118. Pascal's Triangle]

D12 - 用 Swift 和公开资讯,打造投资理财的 Apps { 加权指数K线图分析 }

K 线现在用在各种投资市场,不只是股市。最早从米市交易开始,现在任何有价格波动的地方,都会有人用 K...

D30 - 「来互相伤害啊!」:猫狗集合!

有场景了,来让人物登场吧!(≧∀≦) 首先将场景载入游戏中。 src\components\wind...

建立第一份html文件

建立第一份html文件,需要注意一些细节 如没宣告加上!doctype html会导致浏览器解读功...

Day 26 | 使用ManoMotion制作Flappy Bird游戏 Part2 - ManoMotion侦测Grab动作并往上飞

上一篇已将障碍物山的建置与移动做好,今天要来做帝江的跳跃。 目录 ManoMotion手部Grab动...

Day24 - 关於共识演算法与容错机制

这几篇文章可能都会比较偏技术一些,会尽量解释简单,让大家容易理解,我们就继续看下去。 常见的共识演算...