贝叶斯分类器

贝叶斯分类器


文章目录

朴素贝叶斯

朴素贝叶斯分类器

一个重要的前提

属性之间的独立性假设

P(a1,...,anvj)=ΠiP(aivj)P(a_1,...,a_n|v_j) = \Pi_iP(a_i|v_j)P(a1​,...,an​∣vj​)=Πi​P(ai​∣vj​)

形式

vNB=argmaxvjVP(vj)ΠiP(aivj)v_{NB} = arg \max_{v_j \in V}P(v_j)\Pi_iP(a_i|v_j)vNB​=argvj​∈Vmax​P(vj​)Πi​P(ai​∣vj​)

从训练数据中估计 P(aivj)P(a_i|v_j)P(ai​∣vj​) 要比直接估计联合密度估计要容易得多。

估计

从训练样本中进行估计

  • 对任意目标值 vjv_jvj​
    • 估计出 P^(vj)\hat P(v_j)P^(vj​)
    • 对任意一个 aja_jaj​,估计出 P^(aivj)\hat P(a_i|v_j)P^(ai​∣vj​)
  • 模型形式为
    • vNB=argmaxvjVP^(vj)ΠaixP^(aivj)v_{NB} = arg \max\limits_{v_j \in V}\hat P(v_j)\Pi_{a_i \in x}\hat P(a_i|v_j)vNB​=argvj​∈Vmax​P^(vj​)Πai​∈x​P^(ai​∣vj​)
  • 计算出来的值再进行概率归一化即可

连续值属性

对于连续值属性的讨论

  • 离散化
  • 利用概率分布来进行估计
    • P(xjCj)=12πσijexp((xjμij)22σij2)P(x_j|C_j) = \frac{1}{\sqrt{2\pi}\sigma_{ij}}exp(-\frac{(x_j - \mu_{ij})^2}{2\sigma_{ij}^2})P(xj​∣Cj​)=2π​σij​1​exp(−2σij2​(xj​−μij​)2​)
    • 其中 μij\mu_{ij}μij​ 和 σij\sigma_{ij}σij​ 分别为类 CiC_iCi​ 中随机变量 xix_ixi​ 的期望和标准差,利用对应的样本期望和标准差来进行估计

潜在问题

  • 如果某一个属性的条件概率为 000,那么整个类的后验概率也为 000
  • 训练样本不能覆盖那么多属性值时,不能分类某些测试记录

针对第一个问题,采用平滑技术

nc+mpn+m,p=1k\frac{n_c+mp}{n+m},p = \frac{1}{k}n+mnc​+mp​,p=k1​
其中 ppp 是按均匀概率的观念点出发,如果有 kkk 个可能的属性值,则取值为 1k\frac{1}{k}k1​.
mmm 被称为等效样本.
那么修正式相当于 nnn 个实际观察加上 mmm 个按 ppp 分布的虚拟样本。

特点

  • 对于孤立噪声点,朴素贝叶斯分类器是健壮的
  • 可以处理属性值遗漏问题
  • 可以处理无关属性
  • 属性相关性高会降低朴素贝叶斯分类器的性能

贝叶斯信念网络

贝叶斯信念网络 (Bayes belief network,BBN)(Bayes\ belief\ network,BBN)(Bayes belief network,BBN)

概念

  • 描述的是一组变量所遵循的概率分布,通过一组条件概率来指定一组条件独立性假设
  • 可以表述变量自己上的条件独立性假设。比朴素贝叶斯分类器的限制更少。
  • 如果一个节点的父母节点已知,则它条件独立于它的所有非后代节点。

贝叶斯信念网络的表示

  • 一个无环有向图来标识
  • 一个概率表,即一组局部条件概率的集合

贝叶斯分类器

训练

  • 如果网络结构已知,且变量可以从训练数据中完全取得,那么训练就比较简单

  • 如果网络结构已知,但是只有部分变量能从训练数据中观察到,那么学习问题就困难多了。类似于神经网络的隐藏层的学习。

  • 如果结构位置,那么需要学习结构。

    • 定义一个 评分函数
    • 基于信息论准则
    • 引入了归纳偏置

选择综合编码长度最短的贝叶斯网----最小长度描述准则

评分函数

S(BD)=f(θ)BLL(BD)S(B|D) = f(\theta)|B| - LL(B|D)S(B∣D)=f(θ)∣B∣−LL(B∣D)
其中 B|B|∣B∣ 是贝叶斯网的参数个数; f(θ)f(\theta)f(θ) 表示描述每个参数 θ\thetaθ 所需的字节数

其中 LL(BD)=i=1mlogPB(xi)LL(B|D) = \sum_{i=1}^m\log P_B(x_i)LL(B∣D)=i=1∑m​logPB​(xi​)
是贝叶斯网络的似然。

寻找一个贝叶斯网络 BBB 使得评分函数 S(B|D)最小

  • 如果 f(θ)=1f(\theta) = 1f(θ)=1,则就是 AICAICAIC 准则
    AIC(BD)=BLL(BD)AIC(B|D) = |B| - LL(B|D)AIC(B∣D)=∣B∣−LL(B∣D)
  • 如果 f(θ)=12logmf(\theta) = \frac{1}{2}\log mf(θ)=21​logm,则就是 BICBICBIC 准则
    BIC(BD)=logm2BLL(BD)BIC(B|D) = \frac{\log m}{2}|B| - LL(B|D)BIC(B∣D)=2logm​∣B∣−LL(B∣D)
  • 如果 f(θ)=0f(\theta) = 0f(θ)=0 ,即不考虑进行编码长度,函数退化为对数似然。
    S(BD)=LL(BD)S(B|D) = - LL(B|D)S(B∣D)=−LL(B∣D)
    参数 θxiπi=P^D(xiπi)\theta_{x_i|\pi_i} = \hat P_D(x_i|\pi_i)θxi​∣πi​​=P^D​(xi​∣πi​)。其中 P^D()\hat P_D(·)P^D​(⋅) 是 DDD 上的经验分布。所以只需要进行搜索得到最优参数。

拓扑结构的学习

主观专家的编码
  • T=(X1,...,Xd)T = (X_1,...,X_d)T=(X1​,...,Xd​),表示变量的全序。
  • 对于所有的 TTT 中的元素
    • XT(j)X_{T(j)}XT(j)​ 表示 TTT 中第 jjj 个次序最高的变量
    • π(XT(j))={XT(1),...,XT(j1)}\pi(X_{T(j)}) = \{X_{T(1)},...,X_{T(j-1)}\}π(XT(j)​)={XT(1)​,...,XT(j−1)​} 表示排在 XT(j)X_{T(j)}XT(j)​ 前面的变量集合
    • π(XT(j))\pi(X_{T(j)})π(XT(j)​) 中去掉对 XjX_jXj​ 没有影响的变量。这是由先验知识得到的
    • XT(j)X_{T(j)}XT(j)​ 和 π(XT(j))\pi(X_{T(j)})π(XT(j)​) 中剩余的变量画弧。

这是一个如何通过主观专家来构建合理网络结构的过程。

梯度提升训练

  • wijkw_{ijk}wijk​ 代表概率表的一个表项,即在给定 UiU_iUi​ 取值 uiku_{ik}uik​ 时,网络变量 YiY_iYi​ 值为 yijy_{ij}yij​ 的概率。

  • 梯度的计算:
    lnP(Dh)wijk=dDP(Yi=yij,Ui=uikd)wijk\frac{\partial \ln P(D|h)}{\partial w_{ijk}} = \sum_{d \in D}\frac{P(Y_i = y_{ij},U_i = u_{ik}|d)}{w_{ijk}}∂wijk​∂lnP(D∣h)​=d∈D∑​wijk​P(Yi​=yij​,Ui​=uik​∣d)​

  • 梯度的更新:
    wijkwijk+ηdDPh(yij,uikd)wijkw_{ijk} \leftarrow w_{ijk} + \eta \sum_{d \in D}\frac{P_h(y_{ij},u_{ik}|d)}{w_{ijk}}wijk​←wijk​+ηd∈D∑​wijk​Ph​(yij​,uik​∣d)​

  • 权重的归一化:
    wijkwijkjwijkw_{ijk} \leftarrow \frac{w_{ijk}}{\sum_{j}w_{ijk}}wijk​←∑j​wijk​wijk​​

该算法可能找到的是局部最优解。

网络的推断

  • 推断出的结果一把都是一个概率分布。
  • 利用贝叶斯公式来进行概率的而计算

例如:

贝叶斯分类器

  • 如果没有任何先验信息判断一个人是否会患心脏病:
    • 计算过程
      P(HD=Yes)=αβP(HD=YesE=α,D=β)P(E=α,D=β)P(HD = Yes) = \sum_\alpha\sum_\beta P(HD = Yes|E = \alpha,D = \beta)P(E = \alpha,D = \beta)P(HD=Yes)=α∑​β∑​P(HD=Yes∣E=α,D=β)P(E=α,D=β)
      =αβP(HD=YesE=α,D=β)P(E=α)P(D=β)= \sum_\alpha\sum_\beta P(HD = Yes|E = \alpha,D = \beta)P(E = \alpha)P(D = \beta)=α∑​β∑​P(HD=Yes∣E=α,D=β)P(E=α)P(D=β)
      =0.250.70.25+0.450.70.75+0.550.30.25+0.750.30.75=0.49 = 0.25*0.7*0.25+0.45*0.7*0.75+ 0.55*0.3*0.25+0.75*0.3*0.75 = 0.49=0.25∗0.7∗0.25+0.45∗0.7∗0.75+0.55∗0.3∗0.25+0.75∗0.3∗0.75=0.49
      P(HD=No)=1P(HD=Yes)=0.51\Rightarrow P(HD = No) = 1-P(HD = Yes) = 0.51⇒P(HD=No)=1−P(HD=Yes)=0.51
  • 已知该人有高血压
    • 计算过程
      P(BP=)=P(BP=HD=γ)P(HD=γ)P(BP = 高) = \sum P(BP = 高|HD = \gamma)P(HD = \gamma)P(BP=高)=∑P(BP=高∣HD=γ)P(HD=γ)
      =0.850.49+0.20.51=0.5185 = 0.85*0.49+0.2*0.51 = 0.5185=0.85∗0.49+0.2∗0.51=0.5185
      所以患心脏病的后验概率是:
      P(HD=YesBP=)=P(BP=HD=Yes)P(HD=Yes)P(BP=)P(HD = Yes|BP = 高) = \frac{P(BP = 高|HD = Yes)P(HD = Yes)}{P(BP = 高)}P(HD=Yes∣BP=高)=P(BP=高)P(BP=高∣HD=Yes)P(HD=Yes)​
      =0.850.490.5185=0.8033 = \frac{0.85*0.49}{0.5185} = 0.8033=0.51850.85∗0.49​=0.8033
      P(HD=NoBP=)=0.1967P(HD = No|BP = 高) = 0.1967P(HD=No∣BP=高)=0.1967
  • 经常锻炼且饮食健康
    • 计算方式
      P(HD=YesBP=D=E=Yes)P(HD = Yes|BP = 高,D = 健康,E = Yes)P(HD=Yes∣BP=高,D=健康,E=Yes)
      =[P(HD=YesBP=D=E=Yes)P(BP=D=E=Yes)]P(HD=YesD=E=Yes)= [\frac{P(HD = Yes|BP = 高,D = 健康,E = Yes)}{P(BP = 高|D = 健康,E = Yes)}] * P(HD = Yes|D = 健康,E = Yes)=[P(BP=高∣D=健康,E=Yes)P(HD=Yes∣BP=高,D=健康,E=Yes)​]∗P(HD=Yes∣D=健康,E=Yes)
      =P(BP=HD=Yes)P(HD=YesD=,E=Yes)γP(BP=HD=γ)P(HD=γD=,E=Yes)= \frac{P(BP = 高|HD = Yes)P(HD = Yes|D = 健康,E = Yes)}{\sum_\gamma P(BP = 高| HD = \gamma)P(HD = \gamma|D = 健康,E = Yes)}=∑γ​P(BP=高∣HD=γ)P(HD=γ∣D=健康,E=Yes)P(BP=高∣HD=Yes)P(HD=Yes∣D=健康,E=Yes)​
      =0.850.250.850.25+0.20.75=0.5862= \frac{0.85*0.25}{0.85*0.25+0.2*0.75} = 0.5862=0.85∗0.25+0.2∗0.750.85∗0.25​=0.5862
      P(HD=NoBP=D=E=Yes)=0.4138P(HD = No|BP = 高,D = 健康,E = Yes) = 0.4138P(HD=No∣BP=高,D=健康,E=Yes)=0.4138

BBNBBNBBN 的特点

  • 提供了一种图模型来捕获先验知识,还可以对变量之间的因果关系进行编码
  • 构建网络结构的过程虽然费时费力,但是结构确定了,容易添加新的变量
  • 贝叶斯网络很适合处理不完全数据
  • 数据和先验信息以概率方式结合,所以可以避免过拟合问题。
上一篇:Flutter隐藏导航栏同时允许设置状态栏


下一篇:如何在android中检索当前系统的屏幕亮度值?