<统计学习方法>3 朴素贝叶斯法(Naive Bayes)

  • 朴素贝叶斯法是基于贝叶斯定理特征条件独立假设的分类方法
  • 对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布
  • 然后基于此模型,对给定的输入 x,利用贝叶斯定理求出后验概率最大的输出y
  • 朴素贝叶斯法与贝叶斯估计是不同的概念
朴素贝叶斯法的学习与分类
基本方法
  • 通过训练数据集学习联合概率分布 P(X, Y),具体地是通过学习以下先验概率分布及条件概率分布来学习到该联合概率分布:
    • 先验概率分布:
      P(Y=ck),k=1,2,K
    • 条件概率分布:
      P(X=x|Y=ck)=P(X(1)=x(1),,X(n)=x(n)|Y=ck),k=1,2,,K
    • 其中,X 是定义在输入空间 X 上的随机向量, Y 是定义在输出空间 Y 上的随机变量。输出空间表示为类标记集合 Y={c1,c2,,ck} .
    • 输入为特征向量 xX , 输出为类标记(class label) yY
  • 条件概率分布 P(X=x|Y=ck) 有指数级数量的参数,其估计实际是不可行的。而朴素贝叶斯对这个条件概率分布作了条件独立性的假设,这显然是个很强的假设,而naive也是这样得来的。条件独立性假设如下:
    P(X=x|Y=ck)=P(X(1)=x(1),,X(n)=x(n)|Y=ck)=j=1nP(X(j)=x(j)|Y=ck)

    • 朴素贝叶斯法实际上学习到生成数据的机制,所以属于生成模型
  • 在其分类时,对给定的输入 x, 通过学习到的模型计算后验概率分布 P(Y=ck|X=x) ,将后验概率最大的类作为 x 的类输出。后验概率计算根据贝叶斯定理得到:
    P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)kP(X=x|Y=ck)P(Y=ck)

    • 将以上两个公式结合可得出朴素贝叶斯法分类的基本公式:
      P(Y=ck|X=x)=P(Y=ck)nj=1P(X=x(j)|Y=ck)kP(Y=ck)nj=1P(X(j)=x(j)|Y=ck)c=1,2,,K
    • 朴素贝叶斯分类器可表示为:
      y=f(x)=arg maxck P(Y=ck)nj=1P(X=x(j)|Y=ck)kP(Y=ck)nj=1P(X(j)=x(j)|Y=ck)
    • 因为上式分母对所有 ck 都是相同的,所以只用最大化上面的分子就行了
后验概率最大化的含义
  • 朴素贝叶斯法将实例分到后验概率最大的类中,等价于期望风险最小化。假设选择0-1损失函数:
    L(Y,f(X))={1,Yf(X)0,Y=f(X)

    • 其中 f(X) 是分类决策函数
    • 此时,期望风险函数为
      Rexp(f)=E[L(Y,f(X))]
    • 期望是对联合分布P(X,Y)取的,得
      Rexp(f)=EXk=1K[L(ck,f(X))]P(ck|X)
  • 为了使期望风险最小化,只需对X=x逐个极小化:
    f(x)=arg minyYk=1KL(ck,y)P(ck|X=x)=arg minyYk=1KP(yck|X=x)=arg minyY(1P(y=ck|X=x))=arg maxyYP(y=ck|X=x)

    • 根据上式,最后得出的就是后验概率,所以期望风险最小化变成了后验概率最大化。
朴素贝叶斯法的参数估计
极大似然估计
  • 在朴素贝叶斯法中,学习意味这估计 P(Y=ck) P(X(j)=x(j)|Y=ck) , 可以应用极大似然估计法估计相应的概率。
  • 先验概率 P(Y=ck) 的极大似然估计是:
    P(Y=ck)=Ni=1I(yi=ck)N,k=1,2,...,K
  • 设第 j 个特征 x(j) 可能取值的集合为 {aj1,aj2,,ajSj,} ,则条件概率的极大似然估计为
    P(X(j)=ajl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)Ni=1I(yi=ck)

    • j=1,2...,n , x(j)i 是第 i 个样本的第 j 个特征值
    • l=1,2...,Sj , x(j)i 是第 j 个特征可能取的第 l 个值
    • I 为指示函数
学习与分类算法
  • 步骤就是: 先计算先验概率和条件概率,然后计算可能的后验概率,选最大的后验概率作为最终的分类
  • 算法符号太多,直接上实例:
    这里写图片描述
贝叶斯估计
  • 用极大似然估计可能会出现所要估计的概率值为0的情况,这会影响到后验概率的计算结果,使分类产生偏差。解决这个问题的方法就是采用 贝叶斯估计
  • 条件概率的贝叶斯估计为:
    Pλ(X(j)=ajl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)+λNi=1I(yi=ck)+Sjλ

    • 其中, λ0 ,等价于在随机变量各个取值的频数上赋予一个整数 λ>0
    • λ=0 时就是极大似然估计,常常取 λ=1 ,这时称为拉普拉斯平滑(Laplace smoothing)
  • 先验概率的贝叶斯估计为:
    Pλ(Y=ck)=Ni=1I(yi=ck)+λN+Kλ

    • 实例如下:
      这里写图片描述
To to list
  • 极大似然估计法?如何推出上面的式子
  • 贝叶斯估计?如何推出上面的式子
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
统计学习方法是一种基于统计理论和机器学习方法,用于从数据中学习模型并进行预测和决策。朴素贝叶斯统计学习方法中的一种经典算,它基于贝叶斯定理和特征条件独立假设,常用于文本分类、垃圾邮件过滤等任务。 下面是一个简单的朴素贝叶斯分类器的代码示例: ```python import numpy as np class NaiveBayes: def __init__(self): self.classes = None self.class_priors = None self.feature_probs = None def fit(self, X, y): self.classes = np.unique(y) self.class_priors = np.zeros(len(self.classes)) self.feature_probs = [] for i, c in enumerate(self.classes): X_c = X[y == c] self.class_priors[i] = len(X_c) / len(X) feature_probs_c = [] for j in range(X.shape[1]): feature_values = np.unique(X[:, j]) feature_prob = {} for v in feature_values: feature_prob[v] = len(X_c[X_c[:, j] == v]) / len(X_c) feature_probs_c.append(feature_prob) self.feature_probs.append(feature_probs_c) def predict(self, X): y_pred = [] for x in X: class_scores = [] for i, c in enumerate(self.classes): class_score = np.log(self.class_priors[i]) for j, feature_value in enumerate(x): class_score += np.log(self.feature_probs[i][j].get(feature_value, 1e-10)) class_scores.append(class_score) y_pred.append(self.classes[np.argmax(class_scores)]) return y_pred ``` 这段代码实现了一个简单的朴素贝叶斯分类器。`fit`方法用于训练模型,接受特征矩阵`X`和标签向量`y`作为输入。`predict`方法用于进行预测,接受特征矩阵`X`作为输入,并返回预测的标签向量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值