目录
迁移学习
特征选择
特征工程
朴素贝叶斯分类方法
支持向量机
K-最近邻(K-Nearest Neighbors, KNN)
特征向量稀疏
卷积神经网络
循环神经网络
图神经网络
TextCNN
动态 K 最大池化
One-hot
BOW
Word2vec
池化(Pooling)
全连接层(Fully Connected Layer,简称 FC 层)
TF-IDF(Term Frequency-Inverse Document Frequency)
迁移学习
一种机器学习技术,它将已经在一个任务上训练好的模型的知识应用到另一个相关任务上。迁移学习的基本思想是,许多任务之间存在共性,某些任务中的知识可以帮助提升其他任务的表现,特别是在数据量有限的情况下。
迁移学习的应用场景:
-
相似任务的模型迁移:例如,在一个拥有大量标注数据的任务上训练模型(如ImageNet图像分类任务),然后将该模型用于其他类似的图像识别任务(如医疗图像分类)。
-
预训练和微调:常见的做法是在一个大规模数据集上预训练模型(例如,BERT、GPT等),然后对特定任务进行微调。预训练的模型通过学习大量基础知识,微调时只需要针对特定任务进行少量调整即可。
-
跨领域迁移:如果在某个领域的数据有限,通过在不同领域的相关任务上进行迁移学习,仍能获得良好的性能。例如,从自动驾驶数据集中学习的模型可以帮助无人机图像分类任务。
通过迁移学习,AI系统能够更好地适应多样化的任务和场景,并提高其通用性和实用性。
特征选择
特征选择(Feature Selection)是机器学习和数据挖掘中的一个重要步骤,旨在从原始数据集中选择最具代表性的特征(变量或属性),以提高模型的性能并减少计算成本。
特征选择有助于简化模型、提升效率,并且增强模型的解释性。
特征工程
特征工程(Feature Engineering)是机器学习中非常重要的一个步骤,指的是从原始数据中创建、选择或转换特征,以增强机器学习模型的性能。它是将数据转换为模型能够有效学习的特征形式的过程。
特征工程的主要任务包括:
-
数据清洗:处理缺失值、异常值和重复数据,确保数据质量。
-
特征构建:从现有数据中创建新的特征。例如,时间戳可以转换为年、月、日等信息,或通过两个变量的比值生成新的特征。
-
特征转换:将原始特征进行缩放、标准化、对数变换或归一化,以便更好地匹配模型的输入要求,特别是对于某些距离度量敏感的模型(如K近邻、SVM)。
-
特征编码:将类别型特征转换为数值型特征(如独热编码、标签编码)以便模型可以处理。
-
特征选择:通过选择最具相关性或信息量的特征,减少数据维度,提升模型的性能。
-
特征提取:通过降维技术(如主成分分析 PCA)或深度学习方法(如卷积神经网络 CNN)来提取有效特征。
特征工程的质量直接影响机器学习模型的性能,它需要结合领域知识、数据分布以及模型的需求来进行优化。一个好的特征可以显著提升模型的效果,甚至比选择复杂的算法更为重要。
朴素贝叶斯分类方法
朴素贝叶斯分类方法(Naive Bayes Classifier)是一类基于贝叶斯定理的简单而高效的分类算法,常用于文本分类、垃圾邮件检测等任务。该方法“朴素”的部分是指它假设每个特征都是相互独立的,尽管在实际应用中,这个假设往往不成立,但朴素贝叶斯算法在许多任务中仍然能表现出良好的效果。
朴素贝叶斯分类算法可以用很简单的方式来理解,就是**“根据过去的经验来猜测未来”**。
你要预测今天会不会下雨。你可以根据几个“线索”来做判断,比如:天空有没有乌云、气温冷不冷、昨天是不是下雨了。
这些线索就像是特征。而朴素贝叶斯算法会根据历史数据,计算每个线索下雨的可能性,然后把这些可能性结合起来,做出一个综合判断,看看今天下雨的可能性有多大。
为什么叫“朴素”?
朴素贝叶斯有个简单的假设:这些线索(特征)是互不相关的。也就是说,它假设乌云和气温是独立的,彼此不会影响。虽然这在实际生活中不一定是真的,但算法在很多情况下还是很管用的。
举个例子:
假设你想知道一封邮件是不是垃圾邮件。你可以根据邮件中的关键词来判断,比如“免费”、“中奖”、“折扣”等。朴素贝叶斯会查看历史数据中这些词语在垃圾邮件中出现的频率,然后根据这些关键词的出现情况,计算邮件是垃圾邮件的概率。如果这些词频率很高,系统就会判断这封邮件很有可能是垃圾邮件。
朴素贝叶斯分类器就像是根据历史经验,看到一些线索,然后用数学方法计算每个类别的可能性,最终选择最有可能的结果。虽然它假设这些线索是独立的,但在实际问题中依然表现不错。
支持向量机
支持向量机(Support Vector Machine, SVM)是一种监督学习算法,主要用于分类任务,也可以用于回归和异常检测。SVM 的核心思想是通过找到最佳的决策边界来将不同类别的数据点分开,从而实现分类。这个边界被称为超平面。
主要概念:
-
超平面:在 SVM 中,超平面是将不同类别数据分开的线(在二维空间)或面(在高维空间)。SVM 的目标是找到一个最大化类别间间隔的超平面。
-
支持向量:支持向量是指离超平面最近的训练数据点。这些点对于定义分类边界(超平面)至关重要,超平面是由这些点决定的。
-
最大间隔(Margin):SVM 的目标是找到一个决策超平面,使得两个类别的最近样本点之间的距离最大化。这个距离称为间隔(Margin)。SVM 会在所有可能的超平面中,选择那个能最大化间隔的超平面,因为这可以减少分类错误的风险。
SVM 分类的工作原理:
- SVM 寻找的是最优超平面,该超平面能最大化数据点与其间的间隔,以达到分类的目的。
- 在二维平面上,SVM 寻找一条直线将数据点分为两个类别;在三维或更高维度空间中,寻找的是一个超平面。
支持向量机(SVM)可以通俗地理解为一种用来划分不同类别的算法。它的核心思想是找到一条“最优的分界线”(或者在高维空间中是一个“平面”),把不同类别的数据尽可能清楚地分开。
想象一下:
你有两组不同颜色的点,比如红色点和蓝色点,SVM 的目标就是找到一条线,能够把这两种颜色的点分开。而且,它不仅仅是随便找一条线,而是找到那条能让红点和蓝点离得最远的线。这条线让两边的点之间的距离尽可能大,这样即使有新的点进来,也更容易知道该属于哪一类。
如果不能用一条线分开怎么办?
有时候,数据可能不能用一条简单的线分开,比如点分布得很复杂。SVM 会用一种“技巧”把这些点映射到一个更高维度的空间,在那个空间里就可以用一条线或者平面来分开它们。
- 支持向量:那些离分界线最近的点叫“支持向量”,它们决定了分界线的位置。
- 最大化间隔:SVM 尽量让分界线到两组点的距离最大化,这样可以让分类更加稳健,不容易出错。
K-最近邻(K-Nearest Neighbors, KNN)
-
K-最近邻(K-Nearest Neighbors, KNN)是一种非常简单、直观的机器学习算法,常用于分类和回归任务。它的基本思路是“物以类聚,人以群分”,即我们根据数据点在空间中的邻居来进行分类或预测。
-
核心思想:
KNN 的主要思想是:给定一个待分类的数据点,找出它在数据集里最近的 K 个邻居,然后根据这些邻居的类别来决定它属于哪个类别。具体来说:
- 分类任务:KNN 会根据 K 个最近邻居中,哪个类别的邻居最多,就把待分类的点归为该类别。
- 回归任务:KNN 会根据 K 个最近邻居的数值进行平均,得到预测结果。
K-最近邻(KNN)可以通俗地理解为一种**“靠近谁就像谁”的算法。它的核心是
通过查看某个数据点附近的点** 来判断它应该属于哪个类别。
想象一下:
假设你想知道一个人喜欢什么类型的音乐,但是你不知道答案。你就去问他周围几个朋友(比如问 3 个人,也就是 K=3)。如果这 3 个人中有 2 个人喜欢摇滚音乐,那么你可能会猜测这个人也喜欢摇滚音乐。这个“靠近的人”就是他最“近的邻居”。
工作流程:
你选择一个 K 值,比如 3,5,或者更多,表示你要看这个人最靠近的 K 个朋友。 找最近的邻居:看看这个人最接近哪几个人(通过“距离”来计算谁最近)。 投票决定类别:根据这些邻居中大多数喜欢的音乐类型,来推断这个人喜欢什么。
特征向量稀疏
特征向量高度稀疏是指在机器学习中,特征向量的大部分元素都是零,只有很少一部分有非零值。
什么是特征向量?
特征向量是指用于表示数据点的一组特征值,通常是一个多维的数值向量。每个维度表示一个特征,数值代表该特征的值。
稀疏意味着在特征向量中,很多维度的值是零。比如,如果一个特征向量有 1000 个特征值,但其中只有 10 个是非零值,剩下的 990 个都是零,这就是一个高度稀疏的特征向量。
卷积神经网络
卷积神经网络(Convolutional Neural Network,简称 CNN)可以通俗地理解为一种专门用来看图和处理图像的神经网络。它能够自动学习图片中的特征,比如边缘、形状、颜色等,帮助我们解决图像分类、目标识别等问题。
卷积神经网络的工作原理:
看局部细节:想象你看一张图片,不会一下子看完整个图,而是先看一小块区域,比如你看一张猫的图片,可能首先注意到猫的耳朵、眼睛、胡须等细节。CNN 就是这样,它通过“卷积层”来逐块扫描图像,找出局部的特征。
逐层识别:在卷积神经网络中,第一层可能识别简单的边缘或颜色变化,接下来的层逐渐会看得“更深”,从简单的线条、圆形逐渐变成更复杂的形状(如眼睛、鼻子),最后到整张猫的轮廓。每一层网络都会提取出更复杂、更抽象的特征。
共享信息:CNN 不像传统神经网络那样每个像素都单独处理。它的“卷积核”相当于一个滤镜,用这个滤镜扫描整张图,帮助我们发现图中某些模式(比如边缘或颜色渐变)。同一个滤镜在整个图像上共享,能大幅减少计算量。
池化层:在 CNN 中还有一个叫“池化层”的过程,简单来说,它就像缩小图片一样,保留重要的特征,同时减少图像的大小,这样可以加快计算并去掉一些不重要的细节。
最后做分类:经过一系列卷积层和池化层处理后,CNN 会逐渐把图片转换成一个高度抽象的特征向量,最后通过全连接层来进行分类。比如,CNN 最后会得出一个结果:“这张图片是猫的概率是 90%,是狗的概率是 10%”。
卷积神经网络就像是一步步解读图片的机器,它先从局部细节入手,逐层提取越来越复杂的特征,最终得出图片的整体理解并做出判断。
循环神经网络
循环神经网络(Recurrent Neural Network,简称 RNN)是一种特别擅长处理序列数据的神经网络。它可以理解和记住前后顺序,特别适合用在处理像时间序列、文本、语音等有上下文关联的信息上。
RNN :有记忆力的网络
普通的神经网络在处理数据时,只看一次输入,然后直接给出结果。但是 RNN 不一样,它能够记住之前输入的信息,并用它来影响后续的输出。
举例:
假设你在读一句话:“我今天吃了一个苹果。” 看到“苹果”这个词时,你已经看过前面“我今天吃了一个”,所以你知道这里指的是水果。RNN 就是这样工作的,它通过记住之前看到的词,帮助理解后面的词。
RNN 的工作方式:
-
循环连接:RNN 的特别之处在于它的“循环结构”。它会把当前时间步的输入和之前的“记忆”结合起来。也就是说,RNN 的输出不仅依赖于当前输入,还依赖于之前的输入,这样它就能理解序列的上下文信息。
-
记住信息:每个时间步的输出都会被传递到下一个时间步,像接力一样。因此,RNN 在处理当前输入时,也考虑了之前的输入,就像人在理解一段对话时,总是会记住前面说过的内容。
应用场景:
- 文本生成:RNN 可以根据之前的文字生成新的文字,比如你在手机上打字时,它会根据你输入的前几个字,预测你想输入的下一个字。
- 机器翻译:RNN 能够处理一整段话,从一门语言翻译成另一门语言,因为它能够理解句子结构。
- 语音识别:当你讲话时,RNN 能够根据之前的语音内容来更准确地理解你当前说的词。
但 RNN 也有问题:
普通的 RNN 在处理特别长的序列时,会遇到“遗忘问题”,它不太擅长记住非常远的上下文信息。为了解决这个问题,有一些改进版本,比如 LSTM(长短期记忆网络)和 GRU(门控循环单元),它们可以更好地记住长期信息。
图神经网络
图神经网络(Graph Neural Network,简称 GNN)是一种专门用来处理图结构数据的神经网络。图结构数据跟普通的表格数据或图像不同,它是由节点和边组成的,就像社交网络、道路地图或者分子结构那样,GNN 能够理解并学习这些复杂关系中的信息。
“图”
在这里,“图”并不是我们平时看的那种图片,而是由点和线组成的结构:
- 节点(点):表示图中的元素,比如社交网络中的每个人、地图上的每个地点,或者分子中的原子。
- 边(线):表示节点之间的关系或连接,比如朋友关系、两地之间的道路,或原子之间的化学键。
GNN 的工作原理可以通俗地理解为:学习点和点之间的关系,并根据这些关系做出预测。
举例:猜你认识 共同好友
想象你在社交网络上,GNN 想要预测你可能认识的人。它会根据你已经认识的朋友,以及这些朋友的朋友,来推测你可能认识哪些人。GNN 的强大之处在于,它能利用你朋友的朋友(节点的邻居)来推断更多信息,类似于社交网络中的“共同好友”推荐功能。
GNN 的基本思想:
-
消息传递:每个节点会从它的“邻居节点”那里获取信息,并结合自己的信息进行更新。这就像在社交网络上,你不仅仅知道自己的信息,还会参考朋友们的信息。
-
节点更新:每个节点通过不断地从邻居处获取信息,然后更新自己。这是 GNN 学习的过程,最终每个节点会有一个包含它自己和周围邻居信息的表示。
-
全局信息:GNN 不仅仅看单个节点,它能够综合整个图的结构,理解各个节点和它们之间的关系。这让它能够处理非常复杂的网络结构。
GNN 的应用:
- 社交网络推荐:根据你和其他用户的关系,推荐可能认识的人或你感兴趣的内容。
- 分子结构分析:在化学领域,GNN 可以用于分析分子中的原子结构,帮助发现新药物。
- 交通预测:利用城市中的道路图,预测交通拥堵情况。
TextCNN
一种专门用于处理文本分类任务的卷积神经网络模型,它的核心思想是借用 CNN(卷积神经网络)擅长处理图像的特性,来自动提取和识别文本中的重要特征,从而对文本进行分类。
理解:
你可以把 TextCNN 想象成一个“理解文本的滤镜”。它通过一系列“卷积操作”来扫描文本的不同部分,并从中提取出关键信息,帮助识别文本的类别。
TextCNN 的工作原理可以分为几个简单的步骤:
把文本转换成数字表示:首先,TextCNN 会将文本数据转换成一个“数字矩阵”,每个单词被表示成一个向量(比如通过词嵌入技术如 Word2Vec 或 GloVe),让文本变成一个像图像一样的二维矩阵。这一步相当于让文本变得“可计算”,就像图像的像素那样。
卷积操作:卷积层就像是一块滑动窗口,它会从文本中不同的局部(比如几个连续的单词)中提取出有用的特征。就像你在看一段文章时,眼睛不会一次性扫过整段内容,而是逐字逐句地看,慢慢找出重点。卷积层通过“滑动窗口”来捕捉短语、词组或局部信息。
池化操作:池化层就像是在每个局部提取的特征中找到最重要的信息。它帮助简化特征,同时保留关键信息,就像你快速浏览一段文字时,只提取出最重要的关键词。
特征组合和分类:经过卷积和池化操作,TextCNN 就得到了文本的关键信息,这些信息会被组合起来,输入到最后的分类层。分类层根据这些特征,判断出文本属于哪个类别。比如,如果是情感分类任务,它会判断这段文字是“正面”还是“负面”。
举例
假设你有一段评论:“这个产品真的很好用!” TextCNN 会把这句话转换成数字表示,然后通过卷积层识别出句子中的重要部分,比如“很好用”。最后,模型根据这些关键信息判断这段评论是“正面”评论。
TextCNN 是一种使用 CNN 处理文本的模型,它会逐步扫描文本中的重要部分,提取出关键的词组和短语,最后通过这些信息进行分类。它可以非常有效地解决文本分类任务,比如情感分析、垃圾邮件分类等。
动态 K 最大池化
是一种池化方法,常用于卷积神经网络中,特别是在处理文本时。简单来说,池化是为了缩小数据的大小,同时保留最重要的信息,而动态 K 最大池化就是选出每个区域里前 K 个最重要的值。
把动态 K 最大池化想象成一场比赛,选出“最重要的词”。假设你有一段话,通过卷积操作提取了很多特征(可能是句子中的一些单词、短语)。但是,这些特征太多了,你不可能全都用上。这时,池化操作就相当于进行“筛选”。
最大池化:就像你每次只选出最强的一个选手(最大的值),忽略掉其他选手。
动态 K 最大池化:不是只选一个,而是根据句子长度和内容,灵活地选出前 K 个重要的特征(K 可以变化),这些特征代表句子中最关键的信息。它不像固定池化只选一个值,而是灵活选取不同数量的重要信息。
举例:
假设你有一个句子:“这个电影非常精彩,剧情紧凑,演员表现出色”。如果使用动态 K 最大池化,模型可能会选出“精彩”、“剧情”、“演员”作为最重要的几个词,而忽略掉不那么重要的词。
总结:
动态 K 最大池化是一种灵活的池化方法,它会根据数据的结构,在每个区域里选出前 K 个最重要的值,而不是只选一个。这有助于保留更多关键信息,尤其在处理像文本这样的数据时很有用。
One-hot
独热编码(One-Hot Encoding)是一种把分类数据转换成数字形式的方法,特别适合用于机器学习模型中。
理解:
假设有一组分类数据,比如水果种类:"苹果"、"香蕉" 和 "橙子"。计算机无法直接理解这些文字,所以我们需要用数字来表示它们,但不能简单用 1、2、3 这样的数字,因为这样会让模型误以为这些数字之间有大小关系。独热编码就是把每个类别转换成一串只有一个 1,其他全是 0 的向量,这样就不会引入错误的顺序或大小关系。
举个例子:
你有三种水果:苹果、香蕉 和 橙子。我们可以通过独热编码把它们变成三维向量:
- 苹果 → [1, 0, 0]
- 香蕉 → [0, 1, 0]
- 橙子 → [0, 0, 1]
独热编码就是把分类数据变成只有一个位置是 1,其他都是 0 的向量,这样可以让计算机更好地理解不同的类别,没有顺序或大小的误解。
BOW
词袋模型。该模型忽略文本自身的语法和语序,将所有单词映射到一个索引数组中,文本中的句子被表示为向量,向量元素为句子中单词在索引数组里的频率。
词袋模型(Bag of Words,简称 BoW)是一种非常简单的文本表示方法,用来把文字转换成数字形式,方便机器学习模型理解和处理。
理解:
你可以把词袋模型想象成数数单词的游戏。它不关心单词的顺序,也不管句子结构,只在乎每个单词出现了几次。每篇文章或句子都可以看作一个单词袋,袋子里装着这篇文章的所有单词,然后我们只关心每个单词在这个“袋子”里出现了几次。
举例:
假设你有两句话:
- "我喜欢苹果"
- "我不喜欢香蕉"
首先,词袋模型会先建立一个词汇表,列出所有可能出现的单词。比如这两句话的词汇表是:["我", "喜欢", "苹果", "不", "香蕉"]。
接下来,我们对每句话进行编码,记录词汇表中每个单词在句子里出现的次数:
- "我喜欢苹果" → [1, 1, 1, 0, 0] ("我"、"喜欢"、"苹果"各出现 1 次,"不" 和 "香蕉" 没有出现)
- "我不喜欢香蕉" → [1, 1, 0, 1, 1] ("我"、"喜欢"、"不" 和 "香蕉"各出现 1 次,"苹果"没有出现)
每句话都被表示成一个由数字组成的向量,代表单词的出现次数。
关键点:
- 忽略顺序:词袋模型完全不管单词的顺序,只关心每个单词出现的频率。
- 简单易用:因为它只数单词,所以非常简单和直观,适合处理基础的文本分类任务。
缺点:
词袋模型的主要缺点是它忽略了单词之间的上下文和顺序信息,导致句子像“我不喜欢苹果”和“我喜欢苹果不”会被认为几乎相同(尽管意思完全不同)。
总结:
词袋模型就是把一段文本看成一个装满单词的袋子,然后数一数每个单词出现了几次,通过这种方式把文本转换成可以用于机器学习的数字形式。
Word2vec
利用局部上下文信息生成词向量,主要包含CBOW和Skip-gram两种模式,CBOW根据上下文周围的单词预测中间单词,而Skip-gram则通过给定的单词预测其邻近单词。
池化(Pooling)
一种在卷积神经网络(CNN)中常用的操作,目的是缩小数据的尺寸,同时保留最重要的信息。它可以让模型更高效地处理数据,减少计算量,并且帮助模型在处理数据时更加稳定。
理解:
把池化想象成缩小图片的过程,但在缩小的过程中,你只保留那些最关键的部分。假设你有一张大图片,里面有很多细节。池化就像是把这张图片“压缩”成一张更小的图片,只留下那些重要的特征,比如轮廓或颜色的变化。
常见的池化方式
最大池化(Max Pooling):你可以把最大池化理解为挑最大的值。假设有一块 2x2 的区域,池化操作会选择其中最大的一个数值,作为这块区域的代表。这样做相当于只保留每个区域中最突出的特征。
举个例子:如果有一个 2x2 的矩阵 [1, 3, 2, 5],经过最大池化后,这个区域会被表示成 5,因为它是最大值。
平均池化(Average Pooling):平均池化则是取一个区域内的平均值。这样可以保留整个区域的整体信息,而不是单单挑出最大的值。举个例子:如果同样是 [1, 3, 2, 5],经过平均池化后,结果是 (1+3+2+5)/4 = 2.75。
池化的作用
- 缩小数据尺寸:通过池化,原始的输入数据变得更小,更易于处理。
- 减少计算量:因为池化后数据变小了,模型需要处理的计算量也随之减少。
- 减少过拟合:池化去掉了不重要的细节信息,模型更容易关注关键特征,防止过拟合。
- 保持重要特征:虽然尺寸缩小了,但池化会尽可能保留图片或数据中最重要的信息。
池化就是一种缩小数据的操作,它通过提取每个小区域的最大值或平均值,来保留关键特征,同时减少数据大小和计算量。在 CNN 中,池化帮助模型简化数据处理并提高效率。
全连接层(Fully Connected Layer,简称 FC 层)
是神经网络中的一种基础结构,主要用于将前面层提取到的特征组合在一起,并用于做最终的决策或分类。它的名字来源于每个神经元与上一层的所有神经元都连接在一起。
理解:
把全连接层想象成做最后决定的那一部分。之前的层(比如卷积层、池化层)已经帮你从数据里提取出了重要的特征,全连接层就像是根据这些特征进行综合分析,然后得出最终的结果。
工作方式
所有节点互相连接:全连接层中的每个神经元(节点)都与上一层的所有神经元有连接。这意味着每个神经元都能接收到上一层输出的所有信息,这样它可以基于所有特征做出决策。
权重和偏置:每条连接线都有一个“权重”,表示这条线的“重要性”。神经元还会有一个“偏置”,相当于给每个神经元加一个额外的影响,帮助模型更好地拟合数据。
综合特征,做出决策:全连接层把所有特征结合起来,计算出一个结果。比如,在图像分类中,最后一层全连接层会输出多个值,每个值对应一个类别(猫、狗等),模型会选择最高的那个作为最终的分类结果。
总结:
全连接层就是神经网络中的决策层,它把前面提取到的特征全部组合在一起,并根据这些信息做出最终的判断。在分类任务中,它会决定数据属于哪个类别,比如识别图片是“猫”还是“狗”。
TF-IDF(Term Frequency-Inverse Document Frequency)
是一种用于衡量单词在文档中重要性的方法,常用于文本挖掘和信息检索。简单来说,它帮助我们找出一篇文章中哪些词更重要,而不仅仅是出现次数最多的词。
理解
你把 TF-IDF 想象成一种单词打分系统。它会给每个单词打分,分数越高,表示这个单词在当前文档中越重要。它的核心思想是:一个单词在某篇文章中出现得越多,但在其他文章中出现得越少,它就越重要。
TF-IDF 的组成
TF(词频):
- 词频表示的是一个单词在一篇文章中出现的次数。TF 越高,表示这个单词在文章中出现得越频繁。
- 举个例子:在一篇关于苹果的文章里,“苹果”可能出现了很多次,所以它的 TF 会很高。
IDF(逆文档频率):
- 逆文档频率衡量的是一个单词在所有文档中出现的频率。如果一个单词在很多文档中都出现过,IDF 就会很低,表示这个词可能没那么特别,反之,如果一个词只在少数文档中出现,IDF 会很高。
- 比如,像“的”这样的常见词在几乎所有文章中都会出现,所以它的 IDF 会很低;而“苹果”这个词在科技文章中可能很常见,但在其他类型的文章中不常出现,所以它的 IDF 相对较高。
举例
假设我们有三篇文章:
- "苹果好吃,苹果很甜。"
- "香蕉好吃,苹果不如香蕉。"
- "葡萄酸,苹果甜。"
对于文章 1 来说,“苹果”的 TF 会很高,因为它出现了多次;同时,“苹果”在所有三篇文章中都出现了,所以它的 IDF 可能不会太高。但如果某个专有名词只在一篇文章中出现过,它的 IDF 就会很高,表明它对这篇文章有独特的重要性。
TF-IDF 的作用:
- 找到重要的单词:它能帮助我们找出一篇文章中最有意义的词,忽略那些像“的”、“是”这样的常见词。
- 文本分类、搜索引擎:TF-IDF 常用于搜索引擎,用来判断哪些关键词对某篇文章最重要,帮助提高搜索结果的相关性。
研一小白,初步涉猎NLP领域,江湖之大 还望各路英雄,不吝赐教!