相关文章:贝叶斯法则
朴素贝叶斯方法是一组基于贝叶斯定理的有监督学习算法,该算法的"幼稚"假设是给定类变量值的每一对特征之间的条件独立性。通过贝叶斯定理,给出 类变量 y y y 与 相关特征向量 x 1 x_1 x1 到 x n x_n xn 的关系:
P ( y ∣ x 1 , … , x n ) = P ( y ) P ( x 1 , … , x n ∣ y ) P ( x 1 , … , x n ) P\left(y \mid x_{1}, \ldots, x_{n}\right)=\frac{P(y) P\left(x_{1}, \ldots, x_{n} \mid y\right)}{P\left(x_{1}, \ldots, x_{n}\right)} P(y∣x1,…,xn)=P(x1,…,xn)P(y)P(x1,…,xn∣y)
使用朴素条件独立假设:
P ( x i ∣ y , x 1 , … , x i − 1 , x i + 1 , … , x n ) = P ( x i ∣ y ) P\left(x_{i} \mid y, x_{1}, \ldots, x_{i-1}, x_{i+1}, \ldots, x_{n}\right)=P\left(x_{i} \mid y\right) P(xi∣y,x1,…,xi−1,xi+1,…,xn)=P(xi∣y)
对于所有 i i i,关系简化为:
P ( y ∣ x 1 , … , x n ) = P ( y ) ∏ i = 1 n P ( x i ∣ y ) P ( x 1 , … , x n ) P\left(y \mid x_{1}, \ldots, x_{n}\right)=\frac{P(y) \prod_{i=1}^{n} P\left(x_{i} \mid y\right)}{P\left(x_{1}, \ldots, x_{n}\right)} P(y∣x1,…,xn)=P(x1,…,xn)P(y)∏i=1nP(xi∣y)
因为 P ( x 1 , … , x n ) P\left(x_{1}, \ldots, x_{n}\right) P(x1,…,xn) 是给定常数,我们可以使用下面的分类规则:
P ( y ∣ x 1 , … , x n ) ∝ P ( y ) ∏ i = 1 n P ( x i ∣ y ) ⇓ y ^ = arg max y P ( y ) ∏ i = 1 n P ( x i ∣ y ) \begin{array}{r} P\left(y \mid x_{1}, \ldots, x_{n}\right) \propto P(y) \prod_{i=1}^{n} P\left(x_{i} \mid y\right) \\ \Downarrow \\ \hat{y}=\arg \max _{y} P(y) \prod_{i=1}^{n} P\left(x_{i} \mid y\right) \end{array} P(y∣x1,…,xn)∝P(y)∏i=1nP(xi∣y)⇓y^=argmaxyP(y)∏i=1nP(xi∣y)
然后利用最大后验估计(Maximum A Posteriori MAP)估计来估计 P ( y ) P(y) P(y) 和 P ( x i ∣ y ) P\left(x_{i} \mid y\right) P(xi∣y);前者是类 y y y 在训练集中出现的相对频率。
不同的朴素贝叶斯分类器的区别主要在于它们对分布 P ( x i ∣ y ) P\left(x_{i} \mid y\right) P(xi∣y) 的假设。
尽管朴素贝叶斯分类器的假设明显过于简化,但它们在许多现实世界的情况下都工作得相当好,比如著名的文档分类和垃圾邮件过滤。它们需要少量的训练数据来估计必要的参数。(关于朴素贝叶斯的理论原因,以及它适用于哪些类型的数据,请参见下面的参考资料。)
与更复杂的方法相比,朴素贝叶斯学习器和分类器可以非常快。类条件特征分布的解耦意味着每个分布都可以独立地估计为一维分布。这反过来有助于缓解来自维度灾难的问题。
另一方面,虽然朴素贝叶斯被认为是一个不错的分类器,但它被认为是一个糟糕的估计器,所以来自 predict_proba
的概率输出不必太认真。
GaussianNB
实现了用于分类的高斯朴素贝叶斯算法。假设特征的似然为高斯分布:
P ( x i ∣ y ) = 1 2 π σ y 2 exp ( − ( x i − μ y ) 2 2 σ y 2 ) P\left(x_{i} \mid y\right)=\frac{1}{\sqrt{2 \pi \sigma_{y}^{2}}} \exp \left(-\frac{\left(x_{i}-\mu_{y}\right)^{2}}{2 \sigma_{y}^{2}}\right) P(xi∣y)=2πσy21exp(−2σy2(xi−μy)2)
参数 σ y \sigma_y σy and μ y \mu_y μy 被用于估计最大似然。
MultinomialNB
实现了多项分布数据的朴素贝叶斯算法,是文本分类中使用的两种经典朴素贝叶斯变体之一(在文本分类中,数据通常以单词向量计数表示,尽管 tf-idf 向量在实践中也很好用)。每个类别的分布由向量 θ y = ( θ y 1 , … , θ y n ) \theta_{y}=\left(\theta_{y 1}, \ldots, \theta_{y n}\right) θy=(θy1,…,θyn) 对每个类别 y y y 参数化,其中 n n n 是特征的数量(在文本分类中,词汇量的大小), θ y i \theta_{yi} θyi 是特征 i i i 出现在属于类别 y y y 的样本中的概率 P ( x i ∣ y ) P\left(x_{i} \mid y\right) P(xi∣y)。
通过最大似然的平滑版本估计参数 θ y \theta_y θy,即相对频率计数:
θ ^ y i = N y i + α N y + α n \hat{\theta}_{y i}=\frac{N_{y i}+\alpha}{N_{y}+\alpha n} θ^yi=Ny+αnNyi+α
其中 N y i = ∑ x ∈ T x i N_{y i}=\sum_{x \in T} x_{i} Nyi=∑x∈Txi 为训练集 T T T 中某类样本 y y y 中出现特征 i i i 的次数, N y = ∑ i = 1 n N y i N_{y}=\sum_{i=1}^{n} N_{y i} Ny=∑i=1nNyi 为类 y y y 所有特征的总数。
平滑先验 α ≥ 0 \alpha \geq 0 α≥0 解释了学习样本中不存在的特征,并防止在进一步的计算中出现零概率。设置 α = 0 \alpha = 0 α=0 称为 Laplace 平滑,而 α < 0 \alpha < 0 α<0 称为 Lidstone 平滑。
ComplementNB
实现了互补朴素贝叶斯(CNB)算法。CNB 是标准多项朴素贝叶斯(MNB)算法的一种改编,特别适合于不平衡数据集。具体来说,CNB 利用每个类的补充数据来计算模型的权重。实验结果表明,与 MNB 相比,CNB 的参数估计更稳定。此外,在文本分类任务上,CNB 通常优于 MNB(通常有相当大的差距)。权重的计算过程如下:
θ ^ c i = α i + ∑ j : y j ≠ c d i j α + ∑ j : y j ≠ c ∑ k d k j w c i = log θ ^ c i w c i = w c i ∑ j ∣ w c j ∣ \begin{array}{r} \hat{\theta}_{c i}=\frac{\alpha_{i}+\sum_{j: y_{j} \neq c} d_{i j}}{\alpha+\sum_{j: y_{j} \neq c} \sum_{k} d_{k j}} \\ w_{c i}=\log \hat{\theta}_{c i} \\ w_{c i}=\frac{w_{c i}}{\sum_{j}\left|w_{c j}\right|} \end{array} θ^ci=α+∑j:yj=c∑kdkjαi+∑j:yj=cdijwci=logθ^ciwci=∑j∣wcj∣wci
其中,求和是对所有不在类 c c c 中的文档 j j j 进行的, d i j d_{ij} dij 是文档中术语的计数或 tf-idf 值,是一个平滑超参数,就像在 MNB 中发现的那样,且 α = ∑ i α i \alpha = \sum_i \alpha_i α=∑iαi。第二种归一化处理了较长的文件在 MNB 中主要参数估计数的趋势。
c ^ = arg min c ∑ i t i w c i \hat{c}=\arg \min _{c} \sum_{i} t_{i} w_{c i} c^=argcmini∑tiwci
也就是说,一个文档被赋给了 complement match 最差的类。