1.介绍

分类是一种类型的监督机器学习问题,我们将类标签分配到观察。在本教程中,我们将学习一种快速而简单的分类方法:朴素贝叶斯分金宝搏官网188be类器。

朴素贝叶斯分类器在文本分类问题上的表现尤为出色。一些广泛采用的用例包括垃圾邮件电子邮件过滤和欺诈检测。这垃圾邮件过滤基线从20世纪90年代开始绑定到朴素的贝叶斯算法。作为另一个例子,我们可以利用一个天真的贝叶斯分类器来猜测如果一个未知语言的句子会谈论动物或没有金宝搏官网188be

首先,我们将研究这个分类器背后的理论,并理解它是如何工作的。掌握了基础知识后,我们将探讨如何提高分类性能。

朴素的贝叶斯分类器

朴素的贝叶斯分类器输入离散变量,并为每个候选类输出概率分数。预测类标签是具有最高概率分数的类标签。

它根据观察到的属性确定类标签的概率。假设每个特性都是独立的。类标签概率分数由贝叶斯定律计算:

\ [p(c | a)= \ frac {p(a \ cap c)} {p(a)} = \ frac {p(a | c)p(c)} {p(a)}}

从技术上讲,贝叶斯法律计算有条件概率p(c | a),代表概率C考虑到一种观察到。在这个公式中,C表示一组可用的类标签N课程和一种表示观察结果m属性:

\[A = {a_1, a_2,…], a_m} \]

所以,对于每次观察一种,我们将计算每个类标签的概率i = 1,2,...,n

\ [P(为C_i |) = \压裂{P (a_1,,…,a_m |为C_i) P(为C_i)} {P (a_1,,…,a_m)} \]

只有这样我们才能决定预定的班级为C_i,概率得分最高p(c_i | a)。我们将应用以下技巧来简化计算:

  • 由于每个属性都是条件独立的,我们可以直接将不同属性的条件概率相乘:

    \ [p(a_1,a_2,...,a_m | c_i)= \ prod_ {j = 1} ^ {m} p(a_j | c_i)\]

  • 概率(一页)在分母部分是恒定的。因此,在比较不同类别的分数时,我们可以忽略它。

因此,我们可以通过比较简化公式的输出来确定类标签:

\ [p(c_i | a)\ propto \ big(\ prod_ {j = 1} ^ {m} p(a_j | c_i)\ big)p(c_i)\]

\ boldsymbol {c} _ {\ boldsymbol {i}}最大概率被选择为预测类。换句话说,我们说观察一种属于课程为C_i

我们用于计算类概率的公式的有效性依赖于条件独立假设。如果两个功能编码相同的信息,则天真贝叶斯分类器将双重计数其效果并得出错误的结论。

朴素的贝叶斯分类器附带另一个隐含的假设。算法不不同地处理特征。因此,所有功能对结果具有平等的影响。有时这个假设会导致过度简化。

在实践中,我们通过从培训集中提取统计数据来培训模型。利用计算中每个功能的频率表和似然表有助于该过程:

从观察结果导出的频率表包括分组的可能特征值。可能性表包含概率值而不是不同类的出现数。使用这些表,我们通过乘法和比较操作决定观察类:

3.改善天真贝叶斯分类性能的方法

朴素贝叶斯分类器模型的性能可以通过遏制方法或者根据数据集进行交叉验证。我们可以评估模型性能具有合适的公制。在本节中,我们介绍了一些方法来增加天真贝叶斯分类器模型性能:

呈现由QuickLaTeX.com

我们需要记住,天真的贝父是一种非常简单而优雅的分类算法。一些常见的方法在天真的贝叶斯案件中不起作用。

例如,所知的第一种方法之一是调整模型的超参数。但是,朴素贝叶斯分类器具有非常有限的参数集。根据实现,有时类的数量是唯一的参数,在实践中,我们没有控制。因此,超参数调整不是改善Naive Bayes分类器精度的有效方法。

与所有机器学习算法一样,我们可以通过对数据集应用一些简单的技术,如数据预处理和特征选择,来增强朴素贝叶斯分类器。

数据预处理的一个主要步骤是处理缺失值。对于大多数模型来说,如何处理丢失的数据是一个重要的决定。然而,朴素贝叶斯分类器不受缺失值的影响。我们可以忽略它们,因为算法在模型构建和预测阶段分别处理输入特征。

3.1。删除相关特征

正如我们已经提到的那样,在模型中,高度相关的功能在模型中计算了两次。双重计数导致过度估计这些功能的重要性。因此,天真贝叶斯分类器的性能降低了。

我们需要消除相关的特征并遵守独立功能的假设。要检测和消除它们,我们可以使用相关矩阵来比较功能对。

或者,我们可以执行基于概率的特征选择。我们可以探索不同特征的组合概率,并尝试理解它们对输出变量的预测能力。

在Python中,我们可以使用Seaborn库绘制相关热图和集群图。假设我们的数据驻留在数据帧df中:

导入seaborn作为sns#计算相关性corcelions = df.cor()#绘制Heatmap SNS.HeatMap(相关性,XTickLabels = Correlelations.Columns,YTickLabels = Correlelumate.columns,Annot = True)#绘制ClusterMap SNS.ClusterMap(相关性,xticklabels = correlelation.columns,yticklabels =相关性.Columns,Annot = True)

Heatmap是一种用于可视化特征相关矩阵的常用工具。ClusterMap显示与分层群集热图的相关性。因此,读取群集图以消除相关功能更容易:

3.2。使用日志概率

乘以非常小的数字将导致更小的数字。很难精确地存储并比较这些非常小的数字。在使用概率值时,我们面临这些问题。

为避免使用非常少量的数字,我们可以通过采用概率值的对数来在日志概率空间内工作。

log函数将[0,1]范围的概率值映射到( -\ INF., 0]范围。因此,对数概率值将是负的。实际概率值越小,对数函数会将其映射为一个较大的负值:

我们需要记住,乘法操作成为对数空间的添加。因此,采取整个方程的对数给我们:

\ [log \ big(p(c_i | a)\ big)\ propto \ big(\ sum_ {j = 1} ^ {m} log \ big(p(a_j | c_i)\ big)log \ big(p(c_i)\ big)\]

这种映射方法是有效的,因为在天真贝贝斯分类,我们需要知道哪个类具有最大的概率,而不是特定概率。采用对数不会更改类标签概率分数的排序。因此,我们仍然可以决定哪个类具有最高的概率。

3.3.消除零观测问题

如果训练数据与测试集相比具有不同的频率分布,则Naive Bayes Classifier执行不佳。分类器特别受到在训练集中表示的值的影响。

如果模型跨越培训集中不存在的分类功能,则将0的概率分配给该新类别。这是非常危险的,因为乘以其他功能的概率将导致0。

即使我们使用日志概率,也存在零观察问题。因为日志(0)=  -  \ INF和求和\ INF.将取消其他功能的所有有效信息。

我们需要检查这些情况并采取动作如果测试数据集具有零频率问题。最着名的方法是使用拉普拉斯平滑。在这种技术中,我们在计算类概率时向分数和分母添加一个参数。

例如,在计算类概率时,我们可以添加平滑参数(为1):

\[P(C) |A) = \frac{P(A) |C) P(C) + 1}{P(A) + 1}\]

平滑参数可确保概率值永远不会为零。应用平滑技术为如此零频率出现分配非常小的概率估计,因此,正规化天真贝叶斯分类器。

3.4。处理连续变量

我们已经介绍了如何计算分类特征的概率值。但是,计数等于某个值的出现次数不适用于实数。

一个简单的方法,以表示类别的实际数字是离散化。我们将间隔映射到类别标签。这样,我们就有了代表不同范围的标签。然后我们使用这些标签作为类别,并相应地计算概率。

一些天真的贝叶斯实现假设连续变量的高斯分布。因此,Naive Bayes分类器使用来自Z表的概率来自观察的平均值和标准偏差。在这种情况下,检查任何数值变量的分布并相应地处理它们是个好主意。

如果连续功能不遵循正常分布,我们可以使用像核密度估计等非参数的方法来具有更现实的估计概率密度函数。我们不需要将自己限制在正常分布。相反,我们需要适当地代表这些功能。

3.5。处理文本数据

文本数据集需要特殊的预处理步骤。删除停止字,通过切换到小写使字规范化,并应用鼻塞或偏美化是常见的技术。

创建Word Embeddings有助于我们了解在同一上下文中共同使用的单词。利用word2vec或者另一个嵌入算法导致更好地表示与vectors的单词。

跟随处理单词的最佳实践和文件有助于我们提高机器学习模型的性能。

3.6。重新训练模型

对于一些复杂的机器学习算法,从头开始训练模型需要很长时间。为此,提出了在线训练等改进模型的方法。对模型的再培训通常需要大量的资源。

然而,随着新数据的积累,我们可能需要重新训练模型:

  • 使用更大的数据集进行训练可以确保更好的模型泛化
  • 动态环境中数据变化的趋势
  • 新模式可以在对抗环境中形成

与大多数算法相反,重新训练朴素贝叶斯模型的速度非常快。该算法是计算效率的。它可以轻松地处理高维数据而不受诅咒的维度。具有高基数的分类特征,也不会增加计算复杂性。结果,Naive Bayes分类器比替代分类方法更快地执行。

当新的数据可用时,我们可以很容易地重建模型。通过这种方式,我们可以检测数据集中的偏移或漂移。因此,我们保证模型的性能不会随着时间的推移而降低。

3.7。并行化概率计算

在建立朴素贝叶斯分类模型时,我们可以通过并行计算获得额外的性能。

由于独立假设,每个属性的概率都可以独立计算。因此,我们分别计算每个特征的概率。划分工作可以加快计算速度,使我们能够更容易地处理大型数据集。

3.8。使用小数据集

朴素贝叶斯分类器否认输入特征之间存在任何关系。因此,它只对输入特性和输出类标签之间的关系建模。与其他更复杂的算法相比,假设函数更简单。作为一个结果,培训阶段需要更少的数据。

此外,数据不太可能与有限的数据过度装备。由于模型省略了特征之间的任何交互,因此远远未创建高方差模型。相反,它遭受了高偏见。

3.9。合奏方法

合奏学习证明会增加绩效。套装,升压和堆叠的共同集合方法结合多种模型的结果,以产生另一个结果。合并结果的要点是降低方差。

然而,我们已经知道天真贝叶斯分类器表现出低方差。因此,将其与其他分类器混合并没有帮助。无需尝试促进分类器精度的合奏方法。

3.10。使用作为生成模型

生成模型具有生成新数据实例的能力。例如,生成的对抗性网络(GaN)是可用于合成数据集生成的。给定数据集,它会在原始分发后生成新的数据点。

朴素贝叶斯也是一种生成模型。它根据数据分布的特征来学习类。我们可以使用此模型在相同的概率分布之后创建一个新的虚拟数据集。

4.结论

在本文中,我们调查了Naive Bayes分类器,这是一种非常坚固且易于实现的机器学习算法。

我们从概率原理开始。然后我们深入研究了如何在实践中训练和使用算法。最后,我们研究了提高分类性能的方法。

总而言之,我们已经看到一些常见的实践来提高分类器性能,无法与天真贝叶斯分类器合作。概率方法具有不同的挑战,需要特殊处理。尽管如此,我们可以应用本文讨论的方法来克服可能的绩效问题。

客人
0.评论
内联反馈
查看所有评论