1.生产环境机器学习系统
从上图可以看出,机器学习大部分工作是数据工程,数据收集、特征提取的工作量比写代码的工作量大很多…
2.静态训练和动态训练
- 静态模型:采用离线训练方式。也就是说,我们只训练模型一次,然后使用训练后的模型一段时间。
(1)易于构建和测试-使用批量训练和测试,对其进行迭代,直到达到良好效果。
(2)仍然需要对输入进行监控
(3)模型容易过时 - 动态模型:采用在线训练方式。也就是说,数据会不断进入系统,我们通过不断地更新系统将这些数据整合到模型中。
(1)随着时间推移不断为训练数据注入新数据,定期同步更新版本
(2)使用渐进式验证,而不是批量训练和测试
(3)需要监控、模型回滚和数据隔离功能
(4)会根据变化做出相应调整,避免了过时问题
3.静态推理和动态推理
- 离线推理:指的是使用MapReduce或类似方法批量进行所有可能的预测。然后,将预测记录到SSTable或Bigtable中,并将它们提供给一个缓存/查询表。
(1)优点:不需要担心过多的推理成本,可以使用批量方法,可以在推送之前对数据预测执行后期验证。
(2)缺点:只能对我们知晓的数据进行预测,不适用于存在长尾的情况,更新可能延迟数小时或数天。 - 在线推理:指的是使用服务器根据需要进行预测
(1)优点:可在新项目加入时对其进行预测,非常适合存在长尾的情况。
(2)缺点:计算量非常大,对延迟较为敏感,可能会限制模型的复杂度,监控需求更多。
4.数据依赖性(Data Dependencies)
特征管理
- 输入数据(特征)决定机器学习系统的行为。
- 选择输入信号时要谨慎
对输入数据要注意的几点: - 可靠性:需要了解如果信号不可用时会出现什么情况?
- 版本控制:对输入数据要进行版本控制,比如:计算此信号的系统是否发生过变化?多久一次?会出现什么情况?
- 必要性:信号是否值得添加?
- 相关性:输入信号之间是否存在密不可分的关系,以及是否需要采取额外策略来梳理它们?
- 反馈环:哪个输入信号可能会受到模型输出的影响?
5.公平性
谷歌的教程中列出的偏差只是一部分人为偏差,维基百科上有一百多种认知偏差。
进行公平性设计时要考虑的几点:
- 思考具体问题
- 请教专家
- 训练模型,使其将偏差纳入考虑范畴
- 解读结果
- 在发布时提供背景信息
图 1. 加利福尼亚州地图与加州住房数据集数据的数据重叠。每个点代表一个住宅区,颜色表示房价中间值,颜色范围从蓝色到红色,分别对应着从低到高的中位房价。
-
报告偏差:如果数据收集中收集的事件、属性和/或结果的频率未能准确反映它们的真实频率,便会出现报告偏差。出现这种情况的原因是,人们喜欢记录强烈感受的情况(不寻常或特别难忘),认为大家都知道一般情况。
示例:根据用户在热门网站提交的语料库,训练情感分析模型预测书评为积极评价还是消极评价。训练数据集中的大多数评价反映的都是极端观点(评价者喜欢或讨厌某本书),因为人们在感受不强烈时不太可能提交书评。因此,对于使用更微妙的语言评价一本书的评价,该模型不太能正确预测其中包含的情感。 -
自动化偏差:与非自动化系统生成的结果相比,自动化偏差偏向于自动化系统生成的结果(不考虑各自的错误率)。
示例:链轮制造商的软件工程师渴望部署经过训练的“开创性”新模型来识别齿轮瑕疵,但是后来工厂主管指出该模型的精确率和召回率均比人工检测员低15%。 -
选择偏差:如果数据集中选择的样本未能反映样本的真实分布情况,便会出现选择偏差。选择偏差的形式有多种:
(1)覆盖偏差:未以典型方式选择数据。
示例:根据对已购买某款新产品的消费者样本进行的手机调查,对模型进行训练以及预测该产品的未来销量。选择购买竞争产品的消费者未参与调查,因此训练数据中没有代表这一群体的数据。
(2)未回答偏差(或参与偏差):由于数据收集过程中存在参与缺口,导致收集的数据不具代表性。
示例:根据对已购买某款新产品的消费者样本以及已购买竞争产品的消费者样本进行的手机调查,对模型进行训练并进行预测该产品未来的销量。购买了竞争产品的消费者拒绝填写调查问卷的概率超过80%,样本中没有可代表此类群体的数据。
(3)采样偏差:收集过程中未适当地随机化
示例:根据对已购买某款新产品的消费者样本以及已购买竞争产品的消费者样本进行的手机调查,,对模型进行训练并进行预测该产品未来的销量。调查没有随机选择目标消费者,而是选择回复电子邮件的前200名消费者,这些消费者可能比普通消费者对该产品更感兴趣。 -
群体归因偏差
群体归因偏差倾向于将个体的真实情况泛化到其所属的整个群体。这种偏差的两个主要表现形式为:
(1)群内偏差:偏向于您所需群体或具有共同特征的群体内成员。
示例:假设两名工程师在训练用于筛选软件开发者简历的模型,他们会倾向于认为与他们毕业于同一所计算机科学院校的求职者更适合相应职位。
(2)群外同质性偏差:倾向于对您不属于的某个群体的个体成员抱有成见,或者认为他们都差不多。
示例:假设两名工程师在训练用于筛选软件开发者简历的模型,他们会倾向于认为毕业于非计算机科学院校的所有求职者都不具备担任相应职位所需的足够专业知识。 -
隐性偏差
如果根据不一定普遍适用的个人心智模型和个人经验做出假设,便会出现隐性偏差。
示例:一名工程师在训练手势识别模型时将摇头当做表示“否”的特征,但在世界上的某些地区,摇头其实表示“是”。
隐性偏差是一种常见形式的确认偏差,即模型构建者无意中以认可已有观念和假设的方式处理数据。在某些情况下,模型构建者实际上会不断地训练模型,直到得出的结果与最初的假设一致为止,我们称之为实验者偏差。
示例:一名工程师要构建一个模型,根据狗的各种特征(身高、体重、品种、环境)预测狗的攻击性。这名工程师幼年曾经有过与一只活蹦乱跳的宠物贵宾犬相处的不愉快经历,从那以后便认为该品种的狗具有攻击性。当经过训练的模型预测大多数玩具贵宾犬都比较温顺时,该工程师又再次训练了几次该模型,直到其预测的结果显示小贵宾犬的攻击性更强。
5.2 识别偏差
考虑数据的公平性,我们就要主动对数据进行审核,看是否存在可能导致出现偏差的情况。下面三个警惕性信号需要我们注意。
(1)特征值缺失
如果您的数据集中有一个或多个特征缺少了大量的样本数据,那么这可能表明数据集中的某些关键特性未得到充分代表。
例如,下表显示了 加利福尼亚州住房数据集 中一个特征子集的关键统计信息摘要,该数据集以 pandas DataFrame 方式存储,并通过 DataFrame.describe 生成。我们可以看到,所有特征的 count 均为 17000,这表明不存在数据缺失的情况:
假设其中有三个特征(population、households 和 median_income)的只有 3000,换句话说,每个特征有 14,000 个缺失值:
这 14,000 个缺失值会使我们更加难以准确地断定出家庭的平均收入与房价中位数的相关性。在对这些数据进行模型训练之前,我们应该谨慎地调查这些值缺失的原因,确保收入和人口数据的缺失不是因潜在的偏差所导致。
(2)异常特征值
在探索数据时,我们还应注意观察有没有样本包含高度非典型或异常特性的特征值。这样的异常特征值表明数据收集方面可能有问题或者其他方面存在会导致偏差的不准确因素。
例如,我们来看看从加利福尼亚州住房数据集中摘录的如下样本:
(3)数据倾斜
数据倾斜是指相对于实际的发生率而言,某些小组或特性未得到充分代表或得到过度代表;如果我们的数据存在任何形式的倾斜,便可能会在模型中引入偏差。
在前面的‘验证编程练习’中,在将加利福尼亚州住房数据集拆分为培训集和验证集之前,如果我们没有将其做随机化处理,那会如何导致明显的数据偏差。下图直观地显示了从总数据集中提取的数据子集,该数据子集仅代表了加利福尼亚州西北地区的数据。
上图中 加利福尼亚州地图与加州住房数据集数据的数据重叠。每个点代表一个住宅区,颜色表示房价中间值,颜色范围从蓝色到红色,分别对应着从低到高的中位房价。
如果将这个不具代表性的样本数据用于预测加利福尼亚州全州房价的模型进行训练,那么由于缺少该州南部地区的住房数据,模型便会出问题。模型中存在的地理偏差可能会对这些没有足够代表性数据的社区购房者产生不利影响。
5.3 评估偏差
评估模型时,针对整个测试集或验证集计算的指标并不总能准确反映出模型的公平性。
假设已开发出一个可预测患者是否有肿瘤的新模型,并通过由 1000 名患者的医疗记录组成的验证集对该模型进行评估,其中有 500 条记录来自女性患者,另外 500 条记录来自男性患者。以下混淆矩阵总结了从这 1000 个样本中得出的结果:
上述结果似乎很令人满意:精确率为 80%,召回率为 72.7%。但如果我们分别针对每组患者计算预测结果呢?我们将结果分为两个独立的混淆矩阵:一个针对女性患者,另一个针对男性患者。
当我们分别针对女性和男性患者计算指标时,我们发现每组的模型效果存在显著差异。
女性患者:
-
在实际有肿瘤的 11 名女性患者中,该模型准确预测出其中 10 名有肿瘤(召回率为 90.9%)。换句话说,在女性病例中,该模型漏诊肿瘤的概率为 9.1%。
-
同样,当该模型预测女性患者有肿瘤时,在 11 个病例中有 10 个预测正确(精确率为 90.9%)。换句话说,在女性病例中,该模型预测肿瘤的错误率为 9.1%。
男性患者:
-
然而在实际有肿瘤的 11 名男性患者中,该模型只能准确预测出其中 6 名患者有肿瘤(召回率为 54.5%)。这意味着,在男性病例中,该模型漏诊肿瘤的概率为 45.5%。
-
当该模型预测男性患者有肿瘤时,在 9 个病例中只有 6 个预测正确(精确率为 66.7%)。换句话说,在男性病例中,该模型预测肿瘤的错误率为 33.3%。
现在,我们深入了解了该模型的预测结果固有的偏差,以及若推出该模型供大众医疗使用,每个子群体可能面临的风险。
5.4 其他公平性资源
公平性是机器学习领域中一个相对较新的分支。要详细了解致力于开发新工具和技术来识别和减少机器学习模型偏差的研究和计划,请访问Google 的机器学习公平性资源页面。
6.观察数据集是否具备足够的公平性的方法
通过‘Facets Overview’这个交互式可视化工具,可以帮助我们探索数据集。
-
查看每个数值和连续特征的描述性统计信息和直方图,思考以下问题
*大量观察数据中是否有缺失的特征值?
*缺失的特征是否有可能影响其它特征?
*是否存在意外特征值?
*是否存在数据偏斜迹象? -
我们也可以通过‘Facets Dive’来观察每个数据列内部具体的分布情况,以及数据列之间的相关性等,并思考以下问题:
*缺失了什么?
*什么被过度概括了?
*什么没有代表性?
*变量及其值如何反映真实世界?
*我们可能遗漏了什么?