机器学习全流程技术与策略深度解析
1. 主动学习技术
主动学习是一种在机器学习中非常重要的技术,它可以帮助我们更高效地选择需要标注的数据实例。以下是几种常见的主动学习技术:
| 技术名称 | 选择实例的方式 |
| — | — |
| 不确定性采样(Uncertainty sampling) | 选择在推理过程中具有最大不确定性的实例,在分类问题中,这些实例通常是最接近决策边界的实例。 |
| 预期模型变化(Expected model change) | 选择已知标签后对当前模型影响最大的实例。 |
| 密度加权不确定性采样(Density - weighted uncertainty sampling) | 选择不仅具有最高不确定性,而且能代表特征空间中许多其他数据点的实例,这依赖于特征空间中数据的密度。 |
| 误差减少估计(Estimation of error reduction) | 选择已知标签后能最大程度减少未来误差的实例。 |
| 委员会查询(Query - by - committee) | 训练多个模型(委员会),选择这些模型预测结果分歧最大的实例。 |
| 方差减少(Variance reduction) | 选择已知标签后能最大程度减少模型参数不确定性的实例。 |
在实际应用中,我们可以使用 Python 库如 modAL(https://modal - python.readthedocs.io/en/latest/)来实现这些技术,将人类反馈融入机器学习生命周期。
2. 代码调试与基础概念
在机器学习的代码编写过程中,我们会遇到各种错误,了解这些错误的类型和解决方法非常重要。
-
AttributeError
:当对一个对象使用未定义的属性时会引发此错误。例如,
isnull
未在列表对象中定义,所以
my_list.isnull()
会导致
AttributeError
。
-
NameError
:当试图调用代码中未定义的函数、类、名称或模块时会引发此错误。例如,若代码中未定义
neural_network
类,却调用
neural_network()
,就会得到
NameError
消息。
为了避免代码错误,我们可以采用以下方法:
-
增量编程
:为每个小组件编写代码,然后进行测试,并使用如 PyTest 编写测试代码。这样可以确保每个函数或类的输出与作为输入的其他模块兼容。
def odd_counter(num_list: list):
"""
:param num_list: list of integers to be checked for identifying odd numbers
:return: return an integer as the number of odd numbers in the input list
"""
odd_count = 0
for num in num_list:
if (num % 2) == 0:
print("{} is even".format(num))
else:
print("{} is even".format(num))
odd_count += 1
return odd_count
num_list = [1, 2, 5, 8, 9]
print(odd_counter(num_list))
- 日志记录 :在开发 Python 函数和类时,使用日志记录信息、错误和其他类型的消息,有助于在出现错误消息时识别潜在的问题来源。
此外,数据的质量和特征的维度也会对模型产生影响。高维度会使特征空间变得稀疏,降低模型在分类任务中识别可泛化决策边界的信心。同时,数据标签的置信度和特征的质量也各不相同,在建模阶段需要考虑这些因素。例如,使用专家(如放射科医生)标注医学图像时,图像标签的置信度可能不同,可以在数据收集过程中让更多专家标注同一图像,或在建模过程中根据标注置信度为每个图像分配权重。
3. 机器学习生命周期
机器学习生命周期包含多个阶段,其中数据清洗和编码是重要的预处理步骤。
-
数据清洗
:常见的清洗过程包括填充数据中的缺失值和去除异常值。检测异常值的一种简单方法是使用变量值分布的分位数。数据点超出上下边界则被视为异常值,上下边界可计算为
Q1 - a * IQR
和
Q3 + a * IQR
,其中
a
是一个介于 1.5 和 3 之间的实数,绘制箱线图时默认使用的
a
值为 1.5,
a
值越大,异常值识别过程越宽松,被检测为异常值的数据点越少。
-
编码方式
:
-
独热编码(One - hot encoding)
:为分类特征的每个类别生成一个新特征。
-
标签编码(Label encoding)
:保持相同的特征,只是将每个类别替换为分配给该类别的数字。
在模型部署方面,不同的部署场景需要考虑不同的因素。如果要将模型部署在医院医生的个人电脑上供临床医生直接使用,需要考虑设置合适的生产环境和所有软件依赖项,确保本地系统具备必要的硬件要求。而如果要将模型部署在银行系统的聊天机器人背后,则不需要考虑这些因素。
4. 负责任 AI 的调试
在机器学习中,数据偏差和安全攻击是需要关注的重要问题。
-
数据偏差
:
-
数据收集偏差
:收集的数据可能存在各种偏差,如亚马逊申请人筛选中的性别偏差、COMPAS 中的种族偏差、住院示例中的社会经济偏差等。
-
采样偏差
:在数据收集阶段的数据点采样或总体采样过程中可能存在偏差。例如,在抽样学生填写调查问卷时,采样过程可能偏向女孩或男孩、富裕或贫困学生家庭、高年级或低年级学生。
-
安全攻击
:
-
完美知识白盒攻击
:攻击者了解系统的所有信息。
-
零知识黑盒攻击
:攻击者对系统本身没有任何了解,但通过生产环境中模型的预测收集信息。
为了保护数据和算法的安全,我们可以采用加密、差分隐私和联邦学习等技术。
-
加密
:将信息、数据或算法转换为新的(加密)形式。拥有加密密钥(类似于密码的密钥)的个体可以对加密数据进行解密(使其变为人类可读或机器可理解的形式),没有加密密钥几乎不可能或很难访问数据和算法。
-
差分隐私
:试图确保单个数据点的移除或添加不会影响建模结果,通过从正态分布中添加随机噪声,使单个数据点的特征变得模糊,在大量数据点可用的情况下,根据大数定律可以消除噪声在学习中的影响。
-
联邦学习
:基于分散学习、数据分析和推理的思想,允许用户数据保留在个人设备或本地数据库中。
模型的透明度有助于建立用户信任,可能会增加信任和使用模型的用户数量。
5. 模型性能与效率检测
在评估机器学习模型时,需要根据不同的应用场景选择合适的性能指标。
-
医学诊断测试
:在初级诊断测试中,结合更准确的后续测试,我们希望确保不遗漏任何患有被检测疾病的患者,因此需要降低假阴性率,同时尽量降低假阳性率。可以在控制精度和特异性的同时,最大化召回率。
-
投资场景
:在投资场景中,需要确保有足够的精度来控制风险并推荐良好的投资机会,这可能会导致召回率较低,但这是可以接受的,因为不良投资可能会导致个人投资者的大量资金损失。
-
性能指标分析
:
-
ROC - AUC
:是一个综合指标,两个具有相同 ROC - AUC 的模型对单个数据点的预测可能不同。
-
MCC 和 log - loss
:MCC 关注预测标签,而 log - loss 关注测试数据点的预测概率,较低的 log - loss 不一定导致较低的 MCC。
-
R²
:R² 不考虑数据维度,具有更多特征的模型可能有更高的 R²,但不一定是更好的模型。
评估模型的泛化能力取决于所使用的性能指标和测试数据,需要为生产目标选择合适的性能指标,并使用能更反映生产中未见数据的数据集进行模型测试。
6. 模型性能提升策略
为了提高机器学习模型的性能,我们可以采用以下策略:
-
数据层面
:
-
增加训练数据点
:有助于减少方差,但不能保证一定能减少方差。
-
增加特征
:有助于减少偏差,但新特征不一定有助于减少方差。
-
优化时分配权重
:在训练机器学习模型时,根据类标签的置信度为每个数据点分配权重。
-
集成学习
:考虑每个数据点的质量或置信度得分分布,使用该分布各部分的数据点构建不同的模型,然后通过加权平均等方式组合模型的预测结果。
-
迁移学习
:在具有不同标签置信度水平的大型数据集上训练模型(排除置信度非常低的数据),然后在置信度非常高的部分数据集上进行微调。
-
分类问题中的特殊策略
:在分类问题中,当少数类稀疏时,可以通过增加识别决策边界的置信度来提高性能。例如,使用 Borderline - SMOTE 生成的新合成数据点会接近多数类数据点,有助于识别可泛化的决策边界;DSMOTE 使用 DBSCAN 将少数类数据点分为核心样本、边界样本和噪声(离群)样本三类,仅使用核心和边界样本进行过采样。
在超参数调优方面,不需要搜索所有可能的超参数组合。同时,L1 正则化可以消除特征对正则化过程的贡献。
7. 模型的可解释性与可解释性技术
可解释性在机器学习中非常重要,它可以帮助我们理解模型的决策过程,提高模型的性能。
-
可解释性的作用
:可解释性可以通过降低模型对小特征值变化的敏感性、提高模型训练的数据效率、帮助模型进行正确推理以及避免虚假相关性等来提高性能。
-
局部与全局可解释性
:
-
局部可解释性
:帮助我们理解模型在特征空间中接近某个数据点的行为。满足局部保真度标准的模型中,被识别为局部重要的特征可能在全局上不重要,反之亦然。
-
全局可解释性
:试图超越局部可解释性,为模型提供全局解释。
-
可解释性技术
:
-
SHAP
:可以确定每个特征对模型预测的贡献。特征在确定分类模型的决策边界和最终影响模型预测时协同工作,SHAP 首先识别每个特征的边际贡献,然后提供 Shapley 值作为每个特征与整个特征集协同预测模型的估计值。
-
LIME
:是 SHAP 的一种替代方法,用于局部可解释性,以模型无关的方式通过局部近似一个可解释模型来解释任何分类器或回归器的预测。
-
反事实解释
:反事实示例或解释有助于我们确定需要改变实例中的哪些因素来改变分类模型的结果。这些反事实可以帮助我们在金融、零售、营销、招聘和医疗保健等许多应用中确定可行的路径。但并非所有反事实都是可行的,需要根据每个特征的定义和含义进行判断。
8. 减少偏差与实现公平性
在机器学习中,减少偏差和实现公平性是重要的目标。
-
敏感属性代理
:模型中可能存在敏感属性的代理,但不一定直接存在敏感属性。例如,工资和收入(在某些国家)、职业、重罪指控历史等可能是敏感属性的代理。
-
公平性定义
:
- ** demographic parity(人口统计学平等)
:确保模型的预测不依赖于给定的敏感属性,如种族或性别。
- ** equalized odds(均衡赔率)
:当给定的预测独立于给定敏感属性的组和实际输出时满足。满足人口统计学平等并不一定意味着模型在均衡赔率方面是公平的。
-
识别和改进偏差
:我们可以使用可解释性技术来识别模型中的潜在偏差,然后计划改进模型以实现公平性。例如,识别男性和女性群体之间的公平性问题。
9. 测试驱动开发与风险控制
在机器学习项目中,测试驱动开发可以帮助我们控制风险。
-
pytest
:是一个易于使用的 Python 库,可用于设计单元测试。设计好的测试可以简单地用于测试代码的更改,并在开发过程和未来代码更改中控制潜在错误的风险。
-
fixtures
:在数据处理和机器学习建模编程中,我们需要使用不同变量或数据对象中的数据,这些数据可能来自本地机器或云端的文件、数据库查询或 URL。Fixtures 可以帮助我们避免在测试中重复相同的代码,将 fixture 函数附加到测试中,它会在每次测试运行前运行并返回数据给测试。我们可以参考 pytest 文档页面(https://docs.pytest.org/en/7.1.x/how - to/fixtures.html)中的示例。
-
差分测试
:尝试在相同输入下检查软件的两个版本(基础版本和测试版本),并比较输出。这个过程有助于识别输出是否相同,以及发现意外的差异。在差分测试中,基础版本已经过验证并被视为批准版本,测试版本需要与基础版本进行比较以确保产生正确的输出。
-
mlflow
:是一个广泛使用的机器学习实验跟踪库,可用于 Python。跟踪机器学习实验有助于减少得出无效结论和选择不可靠模型的风险。机器学习中的实验跟踪是指保存实验的相关信息,如使用的数据、测试性能和用于性能评估的指标、建模使用的算法和超参数等。
10. 生产环境的测试与调试
在生产环境中,数据漂移、概念漂移和模型断言是需要关注的重要问题。
-
数据漂移与概念漂移
:
-
数据漂移
:如果生产环境中特征或自变量的特征和含义与建模阶段不同,则会发生数据漂移。例如,使用第三方工具生成的人员健康或财务状况得分,工具背后的算法可能随时间变化,模型在生产中使用时其范围和含义会与训练时不同,如果未相应更新模型,模型将无法按预期工作。
-
概念漂移
:指输出变量定义的任何变化。例如,由于概念漂移,训练数据和生产环境中的实际决策边界可能不同,这意味着训练的努力可能导致决策边界与生产中的实际情况相差甚远。
-
模型断言
:可以帮助我们早期检测问题,如输入数据漂移或其他可能影响模型性能的意外行为。我们可以将模型断言视为一组规则,在模型的训练、验证甚至部署过程中进行检查,以确保模型的预测满足预定义的条件。模型断言可以帮助我们检测和诊断模型或输入数据的问题,在这些问题影响模型性能之前进行处理。
-
集成测试
:
-
测试数据管道
:需要评估模型训练前的数据预处理组件(如数据整理)在训练和部署阶段是否一致。
综上所述,机器学习是一个复杂的过程,涉及多个方面的技术和策略。我们需要在代码调试、数据处理、模型训练、评估和部署等各个环节中关注细节,采用合适的方法和技术,以提高模型的性能和可靠性,实现公平性和安全性,同时有效地控制风险。
机器学习全流程技术与策略深度解析
11. 主动学习技术总结与应用
主动学习技术在机器学习中扮演着关键角色,它能够高效地选择需要标注的数据实例,从而提升模型性能。以下是对几种常见主动学习技术的总结:
| 技术名称 | 选择实例的方式 |
| — | — |
| 不确定性采样(Uncertainty sampling) | 选择推理时不确定性最大的实例,分类问题中常为最接近决策边界的实例。 |
| 预期模型变化(Expected model change) | 选择已知标签后对当前模型影响最大的实例。 |
| 密度加权不确定性采样(Density - weighted uncertainty sampling) | 选择既具高不确定性又能代表众多其他数据点的实例,依赖特征空间数据密度。 |
| 误差减少估计(Estimation of error reduction) | 选择已知标签后能最大程度减少未来误差的实例。 |
| 委员会查询(Query - by - committee) | 训练多个模型,选择预测分歧最大的实例。 |
| 方差减少(Variance reduction) | 选择已知标签后能最大程度减少模型参数不确定性的实例。 |
在实际应用中,我们可以借助 Python 库 modAL 来实现这些技术,将人类反馈融入机器学习生命周期。其流程如下:
graph LR
A[获取未标注数据] --> B[应用主动学习技术选择实例]
B --> C[人工标注所选实例]
C --> D[将标注数据加入训练集]
D --> E[重新训练模型]
E --> F{是否达到目标性能}
F -- 否 --> B
F -- 是 --> G[模型部署]
12. 代码调试与优化实践
在编写机器学习代码时,我们可能会遇到各种错误,如
AttributeError
和
NameError
。为了避免这些错误,我们可以采用增量编程和日志记录的方法。
增量编程是指为每个小组件编写代码,然后进行测试,并使用如 PyTest 编写测试代码。以下是一个简单的示例:
def odd_counter(num_list: list):
"""
:param num_list: list of integers to be checked for identifying odd numbers
:return: return an integer as the number of odd numbers in the input list
"""
odd_count = 0
for num in num_list:
if (num % 2) == 0:
print("{} is even".format(num))
else:
print("{} is even".format(num))
odd_count += 1
return odd_count
num_list = [1, 2, 5, 8, 9]
print(odd_counter(num_list))
日志记录则是在开发 Python 函数和类时,使用日志记录信息、错误和其他类型的消息,有助于在出现错误消息时识别潜在的问题来源。
此外,数据的质量和特征的维度也会对模型产生影响。高维度会使特征空间变得稀疏,降低模型在分类任务中识别可泛化决策边界的信心。同时,数据标签的置信度和特征的质量也各不相同,在建模阶段需要考虑这些因素。
13. 机器学习生命周期关键环节
机器学习生命周期包含多个阶段,其中数据清洗和编码是重要的预处理步骤。
-
数据清洗
:常见的清洗过程包括填充数据中的缺失值和去除异常值。检测异常值的一种简单方法是使用变量值分布的分位数。数据点超出上下边界则被视为异常值,上下边界可计算为
Q1 - a * IQR
和
Q3 + a * IQR
,其中
a
是一个介于 1.5 和 3 之间的实数,绘制箱线图时默认使用的
a
值为 1.5,
a
值越大,异常值识别过程越宽松,被检测为异常值的数据点越少。
-
编码方式
:
-
独热编码(One - hot encoding)
:为分类特征的每个类别生成一个新特征。
-
标签编码(Label encoding)
:保持相同的特征,只是将每个类别替换为分配给该类别的数字。
在模型部署方面,不同的部署场景需要考虑不同的因素。如果要将模型部署在医院医生的个人电脑上供临床医生直接使用,需要考虑设置合适的生产环境和所有软件依赖项,确保本地系统具备必要的硬件要求。而如果要将模型部署在银行系统的聊天机器人背后,则不需要考虑这些因素。
14. 负责任 AI 的保障措施
在机器学习中,数据偏差和安全攻击是需要关注的重要问题。
-
数据偏差
:
-
数据收集偏差
:收集的数据可能存在各种偏差,如亚马逊申请人筛选中的性别偏差、COMPAS 中的种族偏差、住院示例中的社会经济偏差等。
-
采样偏差
:在数据收集阶段的数据点采样或总体采样过程中可能存在偏差。例如,在抽样学生填写调查问卷时,采样过程可能偏向女孩或男孩、富裕或贫困学生家庭、高年级或低年级学生。
-
安全攻击
:
-
完美知识白盒攻击
:攻击者了解系统的所有信息。
-
零知识黑盒攻击
:攻击者对系统本身没有任何了解,但通过生产环境中模型的预测收集信息。
为了保护数据和算法的安全,我们可以采用加密、差分隐私和联邦学习等技术。
-
加密
:将信息、数据或算法转换为新的(加密)形式。拥有加密密钥(类似于密码的密钥)的个体可以对加密数据进行解密(使其变为人类可读或机器可理解的形式),没有加密密钥几乎不可能或很难访问数据和算法。
-
差分隐私
:试图确保单个数据点的移除或添加不会影响建模结果,通过从正态分布中添加随机噪声,使单个数据点的特征变得模糊,在大量数据点可用的情况下,根据大数定律可以消除噪声在学习中的影响。
-
联邦学习
:基于分散学习、数据分析和推理的思想,允许用户数据保留在个人设备或本地数据库中。
模型的透明度有助于建立用户信任,可能会增加信任和使用模型的用户数量。
15. 模型性能评估与提升
在评估机器学习模型时,需要根据不同的应用场景选择合适的性能指标。
-
医学诊断测试
:在初级诊断测试中,结合更准确的后续测试,我们希望确保不遗漏任何患有被检测疾病的患者,因此需要降低假阴性率,同时尽量降低假阳性率。可以在控制精度和特异性的同时,最大化召回率。
-
投资场景
:在投资场景中,需要确保有足够的精度来控制风险并推荐良好的投资机会,这可能会导致召回率较低,但这是可以接受的,因为不良投资可能会导致个人投资者的大量资金损失。
-
性能指标分析
:
-
ROC - AUC
:是一个综合指标,两个具有相同 ROC - AUC 的模型对单个数据点的预测可能不同。
-
MCC 和 log - loss
:MCC 关注预测标签,而 log - loss 关注测试数据点的预测概率,较低的 log - loss 不一定导致较低的 MCC。
-
R²
:R² 不考虑数据维度,具有更多特征的模型可能有更高的 R²,但不一定是更好的模型。
为了提高机器学习模型的性能,我们可以采用以下策略:
-
数据层面
:
-
增加训练数据点
:有助于减少方差,但不能保证一定能减少方差。
-
增加特征
:有助于减少偏差,但新特征不一定有助于减少方差。
-
优化时分配权重
:在训练机器学习模型时,根据类标签的置信度为每个数据点分配权重。
-
集成学习
:考虑每个数据点的质量或置信度得分分布,使用该分布各部分的数据点构建不同的模型,然后通过加权平均等方式组合模型的预测结果。
-
迁移学习
:在具有不同标签置信度水平的大型数据集上训练模型(排除置信度非常低的数据),然后在置信度非常高的部分数据集上进行微调。
-
分类问题中的特殊策略
:在分类问题中,当少数类稀疏时,可以通过增加识别决策边界的置信度来提高性能。例如,使用 Borderline - SMOTE 生成的新合成数据点会接近多数类数据点,有助于识别可泛化的决策边界;DSMOTE 使用 DBSCAN 将少数类数据点分为核心样本、边界样本和噪声(离群)样本三类,仅使用核心和边界样本进行过采样。
16. 模型可解释性与公平性
可解释性在机器学习中非常重要,它可以帮助我们理解模型的决策过程,提高模型的性能。
-
可解释性的作用
:可解释性可以通过降低模型对小特征值变化的敏感性、提高模型训练的数据效率、帮助模型进行正确推理以及避免虚假相关性等来提高性能。
-
局部与全局可解释性
:
-
局部可解释性
:帮助我们理解模型在特征空间中接近某个数据点的行为。满足局部保真度标准的模型中,被识别为局部重要的特征可能在全局上不重要,反之亦然。
-
全局可解释性
:试图超越局部可解释性,为模型提供全局解释。
-
可解释性技术
:
-
SHAP
:可以确定每个特征对模型预测的贡献。特征在确定分类模型的决策边界和最终影响模型预测时协同工作,SHAP 首先识别每个特征的边际贡献,然后提供 Shapley 值作为每个特征与整个特征集协同预测模型的估计值。
-
LIME
:是 SHAP 的一种替代方法,用于局部可解释性,以模型无关的方式通过局部近似一个可解释模型来解释任何分类器或回归器的预测。
-
反事实解释
:反事实示例或解释有助于我们确定需要改变实例中的哪些因素来改变分类模型的结果。这些反事实可以帮助我们在金融、零售、营销、招聘和医疗保健等许多应用中确定可行的路径。但并非所有反事实都是可行的,需要根据每个特征的定义和含义进行判断。
在机器学习中,减少偏差和实现公平性也是重要的目标。
-
敏感属性代理
:模型中可能存在敏感属性的代理,但不一定直接存在敏感属性。例如,工资和收入(在某些国家)、职业、重罪指控历史等可能是敏感属性的代理。
-
公平性定义
:
-
demographic parity(人口统计学平等)
:确保模型的预测不依赖于给定的敏感属性,如种族或性别。
-
equalized odds(均衡赔率)
:当给定的预测独立于给定敏感属性的组和实际输出时满足。满足人口统计学平等并不一定意味着模型在均衡赔率方面是公平的。
-
识别和改进偏差
:我们可以使用可解释性技术来识别模型中的潜在偏差,然后计划改进模型以实现公平性。例如,识别男性和女性群体之间的公平性问题。
17. 测试驱动开发与生产调试
在机器学习项目中,测试驱动开发可以帮助我们控制风险。
-
pytest
:是一个易于使用的 Python 库,可用于设计单元测试。设计好的测试可以简单地用于测试代码的更改,并在开发过程和未来代码更改中控制潜在错误的风险。
-
fixtures
:在数据处理和机器学习建模编程中,我们需要使用不同变量或数据对象中的数据,这些数据可能来自本地机器或云端的文件、数据库查询或 URL。Fixtures 可以帮助我们避免在测试中重复相同的代码,将 fixture 函数附加到测试中,它会在每次测试运行前运行并返回数据给测试。我们可以参考 pytest 文档页面(https://docs.pytest.org/en/7.1.x/how - to/fixtures.html)中的示例。
-
差分测试
:尝试在相同输入下检查软件的两个版本(基础版本和测试版本),并比较输出。这个过程有助于识别输出是否相同,以及发现意外的差异。在差分测试中,基础版本已经过验证并被视为批准版本,测试版本需要与基础版本进行比较以确保产生正确的输出。
-
mlflow
:是一个广泛使用的机器学习实验跟踪库,可用于 Python。跟踪机器学习实验有助于减少得出无效结论和选择不可靠模型的风险。机器学习中的实验跟踪是指保存实验的相关信息,如使用的数据、测试性能和用于性能评估的指标、建模使用的算法和超参数等。
在生产环境中,数据漂移、概念漂移和模型断言是需要关注的重要问题。
-
数据漂移与概念漂移
:
-
数据漂移
:如果生产环境中特征或自变量的特征和含义与建模阶段不同,则会发生数据漂移。例如,使用第三方工具生成的人员健康或财务状况得分,工具背后的算法可能随时间变化,模型在生产中使用时其范围和含义会与训练时不同,如果未相应更新模型,模型将无法按预期工作。
-
概念漂移
:指输出变量定义的任何变化。例如,由于概念漂移,训练数据和生产环境中的实际决策边界可能不同,这意味着训练的努力可能导致决策边界与生产中的实际情况相差甚远。
-
模型断言
:可以帮助我们早期检测问题,如输入数据漂移或其他可能影响模型性能的意外行为。我们可以将模型断言视为一组规则,在模型的训练、验证甚至部署过程中进行检查,以确保模型的预测满足预定义的条件。模型断言可以帮助我们检测和诊断模型或输入数据的问题,在这些问题影响模型性能之前进行处理。
-
集成测试
:
-
测试数据管道
:需要评估模型训练前的数据预处理组件(如数据整理)在训练和部署阶段是否一致。
总之,机器学习是一个复杂且多面的领域,涵盖了从代码编写到模型部署的各个环节。我们需要综合运用各种技术和策略,注重细节,不断优化和改进,才能构建出高性能、可靠、公平且安全的机器学习模型。
超级会员免费看
4690

被折叠的 条评论
为什么被折叠?



