要开发理想的解决方案需要什么? 面对新的数据科学问题时,我经常会问自己这个问题。令人惊讶的是,答案始终如一——“数据。”
在我整个职业生涯中,最具挑战性的任务一直是寻找完美的数据。说实话,我从未成功过。
完美的数据集存在吗?
但,究竟什么是完美的数据?简单来说,数据可以被分为良好的训练集和验证集,以训练在生产中表现良好且随时间稳健的模型。如果你的数据集在训练模型时不好,实时结果将与你实验观察到的结果显著不同。
现实世界的数据是杂乱的,很少是结构化的,不平衡的,缺失信息,有噪声,有时还被错误标记。此外,还可能存在没有数据或实际数据比例显著较低的情况。此外,在某些情况下,创建高质量数据集的成本可能很高。
与不平衡数据集合作的个人经历
在这个故事中,我将分享我在数据科学家职业生涯的第一个项目中遇到的挑战。
我在一个文本分类项目中工作,将客户的评论分为正面或负面。这些评论是我们与客户在Basecamp上日常交流的一部分。
与流行观点相反,这个问题并不简单。
首先,负面评论的定义非常特定。
只有当评论表现出以下意图之一时,我们才需要将其标记为负面
- 客户正在请求对正在进行的项目进行更新/预计时间/状态/后续跟进;
- 客户给出了负面反馈,或者客户体验团队未能满足客户对交付物品的期望;
- 客户感到沮丧、愤怒或困惑;
- 客户要求紧急交付项目或中间交付成果;
此外,尽管我们从Basecamp中抓取了所有评论,但我们只得到了3500条客户评论。标注结果只产生了540条负面评论,其余都是正面评论。
在探索性数据分析(EDA)过程中,我们发现有些评论长达100-200个单词。这些是客户对交付物品的反馈。在这些反馈中,大多数只有部分文本是负面的。然而,由于文本截断,这部分负面内容被忽略,我们的模型预测文本为正面。
此外,增加截断长度降低了我们的结果。为了克服这个问题,我们将文本分解为单个句子。这些单个句子再次被标记,结果产生了760条负面评论和9905个单个正面句子。这是一个典型的数据不平衡示例。我们包括了一些来自SST2的负面文本,以确保数据集平衡。
进一步的数据添加帮助我们解决了小数据集和数据不平衡的问题。它还有助于我们捕捉人类的常见负面情感。
我们的最终数据集看起来是这样的 - 9905条正面评论和2760条负面评论,这有助于我们实现92.5%的准确率。
由于我们的大部分负面评论都来自SST2,我们采用了持续重新训练的方法来完善我们的分类模型。我们为前三个月内模型预测的所有正面和负面消息生成了一个每周摘要。我们手动分析了这个摘要并确定了假阳性(FP)。然后,这些FP被输入到我们的模型中进行重新训练和性能提升。这提高了我们模型的准确率到97%。