原文:KDNuggets
自然语言处理中的 N-gram 语言建模
原文:
www.kdnuggets.com/2022/06/ngram-language-modeling-natural-language-processing.html
介绍
我们的前三个课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业生涯
2. 谷歌数据分析专业证书 - 提升您的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持您的组织进行 IT 管理
语言建模用于确定单词序列的概率。这种建模有大量应用,如语音识别、垃圾邮件过滤等[1]。
自然语言处理(NLP)
自然语言处理(NLP)是人工智能(AI)与语言学的融合。它用于使计算机理解用人类语言书写的单词或陈述。NLP 的开发旨在使与计算机的工作和沟通变得更简单、更令人满意。由于所有计算机用户无法完全掌握机器的特定语言,NLP 在那些没有时间学习新机器语言的用户中表现更好。我们可以将语言定义为一组规则或符号。符号组合用于传达信息,它们受规则集合的支配。NLP 被分为两个部分:自然语言理解和自然语言生成,这涉及理解和生成文本的任务。NLP 的分类如图 1 所示[2]。
图 1 NLP 的分类
语言建模的方法
语言建模的分类如下:
统计语言建模:在这种建模中,开发了概率模型。这个概率模型预测序列中的下一个单词。例如 N-gram 语言建模。该建模可用于消歧输入。它们可以用于选择可能的解决方案。这种建模依赖于概率理论。概率是预测某事发生的可能性。
神经语言建模:神经语言建模比经典方法在独立模型以及当模型融入更大模型中,如语音识别和机器翻译等挑战性任务中,均能取得更好的结果。执行神经语言建模的一种方法是通过词嵌入[1]。
NLP 中的 N-gram 建模
N-gram 是在自然语言处理建模中用于表示 N 个词序列的模型。以建模的语句为例:“我喜欢阅读历史书籍和观看纪录片”。在一元模型(unigram)中,序列由一个词构成。对于上述语句,在一元模型中可以是“I”、“love”、“history”、“books”、“and”、“watching”、“documentaries”。在二元模型(bi-gram)中,序列由两个词构成,即“I love”、“love reading”或“history books”。在三元模型(tri-gram)中,序列由三个词构成,即“I love reading”、“history books”或“and watching documentaries”[3]。N-gram 模型的示意图(N=1,2,3)见下图 Figure 2 [5]。
图 2 一元、二元和三元模型
对于 N-1 个词,N-gram 模型预测可以跟随序列的最常出现的词。该模型是一种概率语言模型,基于文本集合进行训练。该模型在应用中非常有用,例如语音识别和机器翻译。简单的模型有一些局限性,可以通过平滑、插值和回退进行改进。因此,N-gram 语言模型的目标是找到词序列的概率分布。考虑以下句子:“There was heavy rain”和“There was heavy flood”。通过经验可以说,第一个句子更好。N-gram 语言模型会指出“heavy rain”出现的频率高于“heavy flood”。因此,第一个句子更可能出现,并会被该模型选择。在一元模型中,模型通常依赖于词的频率,而不考虑之前的词。在二元模型中,仅考虑前一个词来预测当前词。在三元模型中,考虑两个前一个词。在 N-gram 语言模型中计算以下概率:
P (“There was heavy rain”) = P (“There”, “was”, “heavy”, “rain”) = P (“There”) P (“was” |“There”) P (“heavy”| “There was”) P (“rain” |“There was heavy”).
由于计算条件概率并不实际,但通过使用“Markov Assumptions”,可以近似为二元模型[4]:
P (“There was heavy rain”) ~ P (“There”) P (“was” |“'There”) P (“heavy” |“was”) P (“rain” |“heavy”)
N-gram 模型在自然语言处理中的应用
在语音识别中,输入可能会受到噪声的干扰。这种噪声可能导致错误的语音到文本的转换。N-gram 语言模型通过使用概率知识来纠正噪声。同样,这种模型也用于机器翻译,以生成目标语言中更自然的语句。在拼写错误纠正方面,字典有时会无用。例如,“in about fifteen minutes”中的“minuets”在字典中是一个有效的词,但在短语中是不正确的。N-gram 语言模型可以纠正这种类型的错误。
N-gram 语言模型通常应用于词级别。它也用于字符级别进行词干提取,即分离根词和后缀。通过查看 N-gram 模型,可以对语言进行分类或区分美国和英国的拼写。许多应用程序从 N-gram 模型中受益,包括词性标注、自然语言生成、词语相似性和情感提取[4]。
N-gram 模型在 NLP 中的局限性
N-gram 语言模型也存在一些局限性。存在词汇外问题。这些词在测试时出现但在训练时未出现。一种解决方案是使用固定词汇表,然后将训练中的词汇外词转换为伪词。当应用于情感分析时,二元模型优于单元模型,但特征数量翻倍。因此,将 N-gram 模型扩展到更大的数据集或提高阶数需要更好的特征选择方法。N-gram 模型对长距离上下文的捕捉较差。研究显示,每 6-gram 之后,性能提升有限。
参考文献
-
(N-Gram 语言建模与 NLTK, 2021 年 5 月 30 日)
-
(Diksha Khurana, Aditya Koli, Kiran Khatter, Sukhdev Singh, 2017 年 8 月)
-
(Mohdsanadzakirizvi, 2019 年 8 月 8 日)
-
(N-Gram 模型, 3 月 29 日)
-
(N-Gram)
Neeraj Agarwal 是 Algoscale 的创始人,这是一家涵盖数据工程、应用人工智能、数据科学和产品工程的数据咨询公司。他在该领域有超过 9 年的经验,帮助了从初创公司到财富 100 强公司的广泛组织摄取和存储大量原始数据,从而将其转化为可操作的见解,以便做出更好的决策和更快的商业价值。
相关主题
我希望在机器学习博士学位之前掌握的九种工具
原文:
www.kdnuggets.com/2021/09/nine-tools-mastered-before-phd-machine-learning.html
comments
由 Aliaksei Mikhailiuk 提供,人工智能科学家
图片由作者提供。
我们的前三个课程推荐
1. Google 网络安全证书 - 快速进入网络安全职业道路。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你在 IT 领域的组织
尽管在推动技术进步中扮演了重要角色,学术界往往忽视工业成就。到我博士学位结束时,我意识到有许多伟大的辅助工具在学术界被忽视,但在工业界被广泛采用。
从个人经验来看,我知道学习和整合新工具可能会很无聊、令人害怕,可能会拖慢进度并使人气馁,特别是当当前的设置如此熟悉且有效时。
摆脱坏习惯可能很困难。对下面列出的每个工具,我都不得不接受我做事的方式是不够理想的。然而,在这个过程中,我也学到了有时候当下看不到的结果在后期会带来十倍的回报。
在下面,我将讨论一些我在研究和构建机器学习应用时发现非常有用的工具,这些工具既适用于学术研究,也适用于人工智能工程师。我将这些工具按其目的分为四个部分:环境隔离、实验跟踪、协作和可视化。
隔离环境
机器学习是一个极其快速发展的领域,因此常用的软件包经常更新。尽管开发者们努力工作,但新版本往往与其前身不兼容。这确实会带来很多麻烦!
幸运的是,有工具可以解决这个问题!
Docker
图片由作者提供。
这些 NVIDIA 驱动程序给你带来了多少麻烦?在我的博士学位期间,我有一台由大学管理的机器,定期更新。更新在晚上进行且没有任何通知。想象一下,当我发现第二天早上大部分工作与最新驱动程序不兼容时的惊讶。
尽管这些课程并非专门针对这一点,但 docker 可以帮助你避免这些特别在截止日期前的压力情况。
Docker 允许将软件封装在称为容器的包中。容器是独立的单元,具有自己的软件、库和配置文件。从简化的角度看,容器是一个独立的虚拟操作系统,具有与外界沟通的手段。
Docker 提供了大量现成的容器供你使用,无需对如何自己配置所有内容有广泛的了解,开始使用基础知识非常简单。
对于那些想要快速入门的人,可以查看这个 教程。此外,Amazon AWS 也很好地解释了为什么以及如何在机器学习中使用 Docker,可以在 这里 查看。
Conda
现在重复使用别人的代码已经成为一种新常态。有人在 GitHub 上创建了一个有用的代码库,你可以克隆代码,安装并得到你的解决方案,而无需自己编写任何东西。
不过有一个小不便。当多个项目一起使用时,你会遇到包管理的问题,因为不同的项目需要不同版本的包。
我很高兴在我的博士研究中发现了 Conda。Conda 是一个包和环境管理系统。它允许创建多个环境,并快速安装、运行和更新包及其依赖项。你可以快速切换隔离的环境,并始终确保你的项目仅与预期的包进行交互。
Conda 提供了自己的 教程 ,介绍如何创建你的第一个环境。
运行、跟踪和记录实验
获取博士学位所需的两个关键支柱是严谨性和一致性,没有这两个条件,在应用领域获得博士学位几乎是不可能的。如果你曾经尝试过使用机器学习模型,你可能知道跟踪测试参数是多么容易丢失。以前,参数跟踪是在实验室笔记本中进行的,我相信这些在其他领域仍然非常有用,但在计算机科学领域,我们现在拥有比这更强大的工具。
Weights and biases
wandb 面板的一组简单指标的快照——训练损失、学习率和平均验证损失。注意你还可以跟踪系统参数!图片由作者提供。
experiment_res_1.csv
experiment_res_1_v2.csv
experiment_res_learning_rate_pt_5_v1.csv
...
这些名字看起来熟悉吗?如果是,那么你的模型跟踪技能应该提高了。这就是我在博士第一年的情况。作为借口,我应该说我有一个电子表格,在那里我记录每个实验的详细信息和所有相关文件。然而,这仍然非常复杂,每次参数变更的记录不可避免地会影响后处理脚本。
Weights and Biases (W&B/wandb) 是我发现得比较晚的一个宝藏工具,但现在我在每个项目中都使用它。它让你能够用几行代码跟踪、比较、可视化和优化机器学习实验。它还允许你跟踪你的数据集。尽管选项众多,我发现 W&B 易于设置,并且具有非常友好的网页界面。
对有兴趣的人来说,可以查看他们的快速设置教程 这里。
MLflow
作者提供的图片。
类似于 W&B,MLFlow 提供了记录代码、模型和数据集的功能,你的模型在这些数据集上进行训练。虽然我主要用它来记录数据、模型和代码,但它提供的功能远不止这些。它允许管理整个 ML 生命周期,包括实验、可重复性和部署。
如果你想将它快速集成到你的模型中,请查看这个 教程。Databricks 还分享了关于 MLflow 的一个非常好的 解释。
Screen
在博士生涯的前半年,我常常选择将实验留到过夜,希望机器不会进入睡眠状态。当工作转到远程时,我会担心 ssh 会话中断——代码已经运行了好几个小时,几乎收敛了。
我对 screen 功能的了解较晚,因此在早晨总是不能避免半成品结果。但在这种情况下,确实是晚做总比不做好。
Screen 让你从单一的 ssh 会话中启动和使用多个 shell 会话。用 screen 启动的进程可以从会话中分离,然后在稍后的时间重新附加。因此,你的实验可以在后台运行,无需担心会话关闭或终端崩溃。
功能总结 这里。
协作
学术界以缺乏有效团队管理机制而臭名昭著。这在一定程度上是由于对个人贡献的严格要求。然而,机器学习的发展速度需要共同努力。以下是两个相当基础的工具,对于有效沟通特别是在远程工作的新领域中会非常有用。
GitHub
相当基础,对吧?在看到学术界人们如何跟踪他们的代码的种种恐怖之后,我不能更强调掌握版本控制的重要性。不再有名为 code_v1、code_v2 的文件夹。
Github 提供了一个非常有用的代码跟踪、合并和审查框架。每当一个团队构建一个深度图像质量指标时,每个成员可以有自己的代码分支并行工作。解决方案的不同部分可以合并在一起。每当有人引入一个 bug 时,可以很容易地恢复到工作版本。总体而言,我认为 git 是我在这篇文章中提到的所有工具中最重要的。
查看这个逐步指南了解如何快速启动。
Lucidchart
最近我接触到了 Lucidchart,此前我一直在使用draw.io— 一个非常简单的图表创建界面。Lucidchart 强大了千倍,功能也更为多样。它的主要优势在于协作共享空间和在图表旁边做笔记的能力。想象一下一个巨大的在线白板,配有一整套模板。
要快速入门,请查看 Lucidchart 的这个tutorial页面。
可视化
许多论文提交,特别是那些不成功的案例,教会了我演示往往和结果一样重要。如果审稿人通常没有太多时间,不理解文本,工作就会直接被拒绝。匆忙制作的图像会留下不好的印象。有人曾经告诉我:“如果你无法制作图表,我怎么能相信你的结果?”我不同意这个说法,但我确实同意印象很重要。
Inkscape
一图胜千言(实际上,纠正 84.1字)。
Inkscape 是一款免费的矢量图形软件。事实上,我在本科时的网页开发课程中学会了使用它。然而,我在攻读博士学位期间才真正学会了充分利用它——为论文制作那些漂亮的图像。
在 Inkscape 提供的所有功能中,特别有价值的是TexText扩展。使用这个软件包,你可以将你的latex公式无缝集成到图像中。
有大量的教程,然而对于基本功能,我推荐 Inkscape 团队提供的教程这里。
Streamlit
你是否曾经需要创建一个简单的网站来展示你的结果或一个简单的机器学习应用?只需几行 Python 代码,使用 Streamlit 就可以实现。
我发现它特别适用于论文补充材料,但它甚至可以在项目展示和客户演示中更加有用。
要快速入门,请查看这个教程。
总结及拓展
在攻读博士学位的同时,顺利进入行业并不容易。但这让我学到了几条重要的教训,希望我在博士学习的早期就能了解到这些。
最重要的一课是,好奇心和愿意学习和改变可以极大地影响你工作的质量。
以下是我在每个部分提到的教程的总结:
如果你喜欢这篇文章,请与朋友分享!要阅读更多机器学习和图像处理的话题,请按订阅!
我有没有遗漏什么?请随时留下注释、评论或直接给我发消息!
简介: Aliaksei Mikhailiuk 在计算机视觉、偏好聚合和自然语言处理领域拥有丰富的研究、开发、部署和维护机器学习算法的经验。
原文。经许可转载。
相关:
-
我在数据科学职业生涯三年中学到的三大重要课程
-
数据科学、数据可视化和机器学习的 38 个顶级 Python 库
-
数据科学工具的受欢迎程度,动画版
更多相关话题
NIPS 2017 重点与总结笔记
原文:
www.kdnuggets.com/2017/12/nips-2017-key-points-summary-notes.html
评论
NIPS 2017上周在长滩举行,根据所有人的评价,它确实没有辜负期待。虽然我未能亲自到场(我希望能去),但布朗大学的三年级博士生David Abel,确实出席了,并且他辛勤地编写和整理了一份精彩的 43 页笔记,这些笔记只能用令人自愧不如来形容。他已经将这些笔记以 PDF 形式提供给所有人,并鼓励进行传播。
虽然 David 显然无法参加 NIPS 上的每一个讲座和教程,但他显然安排得非常紧凑,我们可以通过他的经历间接感受那种体验,即使是事后。
我们的前三课程推荐
1. Google 网络安全证书 - 快速进入网络安全职业道路。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你所在组织的 IT 需求
代表所有未能在 Twitter 显示名称上临时添加"@ #NIPS2017"的我们,David,谢谢你的努力。如果你有兴趣阅读这些笔记的讨论,可以在这里找到。
另值得注意的是,David 在 NIPS 的层次化 RL 研讨会上展示了一篇题为"朝向良好的终身学习抽象"的论文(David Abel, Dilip Arumugam, Lucas Lehnert, Michael L. Littman)。
以下是 David 笔记中的几个亮点(重点突出),以及一些相关讲座的视频。
阿里·拉希米的时间测试讲座。 这引发了会议期间的大量讨论。在下半场,他提出了一些关于当前机器学习研究状态的看法,呼吁我们的方法更加严格。这在会议期间被广泛讨论,(大多数)人支持阿里的观点(至少是我交谈过的那些人),也有一些人表示他的观点没有根据,因为他似乎针对的一些方法(主要是深度学习)在实践中效果很好。我的个人看法是,他并不一定在呼吁理论来支持我们的方法,而是对严格性的呼吁。我认为对严格性的呼吁是深刻的。我认为说有效的实验对 ML 社区是有益的毫无争议。究竟这意味着什么,当然是有待辩论的(见下一个要点)。
乔厄尔·皮诺关于深度强化学习中的可重复性讲座。 一个实验表明,两种方法,假设我们称之为 A 和 B,在相同任务上取决于所选择的随机种子,相互主导。也就是说,A 在一个随机种子下实现了统计上显著优于 B 的表现,而这种主导性在不同的随机种子下则会被翻转。我非常喜欢这项工作,并且认为这正好是时候。特别是在深度强化学习中,大多数结果的形式是:“我们的算法在 X 和 Y 任务上表现更好”。
乔什·特嫩鲍姆正在讲解如何从人类行为中逆向工程智能。
Warneken 和 Tomasello 的论文[55]讨论了婴儿的 emergent helping behavior。他展示了一个视频,视频中一个婴儿主动去帮助一个成人,没有人告诉他这样做。太可爱了!
目标:逆向工程常识。
工具:概率程序。能够生成世界下一状态的模型,充当近似的“脑中的游戏引擎”,真的很强大。可能是缺失的部分。直观物理学和直观心理学的混合。
使用概率程序进行常识工程:
- 什么?建模程序(脑中的游戏引擎)。
- 如何?用于推理和模型构建的元程序,在多个时间尺度上工作,权衡速度、可靠性和灵活性。
凯特·克劳福德:偏见的问题
凯特真了不起!今天她讲述了 AI/ML 中的偏见问题。
收获:偏见是一个高度复杂的问题,渗透到机器学习的每个方面。我们必须问:我们的工作将会使谁受益,谁可能受到伤害?要把
首先考虑公平性,我们必须问这个问题。
相关内容:
-
免费观看 2017 年开放数据科学最佳演讲
-
2017 年旧金山 AI 会议的主要内容 – 第 1 天
-
2017 年开放数据科学会议(ODSC)西部大会的主要收获
更多相关主题
一种分析 Twitter、特朗普和脏话的 NLP 方法
原文:
www.kdnuggets.com/2016/11/nlp-approach-analyzing-twitter-trump-profanity.html/2
第二步:收集数据
现在是时候调用我们的脚本,并用查询‘Donald Trump OR Trump’来抓取包含‘Donald Trump’或‘Trump’的推文,然后将文件写入数据文件夹,名为‘Donald-Trump-OR-Trump.csv’。
python twitter_pull_data.py 'Donald Trump OR Trump'
尝试重新运行脚本,但这次将‘Hillary Clinton OR Hillary’作为查询传入。
在数据文件夹中有两个 CSV 文件后,我们现在可以创建一个名为 profanity_analysis.py 的脚本。
第三步:数据预处理
在接下来的脚本中,我们将首先清理数据,去除表情符号、标签、转发等。然后,我们将深入探讨英语停用词和脏话算法。
清理我们的推文就到此为止!
第四步:检查推文中的脏话
现在,我们将查看脏话检测算法,并发现推文中的脏话。这个算法基于来自noswearing.com的约 340 个单词,通过基本的字符串匹配来捕捉脏话。查看脏话算法页面以了解更多算法的细节,并了解如何通过添加自己的攻击性单词来定制单词列表,因为有趣的新攻击性俚语每天都在不断增加到英语中。不相信?看看Urban Dictionary上出现的新词汇。
脏话函数非常简单明了:
你只是传入已清除英语停用词的单词列表。我们将它们合并成一个语料库,因为我们对所有推文的总体脏话感兴趣,而不是每条推文的脏话。我们的函数 profanity()打印出算法结果以及总脏话数量。在撰写本文时,查询‘Donald Trump OR Trump’有 30 个脏话,而‘Hillary Clinton OR Clinton’返回 8 个脏话。
当我们提取 Twitter 数据时,还获取了 user_id 和转发次数。这很有用,因为你可能想通过一些轻度分析来评估推文的受欢迎程度,从而了解推文是否因脏话使用的多少而更受欢迎或不受欢迎。
如果你想查看完整代码,请查看我们的示例应用在 GitHub 上!
下一步
一定要查看我们的其他 NLP 算法,例如social sentiment analysis或LDA(标签)。像AnalyzeTweets这样的微服务将上述算法与一个检索推文的算法相结合。该算法返回每条推文的负面和正面情绪,以及每条推文的负面和正面 LDA。你可以创建无尽的组合进行快速探索性分析,或添加像脏话检测或Nudity Detection这样的算法到你的应用程序中,确保内容适合家庭观看。
享受探索平台的过程,如有任何问题,请随时联系!
简介:Stephanie Kim 是 Algorithmia 的开发者推广专家。
原文。已获得许可重新发布。
相关:
-
特朗普现象:基于推特的回顾
-
使用自然语言处理探索社交媒体多样性
-
人类向量:结合讲者嵌入让你的机器人更强大
我们的前 3 名课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你的组织 IT
更多相关主题
NLP 与计算机视觉的整合
原文:
www.kdnuggets.com/2019/06/nlp-computer-vision-integrated.html
评论
由Sciforce提供。
我们的三大课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业轨道。
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT 工作
整合与跨学科性是现代科学和工业的基石。最近尝试将一切结合在一起的一个例子是计算机视觉与自然语言处理(NLP)的整合。这两个领域都是机器学习研究中最活跃的发展领域之一。然而,直到最近,它们一直被视为独立领域,彼此之间几乎没有相互受益的方式。现在,随着多媒体的扩展,研究人员开始探索将这两种方法应用于实现单一结果的可能性。
多模态世界与符号学
人类最自然的方式是从不同来源提取和分析信息。这符合符号学理论(Greenlee 1978)——研究符号及其在不同层次上意义的关系。符号学研究符号与意义之间的关系,符号之间的形式关系(大致相当于语法)以及人类根据上下文解读符号的方式(语言学理论中的语用学)。如果我们仅考虑视觉符号,那么这会得出结论,符号学也可以通过计算机视觉来处理,从中提取有趣的符号以供自然语言处理实现相应的意义。
计算机视觉及其与 NLP 的关系
Malik 将计算机视觉任务总结为 3Rs(Malik 等,2016):重建、识别和重组。
重建 指通过结合来自多个视角、阴影、纹理或直接深度传感器的信息,估计产生特定视觉图像的 3D 场景。该过程结果是一个 3D 模型,例如点云或深度图像。
识别 涉及为图像中的对象分配标签。对于 2D 对象,识别的例子包括手写识别或人脸识别,而 3D 任务则解决从点云中识别对象等问题,这有助于机器人操作。
重组 指的是从底层到顶层的视觉过程,当原始像素被分割成表示图像结构的组时。低层次视觉任务包括边缘、轮廓和角点检测,而高层次任务涉及语义分割,这与识别任务部分重叠。
识别与语言的联系最为紧密,因为它的输出可以被解释为词语。例如,物体可以用名词表示,活动用动词表示,物体属性用形容词表示。从这个意义上说,视觉和语言通过语义表示相互连接(Gardenfors 2014;Gupta 2009)。
自然语言处理及其与计算机视觉的关系
与计算机视觉相比,NLP 任务更为多样化,包括语法(如形态学和组合性)、语义(作为意义的研究,包括词语、短语、句子和话语之间的关系)以及语用学(作为自然交流中意义的细微差别的研究)。
一些复杂的 NLP 任务包括机器翻译、对话接口、信息提取和摘要。
换句话说,从图像到词语的转换被认为是最接近机器翻译的。然而,这种在低层像素或图像轮廓与高层次词语或句子描述之间的“翻译”——即桥接语义差距(Zhao 和 Grosky 2002)——依然是一个广泛的鸿沟。
计算机视觉与 NLP 的整合范围
视觉和语言的融合并不是通过自上而下的方式顺利进行的,研究人员提出了一系列原则。集成技术主要是自下而上的发展,一些先驱者识别出一些较为具体和狭窄的问题,尝试了多种解决方案,找到了令人满意的结果。
新的轨迹开始于对当前文件大多数都是多媒体的理解,即它们包含互相关联的图像、视频和自然语言文本。例如,一篇典型的新闻文章包含记者的文字和与新闻内容相关的照片。此外,可能还会有一个包含记者的剪辑视频或事件发生现场的快照。语言和视觉数据提供了两组信息,这些信息结合成一个完整的故事,为适当且明确的沟通奠定了基础。
这种理解催生了将综合方法应用于视觉和文本内容的多个领域,不仅在处理多媒体文件时,而且在机器人技术、视觉翻译和分布式语义学领域也有应用。
多媒体文件
与多媒体相关的 NLP 和计算机视觉任务主要分为三个类别:视觉属性描述、视觉描述和视觉检索。
视觉属性描述:相比于分类,描述性方法通过分配属性来总结对象属性。这些属性可以是易于识别的二进制值,或通过学习排序框架描述的相对属性。关键在于,这些属性将提供一组上下文,作为识别特定对象属性的知识源。属性词成为一种中间表示,有助于弥合视觉空间和标签空间之间的语义差距。
视觉描述:在现实生活中,视觉描述的任务是提供图像或视频捕捉。人们认为,句子能比一堆无序的词汇提供更具信息量的图像描述。为了生成描述图像的句子,应提取一定量的低级视觉信息,这些信息提供了基本的“谁对谁做了什么,在哪里以及如何做的”的信息。从词性角度来看,“名词、动词、场景、介词”四元组可以代表从视觉检测器提取的含义。视觉模块提取的对象可以是句子中的主语或宾语。然后使用隐马尔可夫模型从有限的四元组集合中解码出最可能的句子,并结合一些语料库指导的动词和场景(介词)预测的先验信息。含义通过对象(名词)、视觉属性(形容词)和空间关系(介词)来表示。然后,通过使用网页规模的 n-grams 来确定概率,借助短语融合技术生成句子。
视觉检索:基于内容的图像检索(CBIR)是多媒体领域的另一个应用,它利用以查询字符串或概念形式的语言。通常,图像通过低级视觉特征如颜色、形状和纹理进行索引。CBIR 系统尝试用词语标注图像区域,类似于语义分割,因此关键词标签接近人类的解释。CBIR 系统使用关键词来描述图像以进行图像检索,而视觉属性则描述图像以进行图像理解。然而,视觉属性为 CBIR 提供了一个适合的中间层,并适应目标领域。
机器人技术
机器人视觉:机器人需要通过多种交互方式感知其周围环境。类似于人类通过使用关于事物的知识(如单词、短语和句子)来处理感知输入,机器人也需要将感知到的图像与语言结合,以获得有关现实世界中物体、场景、动作或事件的相关知识,对其进行理解并执行相应的动作。例如,如果一个物体很远,人类操作员可能会口头请求采取行动以获得更清晰的视角。机器人视觉任务涉及如何让机器人通过对物体执行一系列操作来操控现实世界环境,使用硬件传感器(如深度摄像头或运动摄像头),并拥有周围环境的语言化图像,以响应口头指令。
情境语言:机器人使用语言来描述物理世界并理解其环境。此外,口语和自然手势是与机器人互动的更便捷方式,前提是机器人接受了理解这种互动模式的训练。从人的角度来看,这是一种更自然的互动方式。因此,机器人应该能够感知并将其环境感知的信息转化为使用语义结构的语言。最著名的表示意义的方法是语义解析(SP),它将单词转换为逻辑谓词。SP 尝试将自然语言句子映射到对应的意义表示,这可以是类似λ-演算的逻辑形式,使用组合类别语法(CCG)作为规则来组合构建解析树。
分布式语义
早期多模态分布式语义模型:分布式语义模型(DSM)背后的思想是相似上下文中的单词应具有相似的意义。因此,单词意义可以从单词与出现的上下文之间的共现统计中恢复。这种方法被认为对计算机视觉和自然语言处理有益,例如图像嵌入和词嵌入。DSM 被应用于联合建模基于视觉特征(如颜色、形状或纹理)和文本特征(如单词)的语义。常见的流程是将视觉数据映射到单词上,并在其上应用分布式语义模型,如 LSA 或主题模型。视觉属性可以近似于分布式语义模型的语言特征。
神经 多模态分布式语义模型:神经模型通过从数据中学习更好的分布表示,已经在视觉和语言方面超越了许多传统方法。例如,多模态深度玻尔兹曼机可以比主题模型更好地建模联合视觉和文本特征。此外,神经模型可以建模一些认知上合理的现象,如注意力和记忆。对于注意力,图像可以使用 CNNs 和 RNNs 最初给出图像嵌入表示。可以在其上放置一个 LSTM 网络,像状态机一样同时生成输出,例如图像标题或一次查看图像中的相关区域。对于记忆,常识知识被集成到视觉问答中。
自然语言处理与计算机视觉的未来整合
如果结合起来,这两个任务可以解决多个领域中的许多长期存在的问题,包括:
-
设计:在设计住宅、衣物、珠宝或类似物品时,客户可以口头或书面描述需求,这些描述可以自动转换为图像以便更好地可视化。
-
描述医学图像:计算机视觉可以被训练识别更细微的问题,并比人类专家更详细地观察图像。
-
将手语转换为语音或文本,以帮助听力障碍人士,并确保他们更好地融入社会。
-
制作一个可以看到周围环境并给出口头描述的系统,可以供盲人使用。
-
制作可以将口语内容转换为图像的系统,这可能在一定程度上帮助那些不能说话和听力障碍的人。
然而,由于视觉和语言的整合是一个根本的认知问题,因此该领域的研究应考虑认知科学,这可能提供有关人类如何整体处理视觉和文本内容并基于此创建故事的见解。
参考文献:
Gärdenfors, P. 2014. 意义的几何:基于概念空间的语义学。MIT 出版社。
Greenlee, D. 1978. 符号学与符号学研究。国际哲学研究。10 (1978),251–254。
Gupta, A. 2009. 超越名词和动词。 (2009)。
Malik, J., Arbeláez, P., Carreira, J., Fragkiadaki, K., Girshick, R., Gkioxari, G., Gupta, S., Hariharan, B., Kar, A. 和 Tulsiani, S. 2016. 计算机视觉的三大 R:识别、重建和重组。模式识别。
Shukla, D., Desai A.A. 整合计算机视觉与自然语言处理:问题与挑战。VNSGU 科学与技术期刊,第 4 卷,第 1 期,第 190–196 页。
Wiriyathammabhum, P., Stay, D.S., Fermüller C., Aloimonos, Y. 计算机视觉与自然语言处理:多媒体和机器人领域的最新方法。ACM 计算机调查。49(4):1–44
原文。经许可转载。
相关:
更多相关主题
使用 NLP 来改善你的简历
评论
由David Moore,金融技术实施专家
招聘人员正在使用越来越复杂的软件和工具来扫描和匹配简历与发布的职位和职位规格。如果你的简历(CV)是通用的,或者职位规格模糊和/或通用,这些工具可能会对你不利。人工智能确实在对抗你的职位申请,我不确定你是否知道或会接受这一点!但让我展示一些可以帮助你平衡机会的技巧。自然,我们将使用 NLP(自然语言处理)、Python 和一些 Altair 可视化。你准备好反击了吗?
设想你对在网上看到的一个好职位感兴趣。还有多少其他人看到过相同的职位?有大致相同的经验和资格吗?你认为有多少申请者申请了?会少于 10 个还是少于 1,000 个?
此外,考虑到面试小组可能只有 5 名强候选人。那么你如何‘筛选’出 995 份申请,以精炼并呈现出仅 5 名强候选人?这就是为什么我说你需要平衡机会,否则就会被淘汰!
处理 1,000 份简历(CV)
我想,首先,你可以将这些简历分成 3 或 5 堆。打印出来,并分配给人工阅读者。每个阅读者从他们的堆中选择一份。5 个阅读者就是 200 份简历——挑选出最好的一两份。阅读这些将需要很长时间,最终可能只会得出一个答案。我们可以使用 Python 在几分钟内阅读所有这些简历!
在 Medium 上的文章‘如何使用 NLP(Spacy)筛选数据科学简历’中演示了只需两行代码就能收集到那 1,000 份简历的文件名。
#Function to read resumes from the folder one by one
mypath='D:/NLP_Resume/Candidate Resume'
onlyfiles = [os.path.join(mypath, f) for f in os.listdir(mypath)
if os.path.isfile(os.path.join(mypath, f))]
变量‘onlyfiles’是一个 Python 列表,包含了通过 Python os 库获取的所有简历的文件名。如果你研究这篇文章,你还会看到如何基于关键词分析几乎自动对你的简历进行排名和淘汰。由于我们试图平衡机会,我们需要关注你所期望的职位规格和你当前的简历。它们匹配吗?
匹配简历和职位描述
为了平衡机会,我们希望扫描职位描述、简历,并测量匹配度。理想情况下,我们的输出能帮助你在游戏中调整策略。
阅读文档
由于这是你的简历,你可能有 PDF 或 DOCX 格式。Python 模块可以读取大多数数据格式。图 1 演示了如何将文档内容保存到文本文件中并读取这些文档。
图 1: 从磁盘读取文本文件并创建文本对象。图片由作者从 Visual Studio Code — Jupyter Notebook 中拍摄。
第一步总是打开文件并读取行。接下来的步骤是将字符串列表转换为单一文本,并在过程中进行一些清理。图 1 创建了变量 ‘jobContent’ 和 ‘cvContent’,这些变量代表一个包含所有文本的字符串对象。下一个代码片段展示了如何直接读取 Word 文档。
import docx2txt
resume = docx2txt.process("DAVID MOORE.docx")
text_resume = str(resume)
变量 ‘text_resume’ 是一个字符串对象,保存了简历中的所有文本,就像之前一样。你也可以使用 PyPDF2。
import PyPDF2
说到这里,已经有一系列选项供从业者阅读文档并将其转换为清洁处理过的文本。这些文档可能很长,很难阅读,而且坦白说也很枯燥。你可以从总结开始。
处理文本
我喜欢 Gensim 并经常使用它。
from gensim.summarization.summarizer import summarize
from gensim.summarization import keywords
我们通过读取一个 Word 文件创建了变量 ‘resume_text’。让我们对简历和职位发布进行总结。
print(summarize(text_resume, ratio=0.2))
Gensim.summarization.summarizer.summarize 将为你创建一个简洁的总结。
summarize(jobContent, ratio=0.2)
现在你可以阅读职位角色和你现有简历的整体总结!你是否错过了总结中强调的职位角色的任何信息?小的细节可以帮助你推销自己。你的总结文档是否有意义,并突出了你的核心素质?
也许仅仅是简明的总结是不够的。接下来,让我们衡量你的简历与职位要求的相似度。图 2 提供了代码。
图 2 — 匹配两个文档并给出相似度评分的代码。图片由作者提供。
大致来说,我们首先列出文本对象,然后创建 sklearn CountVectorizer() 类的实例。我们还导入了 cosine_similarity 度量,它帮助我们测量两个文档的相似度。‘你的简历与职位描述匹配约 69.44%’。这听起来很棒,但我不会因此自满。现在你可以阅读文档的摘要并获取相似度测量。情况正在改善。
接下来,我们可以查看职位描述中的关键词,并查看哪些在简历中匹配到了。我们是否遗漏了一些可以提高匹配度至 100% 的关键词?现在转到 spacy。到目前为止,这是一段相当曲折的旅程。Gensim、sklearn 现在还有 spacy!希望你没有感到头晕!
from spacy.matcher import PhraseMatcher
matcher = PhraseMatcher(Spnlp.vocab)
from collections import Counter
from gensim.summarization import keywords
我们将使用 spacy 的 PhraseMatcher 功能来匹配职位描述中的关键短语与简历中的内容。Gensim 关键词可以帮助提供这些短语以供匹配。图 3 显示了如何进行匹配。
图 3: 使用关键词和短语匹配来交叉引用文档。图片由作者提供。
使用图 3 中的代码片段,可以提供匹配的关键词列表。图 4 显示了总结这些关键词匹配的方法。使用 Collections 中的 Counter 字典。
图 4 — 使用集合。计数器来计算关键字的命中次数。图片由作者提供。
“reporting” 一词包含在职位描述中,而简历中有 3 次命中。职位发布中有哪些短语或关键字在简历中没有?我们可以添加更多吗?我使用 Pandas 来回答这个问题 — 你可以在图 5 中看到输出。
图 5 — 职位描述中的关键字在简历中未提及。图片由作者提供。
如果这是真的,那也很奇怪。文档级别的匹配度为 69.44%,但看看那些在简历中未提及的长列表的关键字。图 6 显示了提及的关键字。
图 6 使用 Pandas 匹配的关键字。图片由作者提供。
实际上,与职位规范的关键字匹配非常少,这使我对 69.44% 的余弦相似度度量表示怀疑。尽管如此,情况有所改善,因为我们可以看到职位规范中的关键字在简历中未出现。关键字匹配较少意味着你更有可能被淘汰。查看缺失的关键字,你可以立即加强简历,然后重新进行分析。不过,仅仅在简历中加入关键字会产生负面后果,你必须非常谨慎。你可能通过初步的自动筛选,但由于被认为写作技巧不足而被淘汰。我们确实需要对短语进行排名,并专注于职位规范中的核心话题或单词。
接下来我们来看排名短语。对于这个练习,我将使用我自己的 NLP 类以及之前使用过的一些方法。
from nlp import nlp as nlp
LangProcessor = nlp()
keywordsJob = LangProcessor.keywords(jobContent)
keywordsCV = LangProcessor.keywords(cvContent)
使用我自己的类,我从之前创建的职位和简历对象中恢复了排名短语。下面的代码片段提供了方法定义。我们现在使用 rake 模块来提取 ranked_phrases 和 scores。
def keywords(self, text):
keyword = {}
self.rake.extract_keywords_from_text(text)
keyword['ranked phrases'] = self.rake.get_ranked_phrases_with_scores()
return keyword
图 7 提供了方法调用的输出示意图。
图 7 — 职位发布中的排名短语。图片由作者使用自己的代码提供。
‘project management methodology — project management’ 排名为 31.2,因此这是职位发布中的最关键话题。简历中的关键短语也可以通过小的变动来打印出来。
for item in keywordsCV['ranked phrases'][:10]:
print (str(round(item[0],2)) + ' - ' + item[1] )
从简历和职位发布中读取顶部短语,我们可以问自己是否存在匹配或相似度的程度?我们当然可以运行一个序列来找出!以下代码创建了职位发布和简历中的排名短语之间的交叉引用。
sims = []
phrases = []
for key in keywordsJob['ranked phrases']:
rec={}
rec['importance'] = key[0]
texts = key[1] sims=[]
avg_sim=0
for cvkey in keywordsCV['ranked phrases']:
cvtext = cvkey[1]
sims.append(fuzz.ratio(texts, cvtext))
#sims.append(lev.ratio(texts.lower(),cvtext.lower()))
#sims.append(jaccard_similarity(texts,cvtext)) count=0
for s in sims:
count=count+s
avg_sim = count/len(sims)
rec['similarity'] = avg_sim
rec['text'] = texts
phrases.append(rec)
请注意,我们使用 fuzzy-wuzzy 作为匹配引擎。代码中还有 Levenshtein 比率和 jaccard_similarity 函数。图 8 提供了这可能是什么样子的示意图。
图 8 显示了职位描述与简历之间交叉引用的关键词。
“重要性”变量是来自简历的排名短语分数。“相似度”变量是模糊匹配的比率分数。术语“项目管理方法论”排名 31.2,但交叉引用评分的简历短语的平均分数仅为 22.5。尽管项目管理是职位的首要任务,但简历在不同的技术项上得分更高。你可以通过进行类似的练习来了解人工智能如何对待你的申请。
图 9 显示了简历中的术语重要性与影响力。图像由作者提供。
图 9 显示了另一种视角。通过处理词汇(单词),可以看到每个单词在职位描述中的重要性与在简历中出现的次数——特定单词在文档中的出现次数越多,影响力越大。词汇“财务”在职位描述中的重要性较低,但在简历中具有较高的影响力。这是一个财务人员在寻找 IT 工作吗?单词可能会在人工智能面前背叛你!
我相信你现在已经明白了。使用 NLP 工具和库可以帮助真正理解职位描述并衡量相对匹配度。虽然这并不完全可靠或绝对正确,但确实可以平衡竞争。你的用词很重要,但你不能在简历中随意堆砌关键词。你必须写一份强有力的简历,并申请适合你的职位。文本处理和文本挖掘是一个大话题,我们仅仅触及了可以做的表面。我发现文本挖掘和基于文本的机器学习模型非常准确。让我们看一些使用 Altair 的可视化效果,然后得出结论。
Altair 可视化
我最近一直在使用 Altair,而且比 Seaborn 或 Matplotlib 更多。Altair 的语法让我非常满意。我制作了三个可视化图表来帮助讨论——图 10 显示了简历中的关键词重要性和影响力。通过颜色比例尺,我们可以看到像“采用”这样的词在简历中出现了两次,但在职位发布中优先级较低。
图 10 显示了 Altair 的可视化效果。图像由作者提供。图表显示了简历中按重要性和影响力排列的词汇。
图 11 显示了职位发布中发现的排名主题与简历中发现的主题的交叉引用。最重要的短语是“项目管理…”但在简历中排名的术语中得分较低。
图 11. 显示了按排名短语和简历与职位发布之间的相关性的堆叠条形图。
图 12 绘制了相似词汇。财务在简历中使用了 10 次,但在职位发布中完全没有提及。词汇“项目”在简历(CV)中提到过,并且也出现在职位发布中。
图 12:文档间关键词重叠的分析。图片由作者提供。
从图表来看,简历和职位描述似乎不匹配。共享的关键词非常少,排名的短语看起来也很不同。这就是为什么你的简历会被淹没在杂草中的原因!
结论
阅读这篇文章可能更像是一部高预算的“打得死的 CGI 好莱坞”电影。所有的大牌演员通常都会出现在这些大片中。本文中大 NLP 库扮演了主角,我们甚至还有许多其他的“客串出演”,可能是一些较老且更成熟的名字,比如 NLTK。我们使用了像 Gensim、Spacy、sklearn 等库,并演示了它们的使用。我的类也作为特别出演,封装了 NLTK、rake、textblob 以及一堆其他模块,所有这些模块都在进行文本分析并提供见解,向你展示如何避免错失实现梦想工作的机会。
实现梦想工作的关键在于对细节的明确和坚持不懈的关注,以及对求职申请、简历和求职信的精心准备。使用自然语言处理不会让你成为最佳候选人。这要靠你自己!但它可以提高你在 AI 驱动的早期筛选中的胜算。
图片由 Vidar Nordli-Mathisen 提供,来源于 Unsplash
每个渔夫都知道需要好的饵料!
简介:David Moore (@CognitiveDave) 是金融技术实施专家。David 对开发优秀的企业服务感兴趣,这些服务可以赋能用户,解放他们免于不必要的工作,并提供相关的见解。
原文。经授权转载。
相关:
-
入门指南:5 个必备的自然语言处理库
-
每个数据科学家都应该知道的 6 种 NLP 技术
相关话题
掌握 NLP 职业面试
NLP 并不是所有数据科学家都必须接触和了解的内容。是否需要了解 NLP,取决于面试你的公司。如果你对 NLP 不感兴趣,那么你至少需要知道它是什么,以便在职业生涯中避开它。
我们的前三大课程推荐
1. Google 网络安全证书 - 快速进入网络安全领域。
2. Google 数据分析专业证书 - 提升你的数据分析能力
3. Google IT 支持专业证书 - 支持你的组织 IT
如果你对 NLP 感兴趣并愿意了解更多,你将受益于了解可能会遇到的面试问题。
什么是 NLP?
不,这不是最近流行的那种伪科学心理学方法,他们称之为神经语言程序设计。
“我们的” NLP 也越来越受欢迎,但它指的是自然语言处理。
正如维基百科所说,自然语言或普通语言是指在人类通过使用和重复自然演变的任何语言,无需有意识的规划或预谋。
上述定义中的关键字是“人类”。在 NLP 中,还有一个额外的关键字:计算机。因此,NLP 的定义是教计算机如何理解自然语言。由于这是计算机,这种理解意味着处理和分析以不同数据格式存储的自然语言数据。
为此,NLP 结合了人工智能、计算机科学和语言学的知识。
NLP 的用途是什么?
NLP 正在成为我们日常生活的一部分。当我写下前一句话时,Google 的智能编写功能建议了“日常生活”这个短语。我接受了,因为这正是我想写的。
这就是其用途之一:自动纠错、自动完成和拼写检查。NLP 软件扫描文本中的语法和拼写错误,进行纠正或提供纠正建议。还有一些拼写检查器可以“理解”整个句子的语法、上下文和意义。基于这些,它们会建议纠正或更好的措辞,以符合你希望通过文本实现的目标。
语言翻译是 NLP 的另一种应用。每当你身处外国时,你可能会使用翻译工具,如 Google Translate。同时,翻译工具在社交媒体上也越来越常见,例如 Facebook、Instagram 和 YouTube。
识别和生成语音也是 NLP 的一种应用。想想 Google Assistant、Windows 语音识别、Dragon、Siri、Alexa 或 Cortana;当你说话时,它们似乎都能理解你(多多少少)。根据你告诉它们的内容,它们会执行某些操作,如浏览互联网、输入你的文字或播放你最喜欢的歌曲。其中一些工具甚至可以回应你,即生成语音。
NLP 还可以解码文本的‘情感’。换句话说,它们可以检测文本背后的情感,而不仅仅是字面意思。这意味着理解情绪(快乐、愤怒、困扰、中立……)、讽刺、双关语、隐喻和上下文中的表达。这被称为情感分析。比如理解社交媒体上的评论,移除那些违反服务条款的评论,或者通过分析客户的评论和评价来获取客户的满意度。
NLP 在在线营销中被广泛应用。你搜索的关键词会与公司的关键词、他们的产品以及广告进行匹配。因此,当你开始看到你刚刚搜索的产品的广告时,不用担心。你并没有疯;这是 NLP 和目标广告在发挥作用。
NLP 与数据科学有什么关系?
数据科学家可能对自然语言本身不感兴趣。但是,如果将计算机处理加入其中——让自然语言成为数据——那么你可能会吸引数据科学家的注意。
也许仅仅让数据科学家的眼睛一亮是不够的,但如果知道机器学习(ML)与自然语言处理(NLP)有重叠并且经常被使用,这可能会改变这一点。
上述所有 NLP 的应用背后通常都涉及 ML。而 ML 无疑是一个深度融入数据科学的领域。
在讨论 ML 时,通常会区分监督式和无监督式 ML。
在 NLP 中最常用的监督式 ML 模型包括:
-
支持向量机(SVMs)
-
贝叶斯网络
-
最大熵
-
条件随机场
-
神经网络
无监督学习在 NLP 中并不那么常见,但仍然有一些技术被使用:
-
聚类
-
潜在语义索引(LSI)
-
矩阵分解
每个 ML 模型和算法背后都有基础的统计学概念。
这两个领域在所有寻找数据科学家的严肃公司中都受到严格考验。涉及 NLP 的公司也是如此。
NLP 中可能具有特定的术语,你需要了解这些术语。
将我在这里提到的内容结合起来,围绕三个主要主题进行面试准备。
NLP 面试问题
所有之前的讨论自然引出了 NLP 面试问题的类别:
-
一般与 NLP 术语相关的问题
-
统计问题
-
建模问题
“我不会在这篇文章中涵盖编码问题。数据科学家通常需要精通编码,特别是 SQL 和 Python,这已是常识。在 NLP 领域工作的数据科学家也不例外,因此你应当为面试中的编码部分做好准备。”
1. 一般与 NLP 术语相关的面试问题
这些 NLP 面试问题涉及你对 NLP 是什么,它是如何工作的,以及特定于 NLP 的技术概念的知识。
这是最不具有‘可转移性’的数据科学知识。换句话说,如果你没有在 NLP 方面的工作经验,你之前的数据科学知识在这里不会有太大帮助。因此,如果你没有 NLP 的工作经验,请认真对待这些问题,并为面试做细致的准备。
一些问题示例是:
2. 统计面试问题
统计问题考察你对统计概念的知识,这些概念你会在作为数据科学家时经常使用,尤其是在处理 NLP 项目时。
以下是一些示例:
-
贝叶斯统计与频率统计:贝叶斯统计与频率统计的区别是什么?
-
皮尔逊相关系数:证明皮尔逊相关系数为何在-1 和 1 之间。
3. 建模面试问题
自然语言处理(NLP)面试问题的第三类涉及机器学习(ML)及模型的一般问题。这可能指的是 NLP 中最常用的 ML 算法(如上所述)以及一些在 NLP 中使用的其他特定技术和方法。
以下是一些示例:
-
PCA 和 LDA/QDA:PCA 和 LDA/QDA 之间有什么关系?
-
朴素贝叶斯分类器:朴素贝叶斯分类器的“朴素”是什么?
摘要
自然语言处理是一个在日常生活中越来越常用的领域。目前的应用包括拼写检查、自动补全工具、翻译器、语音识别和生成软件。NLP 在社交媒体监控和在线营销中也被广泛使用。
NLP 与机器学习有重叠,因此许多机器学习的知识也适用于 NLP。但不要过于自满!NLP 是一个广泛且具体的领域,需要了解非常具体的术语、技术和常用方法。
一般来说,面试问题的类型可以分为一般的 NLP 问题、统计问题和建模问题。
我给你的例子和资源只是一个开始。但即使如此,它们也足以让你在 NLP 职位面试中无所畏惧。
内特·罗西迪 是一名数据科学家和产品策略专家。他还是一名教授分析学的兼职教授,并且是StrataScratch的创始人,该平台帮助数据科学家通过来自顶级公司的真实面试问题准备面试。你可以通过Twitter: StrataScratch或LinkedIn与他联系。
更多相关内容
NLP、NLU 和 NLG:有什么区别?全面指南
原文:
www.kdnuggets.com/2022/06/nlp-nlu-nlg-difference-comprehensive-guide.html
图片由 Towfiqu barbhuiya 提供,来源于 Unsplash
你是否曾经使用过智能助手(比如 Siri 或 Alexa)来回答你的问题?答案很可能是“是”,这意味着在某种程度上,你已经对自然语言处理(NLP)有所了解。
NLP 是来自不同学科的多种方法的结合,这些方法被智能助手如 Siri 和 Alexa 用来理解我们提出的问题。它结合了人工智能和计算机科学等学科,使人类能够像与另一个人交谈一样与计算机对话。这种与机器进行类似人类对话的想法可以追溯到 艾伦·图灵 撰写的开创性论文——这篇论文奠定了我们今天使用的 NLP 技术的基础。
不同的组件支撑了 NLP 将一组非结构化数据转换为结构化数据的方式 成格式。
具体来说,这些组件被称为自然语言理解(NLU)和自然语言生成(NLG)。本文旨在快速介绍 NLP、NLU 和 NLG 之间的相似性和差异,并探讨 NLP 的未来。
NLU 和 NGL 如何融入 NLP
数据科学家和人工智能专家可以利用 NLP 将非结构化的数据转化为计算机可以转换为语音和文本的格式——他们甚至可以创建与你提问相关的上下文回复(再想想像 Siri 和 Alexa 这样的虚拟助手)。但是,NLU 和 NLG 在 NLP 中到底扮演着怎样的角色呢?
这三种学科共有的一个相似之处是它们都处理自然语言,尽管它们各自扮演着不同的角色。那么这三者之间的区别是什么呢?
这样理解:NLU 旨在理解我们作为人类所说的语言,而 NLP 则追踪数据中最重要的部分,将其结构化为数字和文本等形式;它甚至可以帮助处理恶意的 加密流量。与此同时,NLG 则将一组非结构化数据转化为我们可以理解的有意义的叙述。
定义自然语言理解(NLU)
自然语言理解依赖人工智能来理解它从语音或文本中获取的信息。它通过这种方式从书面文字中创造出我们可以找到意义的内容。一旦数据科学家使用语音识别将口语转化为书面文字,NLU 将解析出可以理解的意义,无论这些文本是否包含错误和发音问题。
自然语言理解(NLU)对数据科学家非常重要,因为没有它,他们无法从语音和聊天机器人等工具中解析出意义。毕竟,我们人类习惯于与语音启用的机器人展开对话——然而,机器却没有这种方便的奢侈。此外,NLU 可以像你一样识别语音中的情感和粗俗语。这意味着,借助 NLU 的能力,数据科学家可以对文本进行分类,并有意义地分析不同格式的内容。
自然语言理解试图解析和理解非结构化信息,以将其转化为可用的数据,而自然语言生成(NLG)则完全相反。为了此目的,接下来我们将定义 NLG,并理解数据科学家如何将其应用于实际用例。
定义自然语言生成(NLG)
当数据科学家向自然语言生成(NLG)系统提供数据时,该系统会分析这些数据集以创建通过对话可以理解的有意义的叙述。本质上,NLG 将数据集转化为你我都能理解的自然语言。
NLG 充满了现实生活中人的经验,以便生成彻底研究且准确的输出,尽可能地贴近真实。这一过程可以追溯到我们之前提到的艾伦·图灵所写的文献,关键在于让人们相信机器能够进行可信且自然的对话,不论讨论的主题是什么。
组织可以使用 NLG 来创建任何组织内部成员都可以利用的对话性叙述。例如,NLG 对于在市场营销、人力资源、销售和信息技术等部门工作的专家来说,可以带来巨大的好处——NLG 最常用于商业智能仪表板、自动内容创建和更高效的数据分析等方面。
NLP 的未来会是什么样?
尽管自然语言处理(NLP)在现代商业应用中有很多应用,但许多组织在广泛采用它方面仍然遇到困难。这在很大程度上是由于一些关键挑战:信息过载常常困扰着企业,使它们很难在看似无尽的数据海洋中判断哪些数据集是重要的。
此外,企业通常需要特定的技术和工具来从数据中提取有用的信息,如果他们希望使用 NLP 的话。最后,NLP 意味着组织需要先进的机器,如果他们希望使用 NLP 处理和维护来自不同数据源的数据集。
尽管挑战阻碍了大多数组织采用 NLP,但这些组织最终不可避免地会采纳 NLP、自然语言理解(NLU)和自然语言生成(NLG),以使机器保持可信的人类互动和对话。因此,大量投资正在进行中,涉及 NLP 子领域如语义学和句法学。
结论
总结一下我们在本文中涵盖的内容:NLU 读取并理解自然语言,而 NLG 创建并输出更多语言;NLU 为语音和文本赋予意义,而 NLG 在机器的帮助下输出语言。NLU 从语言中提取事实,而 NLG 利用 NLU 提取的见解来创建自然语言。
留意苹果和谷歌等 IT 巨头,他们将继续投资于自然语言处理(NLP),以创建类人的系统。到 2025 年,全球 NLP 市场预计将超过 220 亿美元,因此这些科技巨头改变人类与技术互动的方式只是时间问题。
Nahla Davies 是一位软件开发者和技术作家。在全职从事技术写作之前,她曾在一家《Inc. 5000》体验品牌机构担任首席程序员,该机构的客户包括三星、时代华纳、Netflix 和索尼。
我们的前三个课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业轨道。
2. 谷歌数据分析专业证书 - 提升您的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持您的组织在 IT 方面
更多相关主题
我是如何使用 NLP(Spacy)筛选数据科学简历的
原文:
www.kdnuggets.com/2019/02/nlp-spacy-data-science-resumes.html
评论
由 Venkat Raman,数据科学家。
我们的前 3 名课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业
2. 谷歌数据分析专业证书 - 提升你的数据分析水平
3. 谷歌 IT 支持专业证书 - 支持你的组织在 IT 领域
图片来源:pixabay
简历制作非常棘手。候选人面临许多困境,
-
是否详细描述一个项目,还是只提及最基本的信息
-
是否提及许多技能,还是仅提及他的核心能力技能
-
是否提及许多编程语言,还是仅列出几种
-
是否将简历限制为 2 页还是 1 页
这些困境对于寻找转行机会的数据科学家,甚至对于有志成为数据科学家的人员来说同样困难。
现在,在你还在想这篇文章的方向时,让我告诉你写这篇文章的原因。
背景
我有一个朋友经营自己的数据科学咨询公司。他最近获得了一个好的项目,需要他雇佣 2 名数据科学家。他在 LinkedIn 上发布了一个职位,并且令他惊讶的是,他收到了近 200 份简历。当我亲自见到他时,他感叹道,“如果有一种比逐一手动筛选所有简历更快的方式来选择最佳简历就好了”。
我过去两年一直在进行一些 NLP 项目,既作为工作的一部分,也作为爱好。我决定尝试解决我朋友的问题。我告诉我的朋友,也许我们可以解决这个问题,或者至少通过一些 NLP 技术来减少手动扫描的时间。
确切需求
我的朋友希望找一个以深度学习为核心能力的候选人,并且要具备其他机器学习算法的知识。另一位候选人需要拥有更多的大数据或数据工程技能,如 Scala、AWS、Docker、Kubernetes 等经验。
方法
一旦我理解了我的朋友理想中候选人的要求,我制定了一种解决方案。以下是我列出的解决方法
-
拥有一个字典或表格,将各种技能集分类。例如,如果有像 keras、tensorflow、CNN、RNN 这样的词语,那么将它们放在标题为“深度学习”的一栏下。
-
拥有一个 NLP 算法来解析整个简历,并基本上搜索字典或表中提到的单词
-
下一步是计算每个类别下单词的出现次数,即每个候选人类似如下的内容
上述候选人与我朋友正在寻找的“深度学习数据科学家”匹配良好。
- 以可视化方式表示上述信息,以便我们更容易选择候选人
研究
现在我已经确定了我的方法,接下来面临的重大挑战是如何实现我刚刚描述的内容。
NLP 部分 — Spacy
我一直在寻找一种可以进行“短语/单词匹配”的库。我的搜索需求由 Spacy 满足。Spacy 具有一个名为“Phrase Matcher”的功能。你可以在这里阅读更多内容。
阅读简历
有许多现成的软件包可以帮助读取简历。幸运的是,我朋友得到的所有简历都是 PDF 格式。因此,我决定探索像 PDFminer 或 PyPDF2 的 PDF 包。我选择了 PyPDF2。
语言: Python
数据可视化: Matplotlib
代码和解释
完整代码
这是完整代码的 Gist 链接。
现在我们有了完整的代码,我想强调两点。
关键词 csv
关键词 csv 在代码第 44 行被称为 ‘template_new.csv’
你可以将其替换为你选择的数据库(并在代码中进行必要的更改),但为了简单起见,我选择了传统的 Excel 表(csv)。
每个类别下的单词可以是定制的,以下是我用来进行短语匹配的单词列表。
候选人**—**关键词表
在代码的第 114 行,执行该行会生成一个 csv 文件,此 csv 文件显示了候选人的关键词类别计数(候选人的真实姓名已被掩盖)。它的样子如下。
这可能不直观,因此我 resorted 到通过 matplotlib 进行数据可视化,如下所示:
这里 DE 代表数据工程,其他的都是自解释的
从图表来看,Dom Cobb 和 Fischer 更像是专家,而其他人则更像是通才!!
整个过程是否有益?
我的朋友对取得的结果感到非常惊讶,这节省了他大量的时间。更不用说,仅通过运行代码,他就从近 200 份简历中筛选出了大约 15 份。
这整个过程的用处如下
自动读取简历
代码自动打开简历并解析内容,而不是手动打开每份简历。如果手动完成这项工作,将耗费大量时间。
短语匹配和分类
如果我们手动阅读所有的简历,将很难说一个人是否在机器学习或数据工程方面有专长,因为我们在阅读时没有对短语进行计数。另一方面,这段代码只需寻找关键词,记录出现次数,并对其进行分类。
数据可视化
数据可视化在这里是一个非常重要的方面。它通过以下方式加快了决策过程
我们可以知道哪个候选人在某个特定类别下的关键词更多,从而推断他/她可能在该类别中有广泛的经验,或者他/她可能是全能型的。
我们可以对候选人进行相对比较,从而帮助我们筛选出那些不符合要求的候选人。
如何使用这段代码
求职中的数据科学家/有志成为数据科学家的:
很多公司可能已经在使用类似的代码来进行初步筛选。因此,建议根据特定的工作需求定制简历,包含必要的关键词。
一个典型的数据科学家有两个选择,要么将自己定位为全能型,要么在某一领域表现为专家,比如“自然语言处理”。根据工作需求,数据科学家可以运行这段代码来分析自己的简历,了解哪些关键词出现得更多,自己是否看起来像“全能型”或“专家”。根据结果,你可以进一步调整简历,以便更好地定位自己。
招聘人员
如果你像我的朋友一样是招聘人员并且被大量简历淹没,那么你可以运行这段代码来筛选候选人。
个人简介:Venkat Raman是一位具有商业头脑的数据科学家。希望在一生中积累知识并与他人分享。
原文。转载已获许可。
资源:
相关:
更多相关话题
AutoXGB 的简单 AutoML
作者提供的图片
自动化机器学习(AutoML)会自动运行各种机器学习过程,并优化错误指标以生成最佳模型。这些过程包括:数据预处理、编码、缩放、超参数优化、模型训练、生成工件和结果列表。自动化机器学习过程使得开发 AI 解决方案快速、用户友好,并且通常可以产生准确的低代码结果 - TechTarget。
我们的三大课程推荐
1. Google 网络安全证书 - 快速进入网络安全领域。
2. Google 数据分析专业证书 - 提升你的数据分析能力
3. Google IT 支持专业证书 - 支持你的组织的 IT
流行的 AutoML 库:
在本教程中,我们将使用 1994 年人口普查收入数据预测一个人是否年收入超过 50K 美元。这是一个经典的二分类问题,我们将使用 Kaggle 数据集 成人人口普查收入,该数据集采用 CC0: 公共领域 许可证。它由 Ronny Kohavi 和 Barry Becker(数据挖掘与可视化,硅谷图形公司)从 1994 年人口普查局数据库 提取。我们不会深入数据分析或模型工作原理。相反,我们将用几行代码构建一个优化的机器学习模型,并通过 FastAPI 服务器访问它。
AutoXGB
AutoXGB 是一个简单但有效的 AutoML 工具,可以直接从 CSV 文件中训练模型表格数据集。AutoXGB 使用 XGBoost 训练模型,使用 Optuna 进行超参数优化,并使用 FastAPI 提供模型推理 API 形式。
让我们开始安装 autoxgb。如果在运行服务器时遇到错误,请安装 fastapi 和 unvicorn。
pip install autoxgb
初始化中
我们将深入探讨 AutoXGB 函数的特性以及这些参数如何用于改善结果或减少训练时间。
-
train_filename: 训练数据的路径
-
output: 存储工件的输出文件夹路径
-
test_filename: 测试数据的路径。如果未指定,仅保存 OOF 预测
-
task: 如果未指定,任务将自动推断
-
task = “classification”
-
task = “regression”
-
-
idx: 如果未指定,id 列将自动生成,名称为 id
-
targets: 如果未指定,目标列将被假定为名为 target,并且问题将被视为二分类、多分类或单列回归中的一种
-
targets = [“target”]
-
targets = [“target1”, “target2”]
-
-
features: 如果未指定,除了 id、targets 和 kfold 列外,将使用所有列
- features = [“col1”, “col2”]
-
categorical_features: 如果未指定,将自动推断类别列
- categorical_features = [“col1”, “col2”]
-
use_gpu: 如果未指定,则不使用 GPU
-
use_gpu = True
-
use_gpu = False
-
-
num_folds: 用于交叉验证的折数
-
seed: 用于可重复性的随机种子
-
num_trials: 要运行的 Optuna 尝试次数
-
默认值为 1000
-
num_trials = 1000
-
-
time_limit: Optuna 尝试的时间限制(秒)
-
如果未指定,将运行所有尝试
-
time_limit = None
-
-
fast: 如果 fast 设置为 True,则超参数调整将仅使用一个折,这样可以减少优化时间。之后它将对其余的折进行训练,并生成 OOF 和测试预测。
在我们的情况下,除了train_filename, output, target, num_folds, seed, num_trails, 和 time_limit,我们将大部分值设置为默认值。
from autoxgb import AutoXGB
train_filename = "binary_classification.csv"
output = "output"
test_filename = None
task = None
idx = None
targets = ["income"]
features = None
categorical_features = None
use_gpu = False
num_folds = 5
seed = 42
num_trials = 100
time_limit = 360
fast = False
训练与优化
是时候定义一个模型使用AutoXGB(),并将先前定义的参数添加到模型中。最后,我们将使用*axgb.train()*开始训练过程。它将运行 XGBoost、Optuna,并输出工件(model, predication, results, config, params, encoders)。
axgb = AutoXGB(
train_filename=train_filename,
output=output,
test_filename=test_filename,
task=task,
idx=idx,
targets=targets,
features=features,
categorical_features=categorical_features,
use_gpu=use_gpu,
num_folds=num_folds,
seed=seed,
num_trials=num_trials,
time_limit=time_limit,
fast=fast,
)
axgb.train()
训练过程花费了 10-12 分钟,我们可以在下面看到最佳结果。我认为我们可以通过增加时间限制来提高F1分数。我们还可以调整其他超参数以改善模型性能。
2022-02-09 18:11:27.163 | INFO | autoxgb.utils:predict_model:336 - Metrics: {'auc': 0.851585935958628, 'logloss': 0.3868651767621002, 'f1': 0.5351485750859325, 'accuracy': 0.8230396087432015, 'precision': 0.7282822005864846, 'recall': 0.42303153575005525}
使用 CLI 进行训练
要在终端/bash 中训练模型,我们将使用autoxgb train。我们将只设置train_filename和output 文件夹。
autoxgb train \
--train_filename binary_classification.csv \
--output output \
Web API
通过在终端运行autoxgb serve,我们可以在本地运行 FastAPI 服务器。
AutoXGB 服务参数
-
model_path -> 模型路径。在我们的案例中,这是输出文件夹。
-
port -> 服务端口 8080
-
host -> 用于服务的主机,IP 地址:0.0.0.0
-
workers -> 工作人员数量或同时请求的数量。
-
debug -> 显示错误和成功的日志
Deepnote 公共服务器
为了在云端运行服务器,Deepnote 使用 ngrok 创建公共 URL。我们只需开启该选项并使用端口 8080。如果你在本地运行,则无需遵循此步骤,直接使用 “http://0.0.0.0:8080” 访问 API 即可。
我们提供了 model path、host ip 和 port number 来运行服务器。
!autoxgb serve --model_path /work/output --host 0.0.0.0 --port 8080 --debug
我们的 API 运行顺利,你可以通过 “https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com” 访问它。
INFO: Will watch for changes in these directories: ['/work']
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: Started reloader process [153] using watchgod
INFO: Started server process [163]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 172.3.161.55:40628 - "GET /docs HTTP/1.1" 200 OK
INFO: 172.3.188.123:38788 - "GET /openapi.json HTTP/1.1" 200 OK
INFO: 172.3.167.43:48326 - "GET /docs HTTP/1.1" 200 OK
INFO: 172.3.161.55:47018 - "GET /openapi.json HTTP/1.1" 200 OK
预测
我们可以添加随机输入来预测一个人的收入是否超过 $50k。在这个例子中,我们使用 FastAPI 的 /docs 选项来访问用户界面。
输入
我们将使用 FastAPI GUI 通过在链接末尾添加 /docs 来运行模型预测。例如 “172.3.167.43:39118/docs”
-
workclass: “私营”
-
education: “高中毕业”
-
marital.status: “丧偶”
-
occupation: “运输搬运”
-
relationship: “未婚”
-
race: “白人”
-
sex: “男性”
-
native.country: “美国”
-
age: 20
-
fnlwgt: 313986
-
education.num: 9
-
capital.gain: 0
-
capital.loss: 0
-
hours.per.week: 40
结果
结果为 <50k,置信度为 97.6%,>50k 的置信度为 2.3%。
使用请求进行测试
你也可以使用 Python 中的 requests 测试 API。只需将参数以字典形式推送,并以 JSON 格式获取输出。
import requests
params = {
"workclass": "Private",
"education": "HS-grad",
"marital.status": "Widowed",
"occupation": "Transport-moving",
"relationship": "Unmarried",
"race": "White",
"sex": "Male",
"native.country": "United-States",
"age": 20,
"fnlwgt": 313986,
"education.num": 9,
"capital.gain": 0,
"capital.loss": 0,
"hours.per.week": 40,
}
article = requests.post(
f"https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com/predict",
json=params,
)
data_dict = article.json()
print(data_dict)
## {'id': 0, '<=50K': 0.9762147068977356, '>50K': 0.023785298690199852}
项目
代码和示例可以在以下地址找到:
结论
我使用 AutoML 在 Kaggle 竞赛中获得优势,并为机器学习项目开发模型基线。你有时可以获得快速且准确的结果,但如果你想创建最先进的解决方案,你需要手动实验各种机器学习过程。
在本教程中,我们了解了 AutoXGB 的各种功能。我们可以使用 AutoXGB 进行数据预处理,训练 XGboost 模型,使用 Optuna 优化模型,并使用 FastAPI 运行 Web 服务器。总之,AutoXGB 提供了一个端到端的解决方案来处理你的日常表格数据问题。如果你对实现或使用我提到的其他 AutoML 有疑问,请在评论区留言。我很乐意回答你的所有问题。
Abid Ali Awan (@1abidaliawan) 是一位认证的数据科学专业人士,热衷于构建机器学习模型。目前,他专注于内容创作,并撰写关于机器学习和数据科学技术的技术博客。Abid 拥有技术管理硕士学位和电信工程学士学位。他的愿景是使用图神经网络构建一个 AI 产品,帮助那些在心理健康方面面临困扰的学生。
更多相关话题
-
[Nota AI 发布 NetPresso 模型搜索的测试版,…] (https://www.kdnuggets.com/2022/04/nota-ai-releases-beta-version-netpresso-model-search-hardwareaware-automl-tool.html)
数据科学中没有免费的午餐
原文:
www.kdnuggets.com/2019/09/no-free-lunch-data-science.html
评论
由 Sydney Firmin,Alteryx。
在你进行机器学习探索的过程中,你可能已经遇到过“没有免费午餐”定理。借用其名称自俗语"没有免费的午餐",数学民间定理描述了这样一种现象:没有单一算法能够适用于所有可能的场景和数据集。
没有免费午餐定理
我们的前三大课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT
一般来说,有两个没有免费午餐(NFL)定理:一个是针对机器学习的,一个是针对搜索和优化的。这两个定理是相关的,往往被归纳为一个通用的公理(民间定理)。
尽管许多不同的研究人员为关于没有免费午餐定理的集体出版物做出了贡献,但与这些研究最相关的名字是大卫·沃尔珀特。
监督学习没有免费的午餐
在他的 1996 年论文学习算法之间缺乏先验区别中,大卫·沃尔珀特探讨了是否可以在没有对目标变量做出任何假设的情况下,从训练数据集和学习算法中获得有用的理论结果。
Wolpert 在其 1996 年的论文中(通过一系列数学证明)证明了,给定一个无噪声的数据集(即没有随机变化,只有趋势)和一个以错误率为成本函数的机器学习算法时,所有机器学习算法在评估时都是等效的,使用的是泛化误差率(模型在验证数据集上的错误率)。
扩展这一逻辑(Wolpert 用数学方程进行),他展示了对于任何两个算法 A 和 B,A 比 B 表现差的情况与 A 超过 B 的情况数量相同。这甚至适用于其中一个算法是随机猜测的情况。Wolpert 证明了,对于所有可能的领域(从均匀概率分布中抽取的所有可能问题实例),算法 A 和 B 的平均性能是相同的。
这是因为几乎所有的 (非死记硬背) 机器学习算法都对预测变量和目标变量之间的关系做出一些假设(称为 归纳或学习偏差),将 偏差 引入模型中。机器学习算法所做的假设意味着某些算法会比其他算法更好地拟合特定的数据集。这也(按定义)意味着存在许多数据集,给定的算法将无法有效建模。模型的有效性直接依赖于模型所做的假设与数据的真实性质的契合程度。
回到午餐的主题,你不能“免费”获得好的机器学习。你必须利用关于你的数据和我们生活的世界(或你的数据所在的世界)的知识来选择一个合适的机器学习模型。没有一种单一的、普遍最佳的机器学习算法,也没有独立于背景或用途的 (a priori) 理由来偏好某个算法而不是其他所有算法。
有趣的是,这篇 1996 年的论文是对哲学家 大卫·休谟 工作的数学形式化。我保证稍后会回到这个话题。
搜索和优化也没有免费午餐
Wolpert 和 Macready 在 1997 年发表的论文 优化的无免费午餐定理 展示了类似“无免费午餐”逻辑在数学领域的搜索和优化中的应用。
搜索和优化的无免费午餐定理表明,对于有限搜索空间中的搜索/优化问题,当被搜索的点没有被重新抽样时,任何两个给定搜索算法在所有可能问题上的性能都是相同的。
例如,假设你在徒步旅行,寻找地球上的最高点(极值)。为了找到它,你可能会总是选择朝着海拔升高的方向前进,像一个“爬山者”一样行动。
这在地球上是有效的,因为最高点是非常高的山脉的一部分。
现在,想象一下这样一个世界:地球上的最高点被地球上的最低点所包围。
这个家伙注定要失望。
在这种情况下,始终向下搜索的策略会表现得更好。
无论是爬山还是下坡,在两个星球上的表现都没有更好,这意味着随机搜索的效果(平均而言)也一样。在无法假设星球上的最高点会出现在其他高点附近(即平滑的表面)的情况下,我们无法知道爬山是否会比下坡表现得更好。
所有这些归结为:如果无法对优化程序做出任何先验假设,则不能期望任何优化策略比其他策略(包括随机搜索)表现得更好。通用的、万能的优化策略在理论上是不可能的,只有当一种策略专门针对特定问题时,它才能优于另一种策略。听起来很熟悉吧?没有免费的高效搜索优化。
在他 2012 年的论文《无免费午餐定理的真正含义;如何改进搜索算法》中,Wolpert 讨论了搜索与监督学习之间的紧密关系及其对“无免费午餐”定理的影响。他证明了在“无免费午餐”定理的背景下,监督学习与搜索/优化高度类似。对于这两个定理而言,“搜索算法”似乎可以与“学习算法”互换,“目标函数”也可以与“目标函数”互换。
如果你对每个“无免费午餐”定理感兴趣,可以访问www.no-free-lunch.org/
获取一个很好的总结资源,其中包括 David Wolpert 关于“无免费午餐”定理概述的PowerPoint 演示文稿。有关“无免费午餐”定理的更多哲学解释,可以阅读通知:无人免费午餐,包括贝叶斯方法。
我们对“无免费午餐”确定吗?
“无免费午餐”定理引发了大量的研究和学术出版物。这些出版物并不总是支持“无免费午餐”(因为谁不想要免费的午餐呢?)。
“所有可能的问题”这一“无免费午餐”定理的组成部分是第一个难点。所有可能的问题并不反映现实世界的条件。事实上,许多人会争辩说,机器学习和优化所涉及的问题,即“现实世界”问题,与所有问题中的许多领域完全不同。现实世界往往表现出模式和结构,而“所有可能的问题”空间包括完全随机或混乱的场景。
研究人员也在哲学基础上反对取均值。如果你一只手放在开水中,另一只手冻在冰块里,那么你的手的平均温度是正常的。算法性能的平均可能会带来麻烦,因为某些算法在大多数问题上表现良好,但在一些边缘案例中表现极差。
在实证研究中,已经证明一些算法的表现始终优于其他算法。在 2014 年的论文我们是否需要数百种分类器来解决现实世界的分类问题中,研究人员发现,在UCI 机器学习库(121 个数据集)的所有数据集中,表现最好的分类器包括随机森林、支持向量机(SVM)、神经网络和提升集成。
这是一个重要的考虑因素,因为有些算法似乎在 Kaggle 排行榜上始终名列前茅,或者比其他算法更频繁地被应用于生产环境。然而,“没有免费午餐”定理提醒我们每个模型的假设,以及我们对数据和收集数据的环境(常常是潜意识中的假设)。
没有免费午餐与大卫·休谟
还记得我在(大约 800 字前)承诺会回到那位古老的死去哲学家吗?这就是那一部分。
这个家伙……
大卫·休谟是 18 世纪来自爱丁堡的哲学家,特别关注怀疑主义和经验主义。他对归纳问题进行了大量思考,这属于认识论(知识研究领域)。
为了探讨归纳问题,我们首先将世界分为两种不同的知识类型:先验和后验(这种划分可以追溯到伊曼努尔·康德的工作)。
先验知识是指独立于经验存在的知识。这种知识基于观念之间的关系,例如,2 + 2 = 4,或八边形有八个边。这种知识无论世界外部是什么样子都是真实的。
后验知识或“事实问题”是需要经验或实证证据的知识类型。这种知识构成了大部分个人和科学知识。后验知识需要观察。
归纳推理是一种用于后验知识的推理方法,我们将观察到的规律性模式应用于我们没有直接观察过的实例;例如,我观察到的所有雨都是湿的,因此,我没有观察到的所有雨也必须是湿的。
通过归纳法,我们隐含地假设了自然的一致性(有时称为一致性原则或相似性原则),并且未来将始终类似于过去。
科学完全基于归纳推理。如果没有像自然的一致性这样的假设,没有任何算法(包括像科学方法或交叉验证程序这样的高级算法)可以被证明优于随机猜测。
休谟认为,归纳推理和因果关系的信念无法被理性地证明。假设一致性没有任何理由。根据休谟的观点,归纳对人类来说是本能的,就像狗似乎本能地追逐兔子和松鼠一样。休谟并没有真正提出归纳的解决方案或证明——他只是有点耸肩地说,我们不能改变我们自身的本性,所以不必为此担忧。(我在想象他耸肩的样子。)
大卫·沃尔珀特关于有监督机器学习的无免费午餐定理的工作是对休谟的形式化。沃尔珀特甚至在他 1996 年的论文开头引用了这句休谟的话:
即使在观察到物体频繁联结后,我们也没有理由对那些我们没有经验的物体做出任何推断。
- 大卫·休谟,在《人性论》第一卷,第三部分,第十二节。
科学(以及机器学习模型)本质上相信在相同条件下,一切总是以相同的方式发生。没有理由假设因为一个模型在一个数据集上表现良好,它也会在其他数据集上表现良好。此外,科学、统计学和机器学习模型不能基于以前实验的结果对未来实验做出保证。没有任何系统可以对任何环境中的预测、控制或观察做出保证。
如果你喜欢这段哲学的绕行,想要了解更多关于休谟和归纳问题的信息,Khan Academy 上有一个很棒的视频,叫做休谟:怀疑主义与归纳,第二部分(第一部分讲的是先验知识与后验知识)。
无免费午餐定理与您
如果你已经坚持到现在,你可能在寻找这些内容对你的意义。来自“没有免费午餐”定理的两个最重要的结论是:
-
在依赖模型或搜索算法之前,始终检查你的假设。
-
没有“超级算法”能够完美适用于所有数据集。
“没有免费午餐”定理并不是为了告诉你在不同场景下该怎么做。“没有免费午餐”定理专门写来反驳类似于以下的主张:
我的机器学习算法/优化策略是最优秀的,永远如此,适用于所有场景。
模型是现实特定组件的简化(通过数据观察得出)。为了简化现实,机器学习算法或统计模型需要做出假设并引入偏差(特别称为归纳或学习偏差)。无偏学习是徒劳的,因为一个没有先验假设的学习者在面对新的、未见过的输入数据时将没有合理的基础来创建估计。算法的假设对于某些数据集有效,但对其他数据集无效。理解这些现象对理解欠拟合和偏差/方差权衡非常重要。
数据和随机选择的机器学习模型的组合不足以对未来或未知结果做出准确或有意义的预测。你,人类,需要对你的数据和我们所生活的世界的性质做出假设。积极参与假设的制定只会增强你的模型,使其更有用,即使它们是错误的。
原文。经许可转载。
**简介:**一名训练有素的地理学家和数据爱好者,Sydney Firmin坚信数据和知识在被清晰传达和理解时才最有价值。作为高级数据科学内容工程师,她的工作就是将技术知识和研究转化为引人入胜、富有创意和有趣的内容,服务于 Alteryx 社区。
相关:
更多相关话题
数据科学的非技术阅读清单
原文:
www.kdnuggets.com/2019/12/non-technical-reading-list-data-science.html
评论
作者:William Koehrsen,Cortex Building Intelligence 的首席数据科学家
与一些数据科学家可能喜欢相信的相反,我们永远不能将世界简化为数字和算法。当归结起来时,决策是由人类做出的,成为一个有效的数据科学家意味着要理解人和数据。
我们的前三名课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业轨道
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT
请考虑以下真实的例子:
当 OPower,一家软件公司,希望减少能源使用,他们向客户提供了大量关于电力使用和成本的统计数据。然而,仅凭数据并不足以促使人们改变行为。此外,OPower 还需要利用行为科学,即,研究表明,当人们在账单上收到笑脸表情符号时,他们会更倾向于减少能源使用,以了解他们与邻居的比较情况!
当人们的电费账单上出现了一个???(表示他们的用电量低于邻居)和一个悲伤的表情符号(表示他们可以做得更好)时,这种简单的干预措施最终将电力消耗减少了 2–3%,在此过程中节省了数百万美元,并防止了数百万磅的二氧化碳排放。对于数据科学家来说,这可能是个震惊——你是说人们不会仅仅对数据做出反应?!——但这对OPower的首席科学官,罗伯特·西奥迪尼,一位写过关于人类行为的心理学教授来说并不奇怪。关键是你可以拥有任何数据,但你仍然需要理解人类的运作方式才能真正带来改变。
最有效的可视化不是柱状图,而是笑脸。
在我们作为数据科学家的日常工作和正式教育中,很难窥见人类的运作或退一步思考我们工作的社会影响。因此,阅读不仅仅是技术文章和教科书,还要扩展到研究人们如何做出选择以及如何利用数据来改善这些选择的作品是至关重要的。
在这篇文章中,我将重点介绍 6 本非技术性的书籍——即不涉及数学和算法的书籍——但对于数据科学家来说却是至关重要的。这些书籍对任何希望实现数据科学目标的人来说都是必要的:通过数据实现更好的现实世界决策。
这 6 本书在这里列出,并附有简要评论和要点总结:
1. 信号与噪声:为什么这么多预测会失败——但有些不会 由 Nate Silver
2. 数学毁灭武器:大数据如何增加不平等并威胁民主 由 Cathy O’Neill
3. 和 4. **(并列)人类决策的计算机科学:生活中的算法 由 Brian Christian 和 Tom Griffiths 以及 如何不犯错:数学思维的力量 由 Jordan Ellenberg
5. 思考,快与慢 由 Daniel Kahneman
6. **(黑马)黑天鹅:高度不可能事件的影响 由 纳西姆·尼古拉斯·塔勒布
重点总结与评论
1. 信号与噪声:为什么这么多预测会失败——但有些不会 由 Nate Silver
关于未来的预测——如选举、经济、国家政治和科技进步——经常是滑稽可笑的错误。这些预测在产生实际现实世界后果时不再那么幽默,在这部作品中,Silver 解释了为什么人们在做预测时往往很糟糕,并考察了在多个领域中成功打破这一趋势的少数人。事实证明,没有一个神奇的规则可以让你对未来做出准确的预测,只有一些伟大的预测者实践的基本规则。
任何人都可以从书中提供的简单建议中受益:
-
**像狐狸一样思考(而不是刺猬):**拥有许多小想法(狐狸),而不是一个大想法(刺猬)。如果你只有一个想法,你会倾向于寻找确认证据,并忽略任何与之矛盾的观点(这就是确认偏差)。如果你有许多小想法,你会更关注哪些是正确的,而不是支持你当前信念的东西,并且当证据不再支持这些想法时,你可以抛弃它们。这两种不同的思维方式也解释了为什么那些对自己预测更有信心的人(如电视评论员)往往更容易出错。
-
**做大量预测并获得快速反馈:**我们在对经常发生的事件进行估计时表现得更好,主要是因为反馈和改进的循环。每当天气预报错误时,这些信息会进入模型,使得对明天的预测更好(这也是天气预报在几十年间显著改善的一个原因)。我们在处理少见情况时最差,在这些情况下,使用尽可能多的数据是关键。
-
**尽可能参考多样化的来源:**每个数据提供者都有自己的偏见,但通过聚合不同的估计,你可以平均出错误——这一点在 Silver 的FiveThirtyEight中得到了很好的阐述。这种“众智”方法意味着使用与你的观点相悖的来源,而不仅仅依赖于某一领域的“专家”。
-
**始终包括不确定性区间,并且不要害怕在证据发生变化时更新你的观点:**人们在预测时最常犯的错误是只给出一个数字。虽然一个答案可能是公众想听的,但世界从不是严格的黑白,而是存在于不同的灰色地带,我们有责任在预测中体现这一点。表达不确定性可能显得胆怯——说希拉里获胜的概率是 70%意味着无论结果如何,你都会是对的——但这比单一的“是/否”回答更现实。此外,人们通常认为改变观点是一种弱点,但当实际情况发生变化时更新你的信念,实际上是一种重要的力量,无论是在数据科学还是形成世界观方面。
我们永远无法对世界的预测完全正确,但这不应该阻止我们通过依靠经过验证的原则来尽量减少错误。
在这个领域中,还有两本非常棒的附加书籍,分别是超级预测和专家政治判断,均由 Philip Tetlock 所著。
2. 数学毁灭性武器:大数据如何加剧不平等并威胁民主 作者:凯西·奥尼尔
*《数学毁灭性武器》*应当成为攻读统计学、机器学习或数据科学学位的学生,以及需要决定是否部署模型的任何人的必读书籍。所谓“数学毁灭性武器”是指任何不透明的算法——难以解释;在大规模上运作——影响到数百万甚至数十亿人,并且有可能造成严重的伤害——例如破坏民主选举或使我们社会中的一大片人群被囚禁。
核心观点是,这些数学毁灭性武器具有创建反馈循环的能力,这些反馈循环扩散了不平等,而由于我们无法看到这些算法的内部,我们将不知道如何纠正它们。只有当我们回顾并观察到巨大的损害——例如 2016 年选举或 2008 年金融危机(这两者都是由用于负面目的的算法造成的)——才会发现我们对这些模型的盲目信任可能造成的伤害。
此外,我们的模型的质量仅取决于输入的数据,而当这些数据存在偏差时,模型的预测也会存在偏差。考虑一个用于判刑的模型,它考虑到一个人首次遇到执法人员的时间。由于不公正的警务策略,如盘问和搜身,一个黑人男子可能比白人男子在更年轻时就与警方发生冲突,即使考虑到其他因素。这将导致模型推荐对黑人更长的监禁时间,而在此期间,这些个体将失去经济机会并被社会排斥。那些人更有可能再次犯罪,导致监禁的恶性循环,而这一切都源于由不公正政策生成的数据,然后被输入到黑箱中。
奥尼尔的这本书于 2016 年初发布,现在比以往任何时候都更加需要。2016 年底,俄罗斯演员利用 Facebook 的算法传播宣传,给美国民主进程造成了严重破坏。这些行动远非学术演练,它们带来了现实世界的后果,质疑了美国选举的合法性。极右派广告继续困扰 Facebook,这些广告由一种算法驱动(我们不太确定,可能是这样),该算法将参与度视为首要任务。
算法在我们日常生活中的作用只会越来越大。现在,我们上学的地方、阅读的内容、贷款是否被批准、是否找到工作以及我们购买的东西,都在很大程度上由我们无法控制且无法查询解释的算法决定。奥尼尔的书可能对机器学习模型感到悲观,但我更愿意把它看作是一种必要的批评:在机器学习围绕着如此多的盲目热情的情况下,我们需要那些愿意退一步思考的人:这些工具真的在改善人们的生活吗?我们作为一个社会应该如何采用它们?
机器学习算法只是工具,与许多工具一样,它们可以被用来做善事或坏事。幸运的是,我们仍处于早期阶段,这意味着我们可以塑造模型的使用,以确保它们致力于做出客观决策,并为最大多数人创造最佳结果。我们现在做出的选择将塑造未来几十年的数据科学,而最好是对这些辩论做好充分准备。
数据科学可能是一个年轻的领域,但已经对数百万个人的生活产生了巨大的影响,无论是好是坏。作为这一新前沿的开拓者,我们现在有责任确保我们的算法不会变成数学破坏武器。
3. & 4. (并列)生活中的算法:人类决策的计算机科学,作者布赖恩·克里斯坦和汤姆·格里菲斯,以及如何不犯错:数学思维的力量,作者乔丹·艾伦伯格
计算机科学和统计学(以及其他任何学科)在学校教学时存在一个问题:它们在抽象层面上很无聊。只有当它们应用于现实世界问题时,才会变得有趣到让我们想要去理解。这两本书都做得非常出色,将枯燥的主题转化为有趣且信息丰富的叙述,讲述了如何在日常生活中使用算法、统计和数学。
例如,在生活中的算法中,作者展示了我们如何使用探索与利用权衡和最佳停止点的概念来了解我们应该花多长时间寻找配偶(或者新的员工、晚餐的餐馆等)。同样,我们可以使用排序算法来高效地组织我们的物品,以便快速检索所需的东西。你以为你了解这些想法,甚至可能能够将它们写成代码,但你可能从未应用过它们来优化你的生活。
*《如何避免犯错》*的主要思想类似,艾伦伯格通过故事展示了统计概念的使用和误用,如线性回归、推断、贝叶斯推断和概率。应用概率法则显示买彩票总是一个失败的提议——除非在少数情况下回报实际为正(正如一组麻省理工学院学生发现的)。艾伦伯格并不回避展示方程式,但他将其应用于现实世界的情况。
艾伦伯格书中的核心引语是数学思维是“用其他方式扩展常识”。在许多情况下,特别是在遥远的过去,我们的直觉为我们提供了很好的服务,但在现代世界中,许多情况下我们的初步反应是完全错误的(见下一本书)。在这些情况下,我们需要依赖于概率和统计来得出最佳决定,而不是凭直觉。
这两本书都达到了恰到好处的严谨水平——结合了少量方程式和大量故事——阅读起来都很愉快。在这些书中,我发现了许多在课堂上从未完全掌握的数据科学概念,终于得以理解,且一再体验到了“啊哈”时刻的喜悦。数学、统计学和计算机科学的价值在于它们能否改善你的生活,而这两本书展示了这些学科的所有应用,您之前从未考虑过。
5. 思考,快与慢 作者:丹尼尔·卡尼曼
如果你还没有意识到这一点,那么这里有一个有用的教训:人类是不理性的,我们在生活的各个方面经常做出糟糕的决定。然而,仍然有希望的理由:一旦我们理解了为何我们无法做到最佳行动,我们就可以开始改变行为以获得更好的结果。这是卡尼曼大师之作的核心前提,记录了几十年的实验发现。
卡尼曼(2002 年诺贝尔经济学奖获得者)以及他的研究伙伴阿莫斯·特沃斯基(还有理查德·泰勒等其他人)创造了高度影响力的行为经济学领域,它将人们视为非理性的决策者,而不是理性最大化效用的人。这在经济学领域以及医学、体育、商业实践、能源节省和退休资金等各种生活领域都带来了真实的思维转变和设计选择。我们还可以将许多发现应用于数据科学,例如如何呈现研究结果。
在这部严谨而高度愉快的著作中,卡尼曼概述了我们不理性行为的各种方式,包括 锚定、可得性和替代启发式(经验法则) 或我们对 损失规避 的倾向以及陷入沉没成本谬误。他还概述了也许是最重要的结论:我们 有两种不同的思维系统。
-
**系统 1 快速而直观:**这种模式是由进化设计出来的,用于在没有考虑证据的情况下做出快速决策。虽然这种模式在我们狩猎采集的过去很有效,但在信息丰富的世界中,它常常让我们陷入麻烦,尤其是当我们不花时间查看数据时。
-
**系统 2 慢而理性:**在选项众多且证据来源不同的情况下,我们需要使用这种模式。运用系统 2 需要付出努力,但这种努力能带来更好的决策和结果,从而得到丰厚的回报。
使用系统 1 是自然的,我们必须克服数百万年的进化才能使用系统 2。尽管这很困难,但在信息丰富的世界中,我们需要花时间锻炼系统 2 的思维。虽然我们有时可能会遇到过度思考的问题,但思维不足——使用系统 1 而不是系统 2——是一个更严重的问题。
这本书对理解人们如何做决策至关重要,并且对我们作为数据科学家能做些什么来帮助人们做出更好的选择具有指导意义。
这本书还提出了在数据科学之外适用的结论,比如 两个自我的概念:体验自我和记忆自我。体验自我是我们在事件发生时的逐时感受,但比记忆自我重要得多,记忆自我是我们对事件的后续感知。记忆自我根据“峰值-结束”规则对经历进行评分,这对医学、生活满意度以及迫使自己做不愉快的任务有深远的影响。我们会记住事件的时间远比实际经历的时间要长,因此在经历过程中,我们必须尽力最大化记忆自我的未来满足感。
如果你想了解实际的人类心理学,而不是传统课堂上呈现的理想化版本,那么这本书是最好的起点。
6. (黑马):黑天鹅:高度不可能事件的影响 作者:纳西姆·尼古拉斯·塔勒布
塔勒布在名单上只能占据一个位置,那就是局外人的位置。 塔勒布 是一位前量化交易员,他在 2000 年和 2007 年的市场低迷期间赚取了可观的财富,他已经成为一位直言不讳的学者研究者,因其作品获得了全球的 赞誉与批评。主要来说,塔勒布关注一个想法:当代思维方式的失败,尤其是在极端不确定的时候。在 《黑天鹅》 中,塔勒布提出了一个概念,即我们对支配人类活动的随机性视而不见,因此当事情没有按预期发展时会感到沮丧。 《黑天鹅》 最初于 2007 年出版,自 2008 年和 2016 年的意外事件以来变得更为相关,这些事件彻底颠覆了传统模型。
当然,基于中心论点,立刻出现的问题是:那么,不可思议的事件按照定义不会经常发生,我们不应该担心它们吗?关键点在于,虽然每个不可思议的事件 本身不太可能发生,但综合来看,几乎可以肯定的是 在你的生命周期中会发生许多意外事件,甚至在一年内也是如此。任何一年发生经济崩溃的机会微乎其微,但概率会累积,直到每十年全球某处发生经济衰退成为接近可能的事实。
我们不仅应该期望改变世界的事件高频发生,而且不应该听信那些受限于过去发生过的事件的专家。正如任何投资股市的人都应该知道的那样,过去的表现无法预测未来的表现,这是一个我们在数据科学模型中(使用过去数据)应当谨慎考虑的教训。此外,我们的世界不是正态分布的,而是具有胖尾特征,少数极端事件——大萧条——或少数富有的个人——比尔·盖茨——掩盖了所有其他人。当极端事件发生时,没有人会做好准备,因为它们的规模远远超出以往任何事件的规模。
《黑天鹅》 对数据科学家来说很重要,因为它展示了任何仅基于过去表现的模型往往会出错,并带来灾难性的后果。所有机器学习模型都是仅基于过去的数据构建的,这意味着我们不应过于信任它们。模型(包括塔勒布的模型)是对现实的有缺陷的近似,我们应确保有系统来应对它们不可避免的失败。
需要注意的是,塔勒布不仅以其新颖的观点而著称,还以其极具对抗性而闻名。他愿意接受所有挑战,并定期批评像史蒂文·平克这样的学者,或像内特·西尔弗这样的公众人物。他的观点对我们在严重偏斜的时代中理解情况非常有帮助,但他的态度可能会让人感到有些不快。不过,我认为这本书值得一读,因为它提供了非主流的思维体系。
(这本书是塔勒布五部曲《Incerto》中的第二部,阐述了他的完整哲学。*《黑天鹅》讨论了高度不可能事件的概念,而《Incerto》中的第四本书,《反脆弱:从混乱中获益的事物》讨论了如何不仅使自己对干扰保持强健,还可以利用这些干扰使自己处于更有利的位置。我认为《黑天鹅》*对数据科学来说是最相关的。)
结论
在经过一天的电脑屏幕盯视之后,我找不到比一本书(无论是纸质书、电子书还是有声书)更好的方式来结束一天。数据科学要求不断扩展你的工具箱,即使在我们想要放松、远离工作的时刻,这也不意味着我们不能继续学习。
这些书籍都是引人入胜的阅读材料,同时也教会了我们关于data science和生活的课程。这里描述的 6 部作品将为更技术性的著作提供有益的补充,展示了什么实际上驱动着人类。了解人们实际的思维方式——而不是理想化的模型——对实现更好的数据驱动决策同样至关重要。
原文。转载经许可。
简介: 威廉·科尔森 是 Cortex Intel 的数据科学家和数据科学传播者。
相关:
更多相关话题
非营利组织如何从数据科学的力量中受益
评论
作者:Ramya Sriram,Kolabtree。
我们的前三大课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持你的组织 IT 需求
非营利组织是否能从数据科学中受益?Every Action的调查发现,90%的非营利组织表示他们正在收集数据,但“几乎一半的人表示他们对数据如何(以及确实)影响他们的工作并不完全了解”。鉴于大多数非营利机构没有专门的数据分析团队,这并不令人惊讶。然而,大数据的浪潮现在也开始影响非政府组织和政府机构,这些机构可以利用数据科学产生更大的影响。数据分析可以帮助这些组织确保他们将时间、精力、资金和资源投入到正确的渠道。非营利组织需要资金来实现其使命,同时也需要证明其工作的成果,以吸引捐赠者。数据科学在优化这一周期方面具有巨大的潜力,也帮助组织做出明智、合理的决策。虽然并非每个组织都能负担得起全职数据分析师,但一些组织通过在平台如Kaggle和Stack Exchange上寻求帮助,或通过Kolabtree和Experfy雇佣自由数据科学家和顾问,来填补资源缺口。以下是非营利组织和慈善组织如何利用数据科学的一些例子。
1. 市场营销和筹款
非营利组织拥有庞大的数据集,可以利用这些数据集开发统计模型,帮助它们优化筹款工作。国际特赦组织使用细分和预测建模来帮助识别和定位正确的群体,从而制定更精细的营销策略。数据洞察帮助非政府组织根据各种因素识别和分类捐赠者,这样它们可以更有效地推动营销和筹款工作。数据分析还帮助慈善组织发现关系,从而制定具体的激励措施。在研究数据并发现能够为捐赠者提供一些东西后,而不是反过来,麦克米伦癌症支持组织推出了“世界最大咖啡”计划,这使得收入从1500 万英镑跃升至 2000 万英镑。
2. 监控和实施具体活动
数据科学可以帮助非营利组织准确衡量其活动的表现,并帮助它们调整流程以获得更好的结果。数据分析和可视化在危机中的实时追踪和优化救援工作中也能发挥重要作用。总部位于美国的软件公司 Qlik 提供的数据科学工具,能够帮助组织发现洞察、模式并增强关键决策过程。在过去,他们曾与非营利组织合作,利用数据的力量推动社会公益事业:在尼泊尔地震期间支持救援工作,以及防止埃博拉病毒传播在西非。
芝加哥大学运营一个名为社会公益数据科学的项目,培训研究员从事专注于社会影响的数据科学项目。研究员们与政府部门和非营利组织合作,解决与教育、医疗保健、公共安全和环境相关的问题。他们的一个项目,与芝加哥公共卫生部门合作,使用预测分析帮助预防儿童铅中毒。在 1978 年禁用铅基涂料之前,铅基涂料被广泛使用,而住在老旧房屋中的儿童仍然可能暴露于此。模型根据各种因素识别可能使用铅基涂料的房屋,从而减轻暴露的危险。
3. 精简资金
总部位于印度的 Akshaya Patra 基金会 转向大数据以帮助他们找到一种具有成本效益的方式,将他们的午餐计划送到全国各地的政府学校。优化他们提供该计划的路线帮助他们确保有效使用资金。根据分析中的洞察分配资金帮助非政府组织充分利用资源,这是其顺利运作的关键。
数据科学对于政府组织和非营利组织,无论大小,具有巨大的潜力这一点非常明确。然而,访问专家是这些组织面临的一个常见问题。流程往往繁琐,资金可能不足以雇佣一个完整的团队。因此,许多组织看不到数据科学的力量显现。像 Datakind 这样的组织帮助将数据科学家与社会组织连接起来,但科学家们提供的服务通常是志愿的。一个解决方案是,组织可以 咨询自由职业数据科学专家来处理短期项目。这帮助他们在保持成本效益的同时,获得数据分析专家的专业知识。这绝对是第三部门可以利用数据科学的一个方式,并保持自身的赋能,从而赋能他人。
个人简介: Ramya Sriram 是 Kolabtree(kolabtree.com)的数字内容经理,该公司总部位于伦敦,帮助将企业和研究人员与全球自由职业科学家连接起来。Kolabtree 的全球专家团队包括来自 NASA、哈佛、斯坦福、牛津、麻省理工、剑桥等机构的专家。组织可以从按需平台的数据科学家、机器学习和人工智能专家的咨询中受益。
相关内容
更多相关主题
西北大学的在线数据科学硕士课程
原文:
www.kdnuggets.com/2021/02/northwestern-ms-data-science.html
![]() |
---|
![]() |
| 通过西北大学推进你的数据科学职业生涯。数据科学与商业战略的整合创造了对能够理解大数据的专业人士的需求。建立必要的技术,
所需的分析、领导能力,适应当今数据驱动世界的职业生涯
西北大学的数据科学硕士课程。
我们的三大课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全领域的职业生涯! 2. 谷歌数据分析专业证书 - 提升你的数据分析技能! 3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT 需求
你将从一流的行业专家中学习。你可以
从广泛的专业方向和选修课程中选择,以适应你的目标
完全在线获得西北大学的硕士学位。 |
|
| 夏季申请截止日期:4 月 15 日 | | 秋季申请截止日期:7 月 15 日 |
|
|
| |
体育报道中充满了统计数据。西北大学已经提供了帮助
让我呈现复杂的概念,以便
观众不会因数学而感到困扰。在
广播的需求
传达数据至关重要。”爱德华·埃格罗斯,体育记者和主播
KDFW 达拉斯 |
|
相关课程信息系统硕士健康分析硕士 |
---|
|
芝加哥东芝加哥大道 339 号
芝加哥,伊利诺伊州 60611
312-503-2579 | 与我们联系
|
|
了解更多相关主题
来自西北大学的在线数据科学硕士课程
原文:
www.kdnuggets.com/2021/07/northwestern-online-ms-data-science.html
赞助文章。
![]() |
---|
![]() |
| 适用于数据驱动世界的关键技能,培养统计和分析专长,以及实施高层次数据驱动决策所需的管理和领导技能,来自于西北大学的
在线数据科学硕士项目。
-
学习创建强大的分析解决方案,将数据转化为可操作的洞察。
-
与经验丰富的行业专家团队互动,他们正在重新定义数据如何改善决策和提升投资回报率。
-
从广泛的专业和选修课程中进行选择,以适应你的目标。
-
完全在线获得西北大学的硕士学位。
|
|
|
我们的前三个课程推荐
1. 谷歌网络安全证书 - 快速进入网络安全职业道路。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能!
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT 需求
冬季申请截止日期 10 月 15 日 | | 春季申请截止日期 1 月 15 日 |
|
|
| |
对我来说,该项目最大的好处是它给了我一个
更深入地理解
预测模型如何工作及其应用
同样重要的是,它
让我能够传达什么
预测分析的含义。”杰森·奥奎,产品经理,Adobe |
|
相关课程 信息系统硕士 健康分析硕士 |
---|
|
339 东芝加哥大道
芝加哥,伊利诺伊州 60611
312-503-2579 | 与我们联系
|
|
更多相关话题
NoSQL 初学者
评论
什么是 NoSQL?
NoSQL 实际上是对 SQL 刚性结构的回应。最初创建于 1970 年代初期,NoSQL 直到 2000 年代末才真正起飞,那时亚马逊和谷歌都投入了大量的研究和开发。自那时以来,它成为现代世界的重要组成部分,许多全球的大型网站都使用某种形式的 NoSQL。
那么 NoSQL 到底是什么?本质上,它是一种创建数据库的理念,不 需要模式,也不 以关系模型存储数据。实际上,NoSQL 有多种 NoSQL 数据库 可供选择,每种都有自己的专业化和使用案例。因此,NoSQL 在填补细分市场方面极其多样,你几乎可以肯定找到适合你需求的 NoSQL 数据模型。
我们的三大课程推荐
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持组织的 IT 需求
SQL 与 NoSQL 的区别
虽然 SQL 是 一种特定的数据库和语言,但 NoSQL 不是,但这并不意味着我们不能探讨两者之间的一般理念和区别。
可扩展性
对于 SQL,唯一真正的扩展方式是垂直升级。这意味着你需要购买比现有设备更高端、更昂贵的设备,以获得更好的性能。 使用 NoSQL 扩展 是通过水平扩展完成的,所以你只需再加入一个分片,基本就完成了。
这意味着 NoSQL 对于未来可能增长的应用程序来说绝对是很棒的,其中硬件可能成为一个重要障碍。
模式
SQL 从根本上构建,以避免 数据重复。这最终 意味着任何 SQL 项目都需要一位专家设计师在实施之前花费很长时间在模式上。这个步骤不仅在长期内对维护 数据质量 很重要,而且也可能相当昂贵。
另一方面,由于 NoSQL 不要求使用模式,你可以避免初始设计阶段的费用和时间。此外,缺乏模式意味着大多数 NoSQL 数据库具有极大的灵活性,允许你更改甚至混合数据类型和模型。这使得数据库的管理和处理变得更加容易。
性能
使用 SQL 查询数据通常需要跨多个表进行。使用 NoSQL 时,所有数据都包含在一个表中,因此查询要容易得多。这也导致了 NoSQL 更擅长 处理高性能任务。例如,Amazon DB 每秒可以处理数百万个查询,这对像 Amazon 这样的全球商店非常有用。
支持
关于 NoSQL 的唯一真正的大缺点是,它没有 SQL 那么成熟。请记住,SQL 有几十年的发展历程,这种成熟度体现在信息检索的便捷性上。同样,找到 SQL 专家要比找到 NoSQL 专家容易得多。
最后,由于 NoSQL 不是单一的数据库或语言,而是数十种数据模型,这种细粒度进一步分化了任何潜在的专业知识,使 NoSQL 成为一个专业化的领域。因此,信息和支持的依赖主要会集中在较小的社区中。
NoSQL 数据库的类型
虽然有超过半打的 NoSQL 数据模型可供选择,但我们将在这里介绍四种主要模型,这些模型对 理解 NoSQL 数据库 至关重要。
文档存储
这种数据模型允许你将信息存储为任何类型的数据。这与 SQL 相对立,后者严重依赖 XML 和 JSON,本质上将二者结合起来,这可能使任何查询变得低效(或效率较低)。由于 NoSQL 不使用模式,因此无需进行关系数据存储,也无需将二者结合起来。
事实上,如果你愿意,还可以选择一个特定于 XML 的 NoSQL 数据模型。
图形
图形或网络数据模型围绕数据之间的关系这一概念构建。在这种数据模型中,信息以关系和节点的形式存储,节点保存数据,关系描述任何一组节点之间的关系。
正如名称所示,如果你一直在关注的话,这是一种展示图表信息的优秀数据模型。从不同数据集的快速可视化能力,尤其是彼此之间的关系,能够提供大量洞察,无需翻阅几百页的数据。
键值存储
正如其名称所示,这种数据模型使用键和指针来存储信息。由于键和值都可以是你想要的任何数据,键值存储数据模型非常灵活。它的目的是为了检索、存储和管理数组,适合高容量应用。
实际上,Amazon DB 是一种键值存储数据模型,这种数据模型类型是由 Amazon 自己首创的。键值存储也是一个通用类别,其中还存在其他数据模型,一些图数据模型本质上也像键值存储。
面向列的
与 SQL 传统上按行存储数据不同,面向列的数据模型按列存储数据。这些列被分组到家庭中,每个家庭可以包含几乎无限数量的列。写入和读取也按列进行,因此整个系统非常高效,旨在实现快速搜索与访问以及数据聚合。
尽管如此,它在复杂查询方面并不是很好。
结论
需要记住的一点是,NoSQL 不是为了替代 SQL,而是为了补充 SQL。NoSQL 本身主要使用专门的数据库 来填补 SQL 的不足,虽然你完全可以选择不使用 SQL,但 NoSQL 并不排除使用 SQL。有时你可能会同时使用 SQL 和 NoSQL。
简历: 亚历克斯·威廉姆斯 是一位经验丰富的全栈开发者,也是 Hosting Data UK 的所有者。亚历克斯在伦敦大学毕业,主修信息技术,之后作为开发者领导了来自世界各地客户的各种项目,工作近 10 年。最近,亚历克斯转为独立 IT 顾问并开设了自己的博客。在博客中,他探讨了网页开发、数据管理、数字营销以及为刚起步的在线企业主提供解决方案。
相关:
-
如何获得最受欢迎的数据科学技能
-
在 Azure Databricks 上使用 Spark、Python 或 SQL
-
5 个棘手的 SQL 查询解决方案
更多相关主题
NoSQL 数据库及其应用场景
作者图片
在 1970 年代,埃德加·F·科德 提出了关系数据库模型,通常称为 SQL 数据库。这些数据库主要设计用于处理具有关系模型的结构化数据。它们可以处理事务数据,即在具有预定义模式的表中存储和操作数据。著名的 SQL 数据库例子有 MySQL、PostgreSQL 和 Oracle Server。
我们的三大课程推荐
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织 IT
在 1980 年代,它们获得了巨大的流行,但之后数据需求和数据量增加,数据类型的需求变得更加多样化,以至于 SQL 数据库感到吃力。此外,它们在横向扩展方面复杂,这使得它们不适合处理大量数据。
为了应对 SQL 数据库的这些局限性,在 2000 年代初期,NoSQL 数据库出现了。它们是面向文档的数据库,使用快速的键值对存储数据。它们能够从文档中解析数据,并将数据存储在键下,而不是像 SQL 数据库那样定义严格的信息表。
NoSQL 数据库现在已成为主流,并提供了相对于 SQL 数据库的各种优势。但这并不一定意味着 NoSQL 数据库比 SQL 更好。SQL 和 NoSQL 数据库服务于不同的目的,采用不同的数据管理方法。一个用于关系数据,另一个用于非关系数据。SQL 数据库仍在使用中,当需要运行复杂查询且数据库模式已明确定义时。著名的例子有 MongoDB、Cassandra、Neo4J 和 Redis。
但在下文讨论的某些领域,NoSQL 数据库优于 SQL 数据库。
NoSQL 数据库的优势
以下是 NoSQL 数据库在某些方面表现优于 SQL 数据库的关键特性。
- 灵活性:
这意味着数据可以动态地添加或移除,而不需要更改原始数据库的结构。与 SQL 数据库不同,它们不需要严格的模式。它们被设计用来处理任何数据格式,包括结构化、半结构化或非结构化数据。这使得开发人员可以专注于应用程序开发,而不必担心数据库模式。
- 可扩展性:
NoSQL 数据库支持水平扩展,这意味着我们可以通过添加更多服务器来扩展系统,而不是增加单个服务器的容量。这使得它在处理大量请求时更强大。
- 高可用性:
由于其将数据库复制到多个服务器的特性,它为用户提供了非常低的延迟和几乎零停机时间。此外,它们还将流量分配到各个服务器,以减少单个服务器的负担。
- 性能:
它们被设计用于优化读写性能,使其适用于实时数据处理应用程序,其中每天生成数 TB 的数据。它们具有更快的查询响应时间,并支持数据库分片,从而提升整体性能。
图片由作者提供
这些是 NoSQL 数据库在某些方面比 SQL 数据库表现更好的地方。以下部分将讨论 NoSQL 数据库的类型及其使用案例。
NoSQL 数据库类型
有多种类型的 NoSQL 数据库,每种都有其自身的优点和限制。以下是一些流行的数据库类型:
键值
这是最灵活的 NoSQL 数据库。它需要键值对来存储数据。键可以是一个唯一属性,如 id,对应特定的值。应用程序可以在值字段中存储任何类型的数据。这些数据库适合实时应用、缓存或会话管理。Redis 和 Riak 是著名的键值数据库示例。
使用案例:
这个数据库最适合电子商务平台,在这些平台上,像订单、用户档案和产品目录等大量客户相关数据每天都会生成。由于其低延迟和快速处理能力,它适合实时库存管理和处理高流量。
面向文档
这些数据库以文档形式存储数据,主要是 JSON 对象。这最适合存储半结构化或非结构化数据,无需明确指定文档的字段。MongoDB 是一个著名的面向文档的数据库示例。
使用案例:
这最适合用于内容管理系统,例如博客网站。以文章、评论、分类和标签的形式存储和快速检索数据。基于文档的数据适合存储非结构化数据,如文本、图像、链接等。此外,其灵活的模式行为允许对数据模型进行轻松更改。
图数据库
这种类型的 NoSQL 数据库最适合存储彼此紧密相关的数据。它们以节点和边的形式存储数据,用于表示对象之间的复杂关系。最适合用于社交媒体应用和创建推荐引擎。著名的例子有 Neo4J 和 InfoGrid。
使用案例:
它们最适合用于创建推荐引擎。例如,Youtube 会根据用户的观看历史推荐视频。图数据库可以存储和处理互联的数据,并快速提供相关内容。
列式数据库
在这种类型的 NoSQL 数据库中,数据存储在列族中。类似类型的数据被分组到单元格中,并存储在数据列中而不是行中。一个列甚至可以包含多个行和列,这些行和列都有自己唯一的 ID。
在传统的 SQL 数据库中,查询是逐行执行的。但在列式数据库中,查询只针对我们想要的特定列执行。这节省了时间,并使其适合处理大规模数据集。它们可能看起来像 SQL 数据库,因为它们涉及某种形式的模式管理,并且与关系表的工作方式相同。但它们比 SQL 数据库更灵活和高效,因此被归类为 NoSQL 数据库。
列式数据库的流行例子包括 Apache HBase 和 Apache Cassandra。你可以阅读这篇由 Alex Williams 撰写的文章,以获取更多关于这个主题的信息。
使用案例:
列族数据库最适合用于数据仓储应用。这些应用需要分析大量数据以获得商业智能,并且具有高写入吞吐量,而列族数据库完全可以承担这些任务。
不同类型的 NoSQL 数据库 | 作者图片
结论
在本文中,我们了解了什么是 NoSQL 数据库,并初步了解了 SQL 与 NoSQL 数据库之间的根本区别。接着,我们讨论了几种流行的 NoSQL 数据库类型及其使用场景。
在 SQL 和 NoSQL 数据库之间总是存在一个选择什么? 的问题。要做出正确的选择,首先必须了解应用程序的使用案例、数据模型、可扩展性和性能,然后再决定。
希望你喜欢阅读这篇文章。如果你有任何评论或建议,请通过Linkedin与我联系。
Aryan Garg 是一名 B.Tech. 电气工程学生,目前在本科最后一年。他对 Web 开发和机器学习领域充满兴趣。他已经追求了这个兴趣,并渴望在这些方向上进一步工作。
更多相关内容
键值数据库解释
原文:
www.kdnuggets.com/2021/04/nosql-explained-understanding-key-value-databases.html
NoSQL 在我们日常生活中变得越来越重要,一些最受欢迎的平台和服务依赖它们以闪电般的速度提供内容。当然,NoSQL 涵盖了多种数据库类型,但最受欢迎的无疑是键值存储。
这种数据模型的极简设计使得它与关系数据库相比表现得极其迅速。不仅如此,由于它遵循可扩展的 NoSQL 设计理念,键值存储允许灵活性和快速启动。
我们的前三大课程推荐
1. Google Cybersecurity Certificate - 快速进入网络安全职业轨道。
2. Google Data Analytics Professional Certificate - 提升你的数据分析技能
3. Google IT Support Professional Certificate - 支持你的组织的 IT 需求
键值存储是如何工作的?
键值存储实际上非常简单。一个值(基本上可以是任何数据或信息)与一个标识其位置的键一起存储。事实上,这是几乎每种编程语言中存在的一种设计概念,如数组或映射对象。不同之处在于,它是持久化存储在数据库管理系统中的。
键值存储之所以如此受欢迎,是因为信息的存储方式类似于一种不透明的块,而不是离散的数据。因此,实际上不需要对数据库进行索引来提高性能。相反,它由于其结构方式而自行提高性能。类似地,它没有自己的语言,而是依赖简单的 get、put 和 delete 命令。
当然,这也带来了一个缺点,即从请求中获取的信息没有经过过滤。这种对数据的控制缺失在某些情况下可能会成为问题,但大多数情况下,这种交换是值得的。由于键值存储速度快且可靠,大多数程序员会解决可能遇到的任何过滤/控制问题。
键值存储的好处
作为 NoSQL 数据模型中更受欢迎的形式之一,键值存储在构建数据库时有很多好处:
可扩展性:与关系数据库相比,键值存储(如 NoSQL 一般)在水平扩展方面具有无限的可扩展性。与扩展是垂直和有限的关系数据库相比,这对于复杂和大型数据库来说是一个很大的优势。
更具体地说,它通过分区和复制来管理这方面的工作。它还通过绕过低开销的服务器调用来最小化 ACID 保证。
无/简化查询:一般来说,键值存储几乎无法进行查询,除了在特定情况下查询键,即便如此也不总是可能。因此,在会话、用户配置文件、购物车等情况下,键值存储使处理变得更便宜,因为只需一次读取请求和一次写入请求(由于数据存储的 blob 样式)。
同样,处理并发问题也更为容易,因为你只需解决一个键。
移动性:由于没有查询语言,键值存储在从一个系统迁移到另一个系统时非常容易,无需新的架构或更改代码。因此,从旧的操作系统迁移到新的操作系统不会像关系数据库那样造成严重中断。
何时使用键值存储
传统关系数据库并不适合处理大量读写操作,这正是键值存储的优势所在。由于其易于扩展,键值存储可以处理成千上万的用户。此外,凭借内置的冗余,它可以在存储或数据丢失的情况下正常工作。
因此,键值存储在以下几种情况中表现出色:
-
用户偏好和配置文件存储
-
大规模用户会话管理
-
产品推荐(例如在 电子商务平台 上)
-
根据用户的数据配置文件定制广告投放
-
仅更新数据的数据缓存
键值存储还在其他各种情况下表现良好。例如,由于其可扩展性,它通常用于大数据研究。同样,键值存储在会话管理中表现良好,无论是 Web 应用程序还是 MMO 游戏,以及管理单个玩家的会话。
另一个很好的用途是在平台上的临时和季节性购买激增。例如,在圣诞节、感恩节、国定假日等情况中。与其在全年的使用不多的基础设施上投入大量资金,不如利用键值存储的快速和简便的扩展性,商店可以购买一个或多个临时分片来帮助处理这些季节性的激增。
流行键值数据库的示例
有几种不同类型的键值数据库模型可以选择,例如,有些将数据存储在 SSD 上,而其他则存储在 RAM 上。事实上,一些最受欢迎和广泛使用的数据库是键值存储,我们在日常生活中每天都依赖它们。
Amazon DynamoDB: 可能是最广泛使用的键值存储数据库,实际上,正是对 DynamoDB 的研究真正使 NoSQL 变得非常流行。
Aerospike: 开源数据库,优化了内存存储。
Berkeley DB: 另一个开源数据库,是一个高性能的数据库存储库,尽管它相对基础。
Couchbase: 有趣的是,它允许进行文本搜索和类似 SQL 的查询。
Memcached: 通过将缓存数据存储在 RAM 中来加速网站,而且它是免费和开源的。
Riak: 为开发应用程序而设计,它与其他数据库和应用程序兼容良好。
Redis: 一个多用途的数据库,同时也充当内存缓存和消息代理。
结论
键值存储的真正优势在于它的简单性。虽然这可能是一把双刃剑,特别是在处理金融交易等更复杂的事务时,但它的目的就是弥补关系数据库的不足。通过结合关系型和非关系型数据库,我们可以创建一个更高效的管道,无论是用于数据分析还是处理用户。
亚历克斯·威廉姆斯 是一位经验丰富的全栈开发者,也是 Hosting Data UK 的拥有者。亚历克斯从伦敦大学毕业,主修 IT,之后在全球各地为客户领导了各种项目,工作了近 10 年。最近,亚历克斯转为独立 IT 顾问,并开设了自己的博客。在那里,他探讨了网页开发、数据管理、数字营销以及刚刚起步的在线企业主的解决方案。