开发理想的解决方案需要什么? 当我面对一个新的数据科学问题时,我经常问自己这个问题。 令人惊讶的是,答案始终如一——“数据”。
在我的职业生涯中,对我来说最具挑战性的任务始终是寻求完美的数据。 老实说,我从未成功过。
完美的数据集存在吗?
但是,究竟什么才被认为是完美的数据呢? 简而言之,数据可以分为良好的训练和验证数据集,以训练一个在生产中表现良好且经久耐用的模型。 如果您在训练模型时数据集不佳,那么实时结果将与您在实验中观察到的结果大相径庭。
现实世界的数据是混乱的,很少是结构化的、不平衡的、缺少信息的、有噪声的,有时还会被错误地标记。 此外,在某些情况下,可能没有数据,或者实际有价值的数据比例明显偏低。 此外,在某些情况下,创建高质量数据集的成本可能很高。
使用不平衡数据集的个人经验
在这个故事中,我将分享我在数据科学家职业生涯的第一个项目中面临的挑战。
我从事一个文本分类项目,目的是将客户的评论分为正面或负面。 这些评论是我们与客户在 Basecamp 上进行常规对话的一部分。
与普遍的看法相反,这个问题绝非易事。
首先,负面评论的定义非常特殊。
只有当评论显示以下意图之一时,我们才需要标记该评论
- 客户要求更新/ETA/状态/跟进正在进行的项目;
- 客户给出了负面反馈,或者客户体验团队未能满足客户对交付项目的期望;
- 客户感到沮丧、愤怒或困惑;
- 客户要求紧急交付项目或中期可交付成果;
此外,即使在抓取了 Basecamp 上的所有评论后,我们也只获得了 3500 条客户评论。 注释结果仅产生 540 条负面评论,其余均为正面评论。
在 EDA 期间,我们分析到一些评论长达 100-200 个单词。 这些是客户对交付项目的反馈。 在大多数反馈中,只有一部分文本是负面的。 然而,由于文本截断,该负面部分被忽略,我们的模型将文本预测为正面。
此外,增加截断长度会恶化我们的结果。 为了克服这个问题,文本被标记化为单独的句子。 这些单独的句子被再次标记,产生 760 条负面句子和 9905 条正面句子。 这是不平衡数据集的经典示例。 我们包含了一些来自 SST2 的负面文本,以确保数据集的平衡。
进一步添加数据帮助我们解决了小数据集和不平衡数据问题。 它还有助于我们捕捉人类常见的负面情绪。
我们的最终数据集如下所示 - 9905 条正面评论和 2760 条负面评论,这帮助我们实现了 92.5% 的准确率。
由于我们的大部分负面评论来自 SST2,因此我们采用了持续重新训练的方法来改进我们的分类模型。 我们生成了前三个月模型预测的所有正面和负面消息的每周摘要。 我们手动分析了此摘要,并识别出误报 (FP)。 然后将这些 FP 馈送到我们的模型中以进行重新训练和性能增强。 这将我们模型的准确率提高到 97%。