数据科学的三种时代-何时使用传统机器学习-深度学习或大型语言模型-以一个例子解释-

数据科学的三种时代:何时使用传统机器学习、深度学习或大型语言模型(以一个例子解释)

数据科学的三种时代:何时使用传统机器学习、深度学习或大型语言模型

宇宙中最棒的歌曲之一(由有史以来最标志性的歌手之一创作)说这个:

希望我能回到过去

并改变这些年份

我正在经历变化

黑色撒旦教 - 变化

这首歌非常震撼人心,讲述了生活如何在你面前迅速改变。

那首歌是关于破碎的心和爱情故事。然而,它也让我想起了作为数据科学家,我在过去十年职业生涯中经历的职业变化:

  • 当我开始学习物理时,当有人说“Transformer”时,我唯一想到的就是变形金刚。对我来说,机器学习就是线性回归、SVM、随机森林等等。[2016]

  • 当我在大数据和复杂系统物理领域攻读硕士学位时,我第一次听说“BERT”以及当时看起来非常有前途的各种深度学习技术。最早的 GPT 模型出现了,它们看起来非常有趣,尽管没有人预料到它们会像今天这样强大。[2018-2020]

  • 快进到我现在作为全职数据科学家的生活。今天,如果你不知道 GPT 是什么,从未读过“注意力即一切”,那么你通过数据科学系统设计面试的机会非常小。[2021 – today]

当人们说,与数据打交道的人和 10 年前(甚至 5 年前)的日常生活工具实质上不同时,我完全同意。我不赞同的是,过去使用的工具应该被抹去,仅仅因为现在似乎可以用 GPT、LLM 或代理 AI 解决所有问题。

本文的目标是考虑一个单一的任务,即对推文的爱情/仇恨/中性意图进行分类。特别是,我们将使用传统机器学习、深度学习大型语言模型来完成这项任务。

我们将亲自动手使用 Python,并描述为什么以及何时使用每种方法。希望在这篇文章之后,你能学到:

  1. 在早期使用的工具应该仍然被考虑、研究和在某些时候采用。

  2. 在选择最适合您用例的算法时,应评估延迟、准确性和成本

  3. 数据科学家世界中的变化是必要的,应该无畏地接受。

让我们开始吧!

1. 用例

我们正在处理的情况实际上在数据科学/人工智能应用中非常普遍:情感分析。这意味着,给定一段文本,我们想要推断出该文本作者的“感觉”。这在需要收集关于某个对象、电影、你推荐的物品等的反馈的情况下非常有用。

在这篇博客文章中,我们使用了一个非常“著名”的情感分析示例,即对推文背后的感觉进行分类。由于我想要更多的控制,我们不会使用从网络上抓取的有机推文(其中标签不确定)。相反,我们将使用由大型语言模型生成的内容,我们可以控制。

这种技术还允许我们调整问题的难度和多样性,并观察不同的技术如何反应。

  • 简单情况:爱慕的推文听起来像明信片,恨的推文直截了当,中立的短信谈论天气和咖啡。如果一个模型在这里挣扎,那么其他事情可能出了问题。

  • 更困难的情况:仍然是爱、恨、中立,但现在我们注入了讽刺、混合语气和需要关注上下文的微妙暗示。我们还有更少的数据,以便有一个更小的数据集进行训练。

  • 非常困难的情况:我们转向五种情绪:爱、恨、愤怒、厌恶、嫉妒,因此模型必须解析更丰富、更复杂的句子。此外,我们没有条目来训练数据:我们无法进行任何训练。

我已经生成了数据,并将每个文件放入我为该项目创建的公共GitHub 文件夹中的特定文件夹[数据]。

我们的目标是构建一个智能分类系统,它能够有效地捕捉推文背后的情感。但我们该如何做到呢?让我们来找出答案。

2. 系统设计

总是极有帮助考虑的图片是以下这个:

图片

由作者制作的照片

在机器学习系统中,精确度延迟扩展性形成一个三角形。你只能同时完全优化其中的两个。

你可以拥有一个非常精确的模型,它能够很好地扩展到数百万条条目,但它的速度不会很快。你可以拥有一个快速扩展到数百万条条目的模型,但它的精确度不会很高。你也可以拥有一个既精确又快速的模型,但它不会很好地扩展。

这些考虑是从具体问题中抽象出来的,但它们有助于指导构建哪种机器学习系统设计。我们稍后会回到这个问题。

此外,我们模型的强大程度应该与我们的训练集大小成比例。一般来说,我们试图避免在测试集(著名的过拟合)增加的情况下减少训练集错误。

图片

由作者制作的照片

我们不希望处于欠拟合或过拟合的区域。让我解释一下原因。

简单来说,当你的模型太简单而无法学习数据中的真实模式时,就会发生欠拟合。这就像试图通过螺旋画一条直线。过拟合则相反。模型学习训练数据得太好了,包括所有的噪声,因此在它已经看到的数据上表现很好,但在新数据上表现很差。最佳点是在中间地带,你的模型理解结构而不去记忆它。

我们还会回到这个问题。

3. 简单情况:传统机器学习

我们从最友好的场景开始:一个由我们生成并标记的、高度结构化的 1000 条推文数据集。三个类别(正面、中性、负面)故意保持平衡,语言非常明确,每一行都生活在干净的 CSV 文件中。

让我们从一段简单的导入代码块开始。

让我们看看数据集的样子:

作者制作

作者制作的照片

现在,我们预计这不会扩展到数百万行(因为数据集结构太单一,无法多样化)。然而,我们可以为这个微小且特定的用例构建一个非常快速且准确的方法。让我们从建模开始。需要考虑的三个主要点:

  1. 我们使用 20%的数据集作为测试集进行训练/测试分割

  2. 我们将使用TF-IDF方法来获取单词的嵌入。TF-IDF 代表词频-逆文档频率。这是一种经典技术,通过根据每个词在文档中的重要性相对于整个数据集的重要性来给每个词赋予权重,将文本转换为数字。

  3. 我们将结合两种机器学习模型:逻辑回归支持向量机,来自scikit-learn。逻辑回归简单且可解释,通常用作文本分类的强大基线。支持向量机专注于找到类别之间的最佳边界,并且当数据不太嘈杂时通常表现非常好。

并且两种模型的表现基本上是完美的。

作者制作

作者制作的照片

对于这个非常简单的情况,我们有一个 1000 行的一致数据集,传统方法就能完成工作。不需要像 GPT 这样的数十亿参数模型。

4. 困难情况:深度学习

第二个数据集仍然是合成的,但它是故意设计得让人烦恼。标签仍然是喜爱、厌恶和中立,但推文倾向于讽刺、混合语气和反话。更重要的是,训练池较小,而验证切片保持较大,因此模型在更少的证据和更多的模糊性下工作。

现在我们有了这种歧义,我们需要拿出更大的武器。有一些深度学习嵌入模型在这些情况下保持了强大的准确性,并且仍然可以很好地扩展(记住三角形和错误与复杂性的关系图!)。特别是,深度学习嵌入模型从上下文中学习单词的意义,而不是将它们视为孤立的标记。

对于这篇博客文章,我们将使用BERT,这是最著名的嵌入模型之一。让我们首先导入一些库:

…以及一些辅助工具。

多亏了这些功能,我们可以快速评估我们的嵌入模型与 TF-IDF 方法的比较。

图片 1

图片由作者制作

正如我们所见,TF-IDF 模型在正标签上的表现极差,而使用嵌入模型(BERT)时则保持了高精度。

5. 非常困难的案例:LLM 代理

好吧,现在让我们把事情变得非常困难:

  1. 我们只有100 行

  2. 我们假设我们不知道标签,这意味着我们无法训练任何机器学习模型。

  3. 我们有五个标签:嫉妒、恨、爱、厌恶、愤怒。

图片 2

由于我们无法训练任何东西,但我们仍然想进行分类,我们必须采用某种方法,这种方法已经包含了一些分类。大型语言模型是这种方法的最佳例子。

注意,如果我们为其他两个案例使用了 LLM,那就相当于用大炮打苍蝇。但在这里,这是完全合理的:任务具有挑战性,我们没有其他任何聪明的方法去做,因为我们无法训练我们的模型(我们没有训练集)。

在这种情况下,我们拥有大规模的准确性。然而,API 需要一些时间,所以我们必须等待一秒钟或两秒钟,直到响应返回(记住三角形!)。

让我们导入一些库:

这是分类 API 调用:

我们可以看到,LLM 在分类工作中表现得非常出色:

6. 结论

在过去十年中,数据科学家的角色发生了巨大的变化,就像技术本身一样。这可能会让人想到只是使用最强大的工具,但这对许多情况来说并不是最佳途径。

我们不是一开始就寻求最大的模型,而是通过一个简单的视角测试了一个问题:准确性、延迟和成本。

特别是,以下是我们的步骤,一步一步来:

  • 我们定义了我们的用例为推文情感分类,旨在检测爱、恨或中立意图。我们设计了三个难度递增的数据集:一个干净的,一个讽刺的,和一个零训练的。

  • 我们使用 TF-IDF 和逻辑回归以及 SVM 解决了简单案例。推文清晰直接,两种模型都表现几乎完美。

  • 我们进入了更复杂的难题,其中讽刺、混合语气和微妙语境使得任务更加复杂。我们使用了 BERT 嵌入来捕捉超越单个单词的意义。

  • 最后,对于没有训练数据的额外难题,我们使用了大型语言模型通过零样本学习直接对情绪进行分类

每一步都展示了正确的工具取决于问题。当数据结构化时,传统机器学习快速且可靠。深度学习模型在意义隐藏在行间时提供帮助。当你没有标签或需要广泛泛化时,大型语言模型非常强大。

7. 在你出发之前!

再次感谢你抽出宝贵时间。这对我们意义重大❤️

我的名字是皮埃罗·帕亚尔乌恩加,就是我这个人:

图片由作者制作

我来自意大利,拥有辛辛那提大学的博士学位,并在纽约市的The Trade Desk担任数据科学家。我在 TDS 和领英上撰写关于人工智能、机器学习以及数据科学家角色演变的文章。如果你喜欢这篇文章并想了解更多关于机器学习的内容,以及想跟随我的研究,你可以:

A. 在领英上关注我,我在那里发布所有我的故事

B. 在GitHub上关注我,在那里你可以看到我所有的代码

C. 如果有问题,你可以通过以下邮箱联系我:piero.paialunga@hotmail

posted @ 2026-03-28 09:59  布客飞龙III  阅读(2)  评论(0)    收藏  举报