机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )

文章目录

  • 离散数据,连续数据及对应贝叶斯公式
    • 回顾朴素贝叶斯公式
    • 连续变量中 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) 的求算
    • 连续变量中的贝叶斯公式
    • 上述方法的局限
    • 高斯贝叶斯
    • KDE 核密度估计
      • 优势
      • 劣势

离散数据,连续数据及对应贝叶斯公式

回顾朴素贝叶斯公式

c ^ = a r g m a x c j ∈ C P ( c j ) ∏ i P ( x i ∣ c j ) \hat{c}=argmax_{c_j\in C}P(c_j)\prod_i{P(x_i|c_j)} c^=argmaxcjCP(cj)iP(xicj)

连续变量中 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) 的求算

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第1张图片

  • 上面图中的 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) 看起来好像是均匀分布的,但是真的是这样么?

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第2张图片

  • 如果我们可视化这些数据我们会发现其实他们的分布并不是均匀的,而是在 20 20 20 附近出现的频次要明显高于其他频次。那么对于这样的连续数据我们应该用什么样的方法表示他们的概率呢?

  • 答案就是:通过将连续的变量分入不同的 bins 里面,然后用这个 bins 中的数据与总体样本数量的比值不就是这个 bins 中所有数据的概率值么~,如下图所示:
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第3张图片

  • 当然,你可以分不同的 bins,bins 分的很小的时候,就可以模拟连续数据的概率分布了

连续变量中的贝叶斯公式

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第4张图片

  • 还是拿上边天气的例子,我们现在已经知道如何把 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) 通过分箱的方式求出来了,根据上图中两种分箱的方式,我们应该知道,按照左右两边进行分箱得到的结果是完全不一样的,具体来说,对于左边的方式, X t e m p = { x 1 , x 2 , x 3 , x 4 , x 5 } X_{temp} = \{x_1,x_2,x_3,x_4,x_5\} Xtemp={x1,x2,x3,x4,x5} 分别代表 temp 处于 18-19,19-20,20-21,23-24,32-33 几个离散的区间。所以 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) x i x_i xi有五种情况, c j c_j cj 有 yes 和 no 两种情况;但是如果按照右图的方法划分,则 X t e m p = { x 1 , x 2 , x 3 } X_{temp}=\{x_1,x_2,x_3\} Xtemp={x1,x2,x3} 三种情况, c j c_j cj 有 yes 和 no 两种情况。

让我们算一下右图的情况:

  • P ( 18 − 23 ∣ y e s ) = 1 P(18-23 | yes)= 1 P(1823yes)=1 因为当给定 yes 的条件,温度全部都在 18-23 内
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第5张图片

  • P ( 23 − 28 ∣ y e s ) = 0 P(23-28 | yes)= 0 P(2328yes)=0 因为当给定 yes 的条件,没有温度在 24-28 内

  • P ( 28 − 33 ) ∣ y e s ) = 0 P(28-33)| yes) = 0 P(2833)yes)=0 因为当给定 yes 的条件,没有温度在 29-33 内

  • P ( 18 − 23 ∣ n o ) = 1 / 3 P(18-23 | no)= 1/3 P(1823no)=1/3 因为当给定 no 的条件,只有一条数据符合条件
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第6张图片

  • P ( 23 − 28 ∣ n o ) = 1 / 3 P(23-28 | no)= 1/3 P(2328no)=1/3 因为当给定 no 的条件,只有一条数据符合条件
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第7张图片

  • P ( 28 − 33 ) ∣ n o ) = 1 / 3 P(28-33)| no) = 1/3 P(2833)no)=1/3 因为当给定 no 的条件,只有一条数据符合要求
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第8张图片

  • 根据上面的计算,你可以根据自己的分箱情况获得合适的 P ( x i ∣ c j ) P(x_i|c_j) P(xicj) 从而根据贝叶斯公式算出连续数据的每种情况的概率值

上述方法的局限

  • 分箱的方式不同,导致得到的概率分布函数也不同,因此最终的结果也难免存在偏差
  • 当数据量不大的情况下,可能数据的分布并不能够与数据量大的时候保持一致,换句话说,通过少量数据得到的分布并不具有代表性。
  • 那么常用的解决思路是什么呢?

高斯贝叶斯

  • 顾名思义,引入高斯分布来代替连续数据的概率分布。之所以这样做,是因为在很多的自然条件下,随机变量的分布都会趋向于高斯分布。因此高斯分布经常被用在连续变量的分布中作为概率分布的假设

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKrQgAXB-1647340260023)(attachment:image.png)]

  • 对于高斯分布来说,取决于均值 μ \mu μ 和标准差 σ \sigma σ
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第9张图片

  • 这里的标准差计算时,分母之所以采用 N − 1 N-1 N1 是为了进行无偏估计

  • 根据 X t e m p X_{temp} Xtemp 这列的数据,我们很容易算出当 c j = y e s c_j=yes cj=yes 的条件下均值和标准差分别是:
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第10张图片

  • 同样的我们也可以算出 c j = n o c_j=no cj=no 的条件下的均值和标准差分别是:

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第11张图片

  • 然后我们分别把 c j = y e s c_j=yes cj=yes c j = n o c_j=no cj=no 的高斯分布画出来如下图所示:

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第12张图片

  • 这个图的纵轴代表的是什么呢?代表的是 P ( x i ∣ c j ) P(x_i|c_j) P(xicj)

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第13张图片

  • 例如我们拿到一个 x i = 22.8 x_i=22.8 xi=22.8 我们直接带入 y e s yes yes n o no no 分别的概率分布函数,就能得到在给定 c j = y e s c_j=yes cj=yes c j = n o c_j=no cj=no 的条件下的 P ( x i ∣ c j ) P(x_i|c_j) P(xicj)

  • 然后我们再乘以先验概率 P ( c j ) P(c_j) P(cj) 就可以得到预测概率了

  • 这时候肯定有同学要问:咦,不对啊,贝叶斯公式里面明明有一个连乘,怎么这里没有啦?

c ^ = a r g m a x c j ∈ C P ( c j ) ∏ i P ( x i ∣ c j ) \hat{c}=argmax_{c_j\in C}P(c_j)\prod_i{P(x_i|c_j)} c^=argmaxcjCP(cj)iP(xicj)

  • 连乘确实是有,但是这个连乘的意义是,假设你的 n 列特征都用上了,那么这个公式就会是 n 项连乘,但是在这个例子里面我们只用到了 “温度”这一个特征,因此我们就可以把这个公式简化成:
    c ^ = a r g m a x c j ∈ C P ( c j ) P ( x i ∣ c j ) \hat{c}=argmax_{c_j\in C}P(c_j){P(x_i|c_j)} c^=argmaxcjCP(cj)P(xicj)

  • 接着计算上面在 x i = 22.8 x_i=22.8 xi=22.8 的概率:
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第14张图片

  • 根据最终的结果,我们可以得出结论:22.8℃的时候,不下雨的概率大

KDE 核密度估计

  • 并不是所有的概率分布都满足高斯分布
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第15张图片

  • 这种情况下,我们采用 KDE 方法来进行贝叶斯估计
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第16张图片

  • 其中, ϕ σ \phi_{\sigma} ϕσ 是一个均值为 0 标准差为 1 的标准正态分布

  • KDE 的核心思想是通过数据学习其中的概率分布,而不是假定一个固定的概率分布进行计算

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第17张图片

  • 依然拿这个图来举例:

    • 假设现在有一个 x x x,那么计算过程如下:
      • 将给出的 x x x 与 yes 或者 no 条件下的每一个 temp ( x 1 , . . . x n x_1,...x_n x1,...xn) 进行差值计算,每做一次差值得到的值,就在横轴上对应位置放置一个 ϕ σ \phi_{\sigma} ϕσ
        机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第18张图片

      • 这个 σ \sigma σ 是手动指定的值,

      • 这样当 x x x 与所有给定 no 条件的 temp 进行计算完成后,得到的所有正态分布就如上图所示

  • 最终按照公式进行叠加,可以得到下图中的红色线,就是真正的概率密度曲线:
    机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第19张图片

  • 当指定一个具体的值,例如 x = 15 x = 15 x=15 这时候我们要求给定 no 条件下的概率分布曲线,我们的 x 1 , . . . x n = { 32.1 , 19.5 , 23.5 } x_1,...x_n = \{32.1,19.5,23.5\} x1,...xn={32.1,19.5,23.5}

机器学习理论之:(3)连续变量情况下的朴素贝叶斯,高斯贝叶斯(Gaussian Bayes),核密度估计(KDE )_第20张图片

优势

  • 可以建立任意概率分布模型
  • 没有关于分布形状的假设 (例如高斯分布)

劣势

  • 需要选择一个内核带宽σ
  • 需要许多参数来表示概率密度函数;

你可能感兴趣的:(机器学习与深度学习,软件工程学习内容,机器学习,概率论,数据挖掘)