机器学习中Training dataset与Testing dataset使用独立数据集是否可行
方案可行性结论
这个方案完全可以通过机器学习实现,而且这种完全独立的训练/测试集划分逻辑,反而比拆分同一数据集的做法更贴合实际落地场景,得到的模型效果指标更能反映上线后的真实表现。
落地需要注意的核心问题
- 特征对齐要求:你从bug数据库提取训练样本用到的所有特征,必须和人工编写测试用例可提取的特征完全一致,特征的取值计算逻辑不能有差异。比如训练时用到了
用例覆盖模块数、操作步骤长度、是否涉及跨权限操作这类特征,预测新测试用例时也必须能拿到相同维度、相同统计规则的特征,不能出现训练用的特征预测时取不到的情况。 - 标签完整性校验:训练集的标签逻辑要明确,首先要确认你的bug数据库里是否同时有能触发bug的有效用例(正样本)和执行过但未触发bug的无效用例(负样本):如果两类样本都有,直接用二分类算法训练即可;如果只有触发bug的正样本,可以选择单分类算法(比如One-Class SVM、孤立森林)或者无监督异常检测方案,不需要负样本也能完成训练。
- 分布偏移规避:要提前校验人工生成测试用例的特征分布和训练集的特征分布差异,如果差异过大(比如训练集全是移动端场景的用例,人工写的全是PC端场景的用例),模型的预测效果会大幅下降,这种情况需要补充对应场景的训练数据再建模。
推荐算法选型
如果是结构化特征的场景,优先选择LightGBM、XGBoost这类树模型,训练效率高、对特征质量要求宽松,同时可解释性强,方便后续回溯模型判断用例有效性的依据。
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

