基于MATLAB的手写体数字识别算法的实现与分析毕业论文.docx
- 文档编号:3887009
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:25
- 大小:585.78KB
基于MATLAB的手写体数字识别算法的实现与分析毕业论文.docx
《基于MATLAB的手写体数字识别算法的实现与分析毕业论文.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的手写体数字识别算法的实现与分析毕业论文.docx(25页珍藏版)》请在冰豆网上搜索。
基于MATLAB的手写体数字识别算法的实现与分析毕业论文
基于MATLAB的手写体数字识别算法的实现与分析
摘要
手写体数字识别是利用运算机自动识别手写体阿拉伯数字的一种技术,是光学字符识别技术的一个分支。
手写体数字识别在邮政编码、财务报表、银行单据、各类凭证和调查表格的识别等等方面有着重要应用,由于数字识别常常涉及财会、金融领域,其严格性更是不言而喻的。
因此,对识别系统的靠得住性和识别率要求很高,组成了手写体数字识别面临的要紧困难,大量量数据处置对系统速度又有相当高的要求。
本文基于MNIST数据集,通过Matlab平台,对决策树算法、SVM算法和人工神经网络(ANN)算法进行实现,并对分类算法的准确率进行评估。
实验结果说明,人工神经网络(ANN)的准确率最高,为99.69%,SVM算法次之,准确率为94.53%,决策树算法的准确率为83.53%。
三种分类算法中,决策树算法的速度最快,SVM算法的速度最慢。
另外,针对每一种分类算法在MNIST数据集上的实验结果,本文还得出以下结论:
第一,MNIST数据集的归一化与否对决策树的分类成效几乎没有阻碍;对SVM的分类成效阻碍较大,未归一化时的准确率为11.35%,归一化以后的准确率为94.53%;对人工神经网络的分类成效阻碍较小,未归一化时的准确率为82.11%,归一化以后的准确率为99.69%。
这说明三种分类算法对数据的不平稳散布的灵敏程度各不相同。
第二,关于SVM分类算法,当训练数据集的样本容量小于60000(MNIST训练数据集的最大样本容量)时,该算法对测试数据集分类预测的准确率随样本容量的增大而增大。
第三,针对人工神经网络,数据类标签的表示形式对分类预测的准确率的阻碍较大。
利用10位数据表示类标签是的准确率为99.69%,远远高于利用1位数据表示类标签时的准确率60.24%。
关键词:
手写体数字识别;决策树算法;SVM算法;人工神经网络算法
ABSTRACT
HandwrittennumeralrecognitionisatechniquethatusescomputertorecognizehandwrittenArabicnumeralsautomaticallyandisabranchofopticalcharacterrecognitiontechnology.Handwrittennumeralrecognitionhasimportantapplicationsinpostalcodes,financialstatements,banknotes,variouskindsofvouchersandtheidentificationofsurveyforms.Sincedigitalidentificationofteninvolvesaccountingandfinance,itsstrictnessisself-evident.Thedemandforidentificationsystemofthereliabilityandrecognitionrateisveryhigh,constitutingahandwrittendigitalidentificationfacingmajordifficulties,high-volumedataprocessingonthesystemspeedandaveryhighdemand.
Inthispaper,weuseMatlabtoimplementdecisiontreealgorithm,SVMalgorithmandartificialneuralnetwork(ANN)algorithmbasedonMNISTdataset,andtheaccuracyofclassificationalgorithmsiscalculatedbyusingtherealdatatag.Experimentalresultsshowthattheartificialneuralnetwork(ANN)thehighestaccuracyratefor99.69%,SVMalgorithm,followedby94.53percentaccuracyrate,decisiontreealgorithmaccuracyis83.53%.Intermsofspeed,decisiontreealgorithmisthefastest,SVMalgorithmistheslowest.Inaddition,foreachclassificationalgorithmwealsoconcludedthat:
Firstly,whetherornottheMNISTdatasetisnormalizedhasnoeffectintheclassificationtree;WhileithasagreatimpactonSVMclassification.Whenitisnotnormalizedtheaccuracyis11.35%,andafternormalizedtheaccuracyis94.53%;Theartificialneuralnetworkclassificationislessaffected,andwhenitisnotnormalizedtheaccuracyis82.11%whileafternormalizedtheaccuracyis99.69%.Thisshowsthesensitivityofthethreeclassificationalgorithmstounbalanceddistributionofdata.
Secondly,fortheSVMclassificationalgorithm,whenthesamplesizeislessthan60,000(maximumsizeofMNISTtestdataset),theaccuracyincreaseswiththeincreasingofsamplesize.
Thirdly,fortheartificialneuralnetwork,theimpactofclasslabelrepresentationislargeontheclassificationaccuracy.Whenusing10bitstorepresentclasslabels,theaccuracyis99.69%,farhigherthantheaccuracyof60.24%whenusing1bittorepresentdatalabels.
KEYWORDS:
Handwrittennumeralrecognition;Decisiontreealgorithm;SVMalgorithm;Artificialneuralnetworkalgorithm
1.引言
1.1手写数字识别
手写数字识别是模式识别领域的一个重要分支,它研究的核心问题是:
如何利用运算机自动识他人手写在纸张上的阿拉伯数字。
手写体数字识别问题,简而言之确实是识别出10个阿拉伯数字,由于数字的清楚程度或是个人的写字适应抑或是其他,往往手写体数字的性状、大小、深浅、位置会不大一样。
手写体识别一样包括3个时期:
预处置、特点提取、分类识别。
手写数字识别前景广漠,普遍应用于表格中数字的识别、汽车牌照的数字自动识别和成绩单的识别等。
实现数字的自动识别能够给人们的工作和生活带来专门大的方便。
关于该领域的研究具有重要的理论价值:
一方面,阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究与文化背景无关,如此就为各国、各地域的研究工作者提供了一个自由平等的舞台,大伙儿能够在这一领域施展才干,各抒己见。
另一方面,由于数字识别的类别数较少(只有0到9十个类别),有助于做深切分析及验证一些新的理论。
这方面最明显的例子确实是人工神经网络,相当一部份的人工神经网络模型都以手写数字识别作为具体的实验平台,验证理论的有效性,评判各类方式的优缺点。
数字识别的算法较多,当前运用较好的主流算法以统计、聚类和分类算法为主,如Bagging算法、支持向量机算法、神经网络等。
手写数字识别难度在于:
一、数字相似性大,但字形相差不大;二、数字尽管只有10种,但笔画简单,同一个数字写法不同大;三、手写数字存在断笔和毛刺,对识别造成阻碍。
本文选择分类算法中的决策树算法、支持向量机算法、神经网络对MNIST数据集进行数字识别,并对分类成效进行比较分析。
2.分类算法
分类器识别是实现手写体数字识别的最终关键,基于距离的分类器和神经网络分类器这两大类是目前现有的最要紧的分类器。
分类是数据挖掘的重要分支,可用于提取、描述重要数据的模型或预测以后的数据趋势[1]。
2.1决策树算法
决策树也称为判定树,是一种有监督的学习方式。
决策树代表着决策树的树形结构,能够依照训练集数据构造出决策树。
若是该树不能对所有对象给出正确的分类,就选择一些例外加入到训练集数据中。
重复该进程,直到形成正确的决策集。
决策树方式第一对数据进行处置,利用归纳算法生成可读的规那么和决策树,然后利用决策树对新数据进行分析,本质上是通过一系列规那么对数据进行分类的进程。
决策树的典型算法有ID3,C4.5,等。
依照训练集构建决策树,决策树中的结点逐层展开。
每展开一层子结点,并将其设为叶结点,就取得一棵决策树,然后采纳测试集对所得决策树的分类性能进行统计。
重复上述进程,能够取得决策树在测试集上的学习曲线。
依照学习曲线,选择在测试集上性能最正确的决策树为最终的决策树。
2.1.1ID3算法
J.RossQuinlan在1986年将信息论引入到决策树算法中,提出了ID3[2]算法,算法思想如下:
设样本集E共有C类训练集,每类样本数为pi,且i=1,2,3,…,C。
若是以属性A作为测试属性,属性A的v个不同的值为{v1,v2,…,vv},能够用属性A将E划分成v个子集{E1,E2,…,Ev},假定Ei中含有第j类样本的个数为pij,j=1,2,3,…,C,那么子集Ei的熵为:
(1)
属性A的信息熵为:
(2)
将
代入公式
(2)后可得:
(3)
一棵决策树对一实例做出正确类别判定所需的信息为:
(4)
信息增益:
ID3算法存在着属性偏向,对噪声灵敏等问题。
2.1.2C4.5算法
在ID3算法的基础上,Quinlan在1993年提出了一种改良的算法,即C4.5算法[3],信息增益率计算如下:
(5)
(6)
C4.5算法克服了ID3算属性偏向的问题,增加了对持续属性的处置,通过剪枝,在必然程度上幸免了“过度拟合”的现象。
可是该算法将持续属性离散化,需要遍历该属性的所有值,降低了效率;要求训练样本驻留在内存,不适合处置大规模数据集。
2.1.3CART算法
CART算法能够处置无序的数据,采纳基尼系数作为测试属性的选择标准,基尼系数的计算如下:
(7)
其中,
,pi是类别j在T中显现的概率。
CART算法生成的决策树精度较高,可是当其生成的决策树复杂度超过必然程度后,随着复杂度的提高,分类精准度会降低。
因此,用该算法成立的决策树不宜太复杂[4]。
2.1.4SLIQ算法
决策树分类算法研究一直朝着处置大数据集的方向进行,但大部份方式在减少了运算时刻的同时也降低了算法的精度。
SLIQ的分类精度与其他决策树算法八两半斤,但其执行的速度比其他决策树算法快。
SLIQ算法对训练样本集的样本数量和属性的数量没有限制。
SLIQ算法能够处置大规模的训练样本集,具有较好的伸缩性;执行速度快而且能够生成较小的二叉决策树;SLIQ算法许诺多个处置器同时处置属性表,从而实现并行性。
可是SLIQ算法不能摆脱主存容量的限制。
2.1.5SPRINT算法
SLIQ算法要求类表驻留内存,当训练集大到类表放不进内存时,SLIQ算法就无法执行。
为此,IBM的研究人员提出SPRINT算法,它处置速度快,不受内存的限制。
SPRINT算法能够处置超大规模训练样本集,数据样本集数量越大,SPRINT的执行效率越高,而且可伸缩性更好。
可是,SPRINT算法存在着一些缺点,在SLIQ的类表能够存进内存时,SPRINT算法的执行速度比SLIQ算法慢。
2.1.6经典决策树算法的比较
基于决策树的分类算法已经有几十种,各类算法在执行速度、可扩展性、输出结果的可明白得性、分类预测的准确性方面各有所长。
下面就对几种典型的决策树算法进行比较,结果如表2-1所示:
表2-1典型决策树算法的比较
算法
测试属性选择指标
连续属性的处理
是否需要独立测试样本集
运行剪枝时间
可伸缩性
并行性
决策树的结构
ID3
信息增益
离散化
是
后剪枝
差
差
多叉树
C4.5
信息增益率
预排序
否
后剪枝
差
差
多叉树
CART
GINI系数
预排序
否
后剪枝
差
差
二叉树
SLIQ
GINI系数
预排序
否
后剪枝
良好
良好
二叉树
SPRINT
GINI系数
预排序
否
后剪枝
好
好
二叉树
2.2支持向量机
支持向量机(SVM)方式是通过一个非线性p,把到一个乃至无穷维的特点空间中(Hilbert空间),使得在原先的中非线性可分的问题转化为在特点空间中的线性可分的问题.简单地说,确实是升维和线性化。
升维,确实是把样本向高维空间做映射,一样情形下这会增加计算的复杂性,乃至会引发"",因这人们很少问津.可是作为分类、回归等问题来讲,极可能在低维样本空间无法线性处置的样本集,在高维特点空间中却能够通过一个线性超平面实现线性划分(或回归).一样的升维都会带来计算的复杂化,SVM方式巧妙地解决了那个难题:
应用的展开定理,就不需要明白非线性映射的显式表达式;由于是在高维特点空间中成立线性学习机,因此与相较,不但几乎不增加计算的复杂性,而且在某种程度上幸免了"维数灾难".这一切要归功于核函数的展开和计算理论。
选择不同的,能够生成不同的SVM。
SVM的机理是寻觅一个知足分类要求的最优分类超平面,使得该超平面在保证分类精度的同时,能够使超平面双侧的空白区域最大化。
理论上,支持向量性能够实现对线性可分数据的最优分类。
以两类数据分类为例,给定训练样本集(xi,yi),i=1,2,⋅⋅⋅,l,x∈Rn,y∈{±1},超平面记作(w·xi)+b=0,为使分类面对所有样本正确分类而且具有分类距离,就要求它知足如下约束:
yi[(w·xi)+b]≥1,i=1,2,…,l。
图2-1支持向量机
能够计算出分类距离为2/||w||,因此构造最优超平面的问题就转化为在约束式下求:
(8)
为了解决该个约束最优化问题,引入Lagrange函数:
(9)
式中,ai>0为Lagrange乘数。
约束最优化问题的解由Lagrange函数的鞍点决定,而且最优化问题的解在鞍点处知足对w和b的偏导为0,将该QP问题转化为相应的对偶问题即:
(10)
解得最优解
(11)
计算最优权值向量w*和最优偏置b*,别离为:
(12)
因此取得最优分类超平面(w*·x)+b*=0,而最优分类函数为:
(13)
关于线性不可分情形,SVM
的要紧思想是将输人向量映射到一个高维的特点向量空间,并在该特点空间中构造最优分类面。
将x做从输入空间Rn到特点空间H的变换Φ,得:
(14)
以特点向量Φ(x)代替输入向量x,那么能够取得最优分类函数为:
(15)
在上面的对偶问题中,不管是目标函数仍是决策函数都只涉及到训练样本之间的内积运算,在高维空间幸免了复杂的高维运算而只需要进行内积运算。
2.3人工神经网络
人工神经网络是指模拟人脑神经系统的结构和功能,运用大量的处置部件,由人工方式成立起来的网络系统。
该网络具有大规模并行协同处置能力和较强的容错能力和联想能力,同时是一个具有较强学习能力的大规模自组织、自适应性的非线性动力系统。
2.3.1人工神经网络的原理
神经网络的结构是大体处置单元及其互连方式决定的。
如下图,单个神经元单元由多个输入xi,i=1,2,...,n和一个输出y组成。
图3-2神经元
(16)
式中,θ为神经元单元的偏置(阈值),wi为连接权系数,n为输入信号数量,y为神经元输出,f为输出变换函数,称为激活函数。
2.3.2反向传播网络(BP)
BP网络是一类典型的前馈网络。
其它前馈网络有感知器(Perception)
、自适应线性网络和交替投影网络等。
前馈网络是一种具有很强学习能力的系统,结构比较简单,且易于编程。
前馈网络通过简单非线性单元的复合映射而取得较强的非线性处置能力,实现静态非线性映射。
BP网络要紧特点是能够实现从n维到m维的非线性映射,它还能够采纳梯度下降法实现快速收敛。
模型如以下图所示:
图3-3反向传播网络
反向传播算法的具体流程如下:
(1)关于给定的样本集
,初始化网络结构
。
初始化权系数
,学习率η,阈值
。
(2)依照样本集D更新权系数
:
(17)
(18)
(3)计算
,若是
终止训练,并以为现在的
为最优。
不然转第2步继续进行循环。
关于反向传播模型的初始化如下:
输入层:
单元i的输入:
xi
单元数量:
d
单元i的输出:
xj
单元i的激活函数:
线性函数
隐层:
单元j的净输入:
netj
单元数量:
nH
单元j的输出:
yj
单元j的激活函数:
非线性函数
输出层:
单元k的净输入:
netk
单元数量:
c
单元k的输出:
zk
单元k的激活函数:
非线性函数
(1)学习速度
学习速度
直接阻碍权系数调整时的步长。
学习速度过小,致使算法收敛速度缓慢。
学习速度过大,致使算法不收敛。
学习速度的典型取值
。
另外学习速度可变。
误差函数的局部极小值调整权系数的目标是使误差函数取得最小值。
可是,采纳梯度下降法(GradientDescentProcedure)不能保证取得最小值,而只能保证取得一个极小值。
若是训练进程无法使误差函数降低到预期的程度,一种经常使用的方式是:
再一次对权系数进行随机初始化,并从头训练网络。
(2)学习曲线
样本集的划分:
一样情况下,可把已知的样本集划分为三个子集,即训练集、确认集、测试集。
训练集:
用来调整权系数,使误差函数尽可能变小。
确认集:
用来初步验证神经网络对以后新样本的分类能力,并据此确信最正确的权系数。
神经网络的训练进程需要采纳训练集及确认集一起完成。
测试集:
在训练进程最终终止后,再采纳测试集对网络的分类性能进行最后测试,用以评估神经网络在实际应用中的实际性能。
2.3.3Hopfield网络
Hopfield网络是一种动态反馈系统,能够用一个完备的无向图表示,它比前馈网络具有更强的计算能力。
Hopfield网络一样只有一个神经元层次,每一个神经元的输出都与其它神经元的输入相连,是一种单层全反馈网络。
如图3-4所示。
图3-4Hopfield网络
Hopfield网络中神经元之间的权值一样是对称的。
但每一个神经元都没有到自身的联接。
神经元i和神经元j之间彼此连接的权值相等,即wij=wji。
因此现在,网络必然能够收敛到一个稳固值。
不然,那么网络可能会不稳固,无法收敛。
离散Hopfield网络每一个单元均有一个状态值,它取两个可能值之一。
设在某一个时刻t,神经元i的状态为Ui(t),那么在t+1时刻的状态为:
(19)
其中,wij为神经元i何j之间的连接权值,θi为第i个神经元的阈值。
Hopfield网络算法的流程如下:
(1)设置互联权值
(20)
式中,
为S类采样的第i个分量,可为+1或-1;采样类别数为m,节点数为n。
(2)对未知类别的采样初始化
yi(0)=xi
式中,yi(t)为节点i在时刻t的输出;当t=0时,yi(0)确实是节点i的初始值,xi为输入采样的第i个分量,也可为+1或-1。
(3)迭代运算
(21)
(4)重复迭代
直至每一个输出单元不变成止,即Uj(t+1)=Uj(t)
3实验进程与结果分析
3.1实验环境
Windows10专业版,64位,CPUi5-3.3GHz,内存8G
MatlabR2021a
3.2实验数据集
MNIST数据集是一个被普遍用于训练各类图像处置系统的大型手写数字数据库,同时,该数据库也经常使用于人工智能、机械学习、数据挖掘等领域,对分类、聚类和回归模型进行训练,并测试模型的准确性。
MNIST数据集包括60000个训练样本和10000个测试样本,每一个样本都是一个28*28像素的BMP图片。
因为每一个样本都具有类标签,因此该数据集既能够用于有监督的学习和无监督的学习,并能够利用其类标签来计算模型的准确度。
此刻,已经有许多学者利用该数据集进行实验,并试图使他们的算法在该数据集上表现出更低的错误率。
到目前为止,KNN算法、支持向量机、神经网络、决策树算法已经在该数据集上真实实验过,表现出不同的计算性能。
据统计,一种基于DropConnect方式的神经网络在MNIST数据集的实验上能够达到0.21%的错误率,是至今为止分类成效最好的。
3.3数据预处置
MNIST数据集是NIST的一个子集,一共包括四个文。
MNIST数据的原始数据为Ubyte文件,上述四个文件中,train-images,和train-labels用来训练模型,t10k-images和t10k-labels用来评估所训练模型的准确性。
如下图,Matlab无法直接处置该数据集,因此需要对数据集进行预处置。
图3-1MNIST数据集的原始文件
将Ubyte文件转换成.mat文件的要紧进程分为两步,
第一步:
将Ubyte文件转换为BMP图片格式。
源代码如下:
%读取训练图片数据文件
[FileName,PathName]=uigetfile('*.*','选择测试图片数据文件t10k-images.idx3-ubyte');
TrainFile=fullfile(PathName,FileName);
fid=fopen(TrainFile,'r');
a=fread(fid,16,'uint8');
MagicNum=((a
(1)*256+a
(2))*256+a(3))*256+a(4);
ImageNum=((a(5)*256+a(6))*256+a(7))*256+a(8);
ImageRow=((a(9)*256+a(10))*256+a(11))*256+a(12);
ImageCol=((a(13)*256+a(14))*256+a(15))*256+a(16);
%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 手写体 数字 识别 算法 实现 分析 毕业论文