贝叶斯分类器设计

贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价的情况下平均风险最小的分类器。它的设计方法是一种最基本的统计分类方法。其分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。

更多:贝叶斯

这一小节我们将简单的阐述一般贝叶斯分类器设计的方法。分类器流程如下所示。

  • 输入:d-dim 特征向量
  • 计算决策函数值(针对每个类别)
  • 选取最大的值
  • 做出决策
  • 输出结果

如下图可以清楚的表达整个分类器工作的流程。

整个设计的流程

下面我们将以两个小例子来贯穿贝叶斯分类器设计的整个流程。

4.1 MNIST手写体识别
4.1.0 数据集简介

MNIST是一个0-9的手写数字数据库。MNIST数据集中包含60000张手写数字图片,10,000 张测试图片。每张图片的大小为28*28,包含一个手写数字。如下图所示。数据集链接:

数据集中包含四个文件。

1.  train-images-idx3-ubyte.gz:  training set images (9912422 bytes)   
2.  train-labels-idx1-ubyte.gz:  training set labels (28881 bytes)   
3.  t10k-images-idx3-ubyte.gz:   test set images (1648877 bytes)   
4.  t10k-labels-idx1-ubyte.gz:   test set labels (4542 bytes)  

整理一下MNIST数据集

  • 四个文件。train_image,train_label,test_image,test_label
  • 图像数据。28*28的图像尺寸的灰度图像,所以每张图像为28*28*1
  • 标签。针对每个数据给出0-9中一个数字作为类别。
4.1.1 特征向量准备

搞个三部曲:

  • 数据准备
  • 模型设计
  • 模型训练

贝叶斯决策论也不例外,首要的,我们需要将原始数据经过一系列清洗得到输入的特征向量。

咋输入数据?

MNIST数据集四个文件是用二进制进行编写,详细的格式如下图所示,展示image file 和 label file。 

数据的预处理可以分为两部分:第一部分就是读入数据,第二部分就是提取成想要的特征向量。 
(1)读入数据。实验中我们采用MATLAB编写,利用文件指针逐个字节读取,得到一个mat,然后reshape到784*N的数据形式,注意这里得到的都是0-255像素。对于label也是同理得到N*1的数据形式。 
(2)提取特征向量。 最后我们需要对读入的数据进行处理得到我们想要的特征向量。这里实验做法十分暴力,直接将图像变成二值化(将0-255 resize到0、1),然后向量长度不变。所以得到的形式是784*N的二值化的矩阵。Label不做任何处理。

这里主要是阐述整个设计流程,所以直接用最简单的方式提取特征。感兴趣的同学可以尝试用PCA等特征生成的方式将输入的图像做特征提取。

发表评论

电子邮件地址不会被公开。 必填项已用*标注