美文网首页深度学习 神经网络python专题python干货
机器学习-贝叶斯分类和朴素贝叶斯

机器学习-贝叶斯分类和朴素贝叶斯

作者: 升不上三段的大鱼 | 来源:发表于2021-03-01 08:47 被阅读0次

    1. 贝叶斯准则

    首先介绍一下基本概念(概率论基础就不多了):

    • x \in \mathbb{R}^d:d维特征向量
    • y:分类编号,对于二分类问题就是{0,1}或者{-1, +1}
    • p(y):先验概率
    • p(x):证据因子(d维特征空间的特征分布)
    • p(x,y):联合概率密度函数
    • p(x | y):类条件密度
    • p(y|x):后验概率
    • 贝叶斯准则
      p(y|x)=\frac{p(y) \cdot p(x|y)}{p(x)}

    L(y_1, y_2)是一个损失函数,其中y_1表示预测的分类, y_2表示真实的分类,那么这个损失函数就是:L(y_1, y_2) = \begin{cases} 0, if \quad y_1=y_2\\ 1,else \end{cases}
    我们想要寻找一个最优的判定准则,使得分类的平均损失最小:
    y^* = \mathop{argmin}_{y} \sum_{y'}L(y',y) \cdot p(y'|x)
    计算可得贝叶斯最优分类器:
    \begin{equation} y^* = \mathop{argmax}_{y}(p(y|x)) =\mathop{argmax}_{y} \frac{p(y) \cdot p(x|y)}{p(x)} \end{equation}
    可以看到,对于一个分类模型,关键在于计算后验概率 p(y|x)。直接建模估计后验概率p(y|x)的被称为判别模型(discriminative model);而根据贝叶斯公式,估计先验概率p(y)和条件概率p(x| y)的模型被称为生成模型(generative model)。

    常见的生成模型包括朴素贝叶斯,隐马可夫模型等;常见的判别模型有决策树、神经网络、SVM等。

    2. 朴素贝叶斯

    上面提到的贝叶斯分类器需要估计联合概率,在计算上会遇到组合爆炸的问题。而朴素贝叶斯假设特征之间相互独立,可以说是非常简单朴素的假设,又被叫做“Idiot's Bayes”。

    特征向量的所有d个特征都是相互独立的,因此可以得到:
    p(x|y) = \sum_{i+1}^d p(x_i|y)
    根据上面贝叶斯判定准则,可以得到朴素贝叶斯的判定准则:
    y^* = \mathop{argmax}_{y} p(y|x)
    \quad = \mathop{argmax}_{y} p(y)p(\mathbf{x}|y)
    \quad = \mathop{argmax}_{y} p(y)\prod_{i=1}^d p(x_i|y)

    朴素贝叶斯虽然很简单,但是应用仍然很广泛。

    放一个调用sklearn的代码(调包真的快乐):

    from sklearn.datasets import load_iris
    import pandas as pd
    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn.naive_bayes import GaussianNB
    from sklearn.metrics import accuracy_score
    
    data = load_iris() #读入iris数据集
    X, y, column_names = data['data'], data['target'], data['feature_names']
    X = pd.DataFrame(X, columns=column_names)
    X_train, X_val, y_train, y_val = train_test_split(X,y, random_state=44) #划分训练集和测试集
    
    model = GaussianNB() #调用朴素贝叶斯模型
    model.fit(X_train, y_train) #训练
    acc = accuracy_score(y_val, model.predict(X_val)) #预测
    
    print(acc)
    # 0.9210526315789473
    

    如果想自己实现朴素贝叶斯,也可以参考:https://towardsdatascience.com/implementing-naive-bayes-in-2-minutes-with-python-3ecd788803fe

    相关文章

      网友评论

        本文标题:机器学习-贝叶斯分类和朴素贝叶斯

        本文链接:https://www.haomeiwen.com/subject/xfjofltx.html