朴素贝叶斯算法的具体实现

朴素贝叶斯算法的具体实现

输入空间

  1. 训练数据:$T = \lbrace (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N) \rbrace$,

    其中,$x_i=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T$,$x_i^{(j)}$是第$i$个样本的第$j$个特征,$x_i^{(j)} \in \lbrace a_{j1},a_{j2}, \cdots, a_{jS_j} \rbrace$, $a_{jl}$是第$j$个特征可能取到的第$l$个值,$j=1,2,\cdots,n$,$l=1,2,\cdots,S_j$,$y \in \lbrace c_1, c_2, \cdots ,c_K \rbrace$;

    • 训练数据中,共有$N$个数据样本;
    • 每个数据共有$n$个特征,即$n$维;
    • 第$j$个维度的取值可能有$S_j$种;
    • 最终可能的分类有$K$种。
  2. 实例:$x$;

输出空间

实例$x$的分类

实现

  1. 计算先验概率机条件概率:
    $$
    P(Y = c_k) = \frac{\sum_{i=1}^N I (y_i = c_k)}{N}, k = 1,2,\cdots, K \tag{1}
    $$
  • $I$:指示函数(维基百科解释):

    $$
    I_A(x) = \left \lbrace \begin{aligned}
    1, \qquad if \quad x \in A; \\
    0, \qquad if \quad x \not\in A;
    \end{aligned}
    \right .
    $$

  • 上述公式其实为一个统计公式,即,统计$T$中,$Y = c_k$的个数,然后进行归一化。使得:
    $$
    \sum_k P(Y=c_k) = 1
    $$

$$
P (X^{(j)} = a_{jl} | Y = c_k) = \frac{\sum_{i=1}^N I(x_i^{(j)} = a_{jl},y_i = c_k)}{\sum_{i=1}^N I(y_i = c_k)} \\
j = 1,2,\cdots,n; l = 1,2,\cdots,S_j; k = 1,2,\cdots, K
\tag{2}
$$

  • 对于公式$(2)$的解释为:

  • 我们针对于公式$(1)$统计的每种分类情况,在针对该分类的条件,统计样本$x$的每个维度的个数,并将其做归一化,作为每一个维度的条件概率,并且保证:

$$
\sum_j P(X^{(j)} = a_{jl} | Y = c_k) = 1
$$

  1. 对于给定的实例 $x = (x^{(1)},x^{(2)},\cdots,x^{(n)})^T$,计算:

$$
P(Y = c_k) \prod_{j=1}^n P(X^{(j)} = x^{(j)}|Y = c_k), k = 1,2,\cdots, K
\tag{3}
$$

  • 上述公式$(3)$是朴素贝叶斯分类器(如下面的公式)的分子:

$$
y = f(x) = \arg\min_{c_k} \frac{P(Y = c_k) \prod_j P(X^{(j)} | Y = c_k)}{\sum_k P (Y=c_k) \prod_j P(X^{(j)} =x^{(j)} | Y = c_k)}
\tag{3.1}
$$

  • 由于朴素贝叶斯分类器对于所有的$class$即对于所有的$c_k$来说,分母都一样,所以,我们计算分子就好了。
  1. 根据公式$(3)$确定$x$的分类:

$$
y = \arg\min_{c_k} P(Y = c_k) \prod_j P(X^{(j)} | Y = c_k) \tag{4}
$$

评论

Agile Angularjs Animation Application Artificial Intelligence BP Babel Bokeh Book C4.5 CART CD CLI CSS CentOS Cinder Clipboardjs Concept Continuous Delivery DeepLearning Department DevOps Develop Development Directive Distribution Django Document ES5 ES6 Echarts Engine Entropy Filter Front End Gallery Git Gradient descent Hexo Horizon ID3 ID3.5 Icarus JavaScript Javascript KVM LaTeX LeetCode LibreOffice Linux MNIST Machine Learning Matrix MiddleWare Module Native Network Nginx NodeJS OOP OpenSSH OpenStack OpenStackApi Operations Oprations PDF PLA Pipline Probability Python React Relational algebra Restful Route SVD SVM Scalar Sigmoid Team Tempest Tensor TensorFlow Testing Time TimeMachine Tips Vector Vmware Vue Vuex WSGI Web Word Cut aliyun auth babel certbot decision tree docker dockerfile eject git homebrew jupyter jwt keystone lab loader mathematics migrate openstack outline pdf2html pm2 python replace singular value decomposition stylus vue-router vue-ssr webpack 事件 事件代理 事件冒泡 事件捕获 低通滤波器 入门 全局变量 全局对象 全栈 公式 决策树 函数 分类器 剪枝 加速 匹配滤波边缘检测 卷积 卷积核 原型链 双向绑定 反向传播 发布 变量类型 基尼指数 官方示例 对偶形式 对象 平移和查分边缘检测 思维导图 感知机模型 拉格朗日乘子法 推导 提交阶段 数据绑定 最大似然估计 最小二乘估计 最小二乘回归树 最小二乘法 本地 朴素贝叶斯 朴素贝叶斯算法 机器学习 条件概率 梯度下降 梯度方向边缘检测 概念 概率 正则 求导 流程 源码 源码阅读 生命周期 矩阵 神经网络 私有对象 算法 算法实现 线性回归 联合概率 脚手架 识别 调试 贝叶斯 贝叶斯判定准则 边缘检测 边际概率 闭包 间隔 高斯分布 高通滤波器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×