模式识别绪论1:基本概念

来源:互联网 发布:绘制平面图的软件 编辑:程序博客网 时间:2024/05/21 17:06
几年前第一次听到“模式识别”这个词的感觉是好深奥,一直纠结着到底什么是模式。百度上对模式的解释是:“某种事物的标准形式或使人可以照着做的标准样式”,说得更简明点,模式就是一类特定的事务,如鸟类这个群体就可以作为一个模式,一个文字也可以认为是一种分类。而模式的定义可以说是人为的,假定现在有一家书店,店长要对书店里的书进行分类,那么根据不同的标准,就可以形成不同的分类模式:中文书籍与外文书籍、小说与科学文献等。用最简单的语言来说,模式就是有特定特征的一类东西。

而模式识别所做的事情即使把这些不同的模式进行正确的划分,用回上述的例子,模式识别要做的事情就是正确的把书店里的书分成中文与外文(或小说与科学文献)两堆书。这里所提的例子只是为了让大家能比较好的理解,在真实应用中,模式识别所要解决的问题会复杂很多,比如现在Android手机中的人脸识别功能:用户自己的脸是一个特定模式,而别人的脸则是其他模式;又如光学字符标识系统(OCR: Optical Character Recognition,一种将纸上文字扫描转录为计算机文字的系统):每个不同的字符都是一种特定的模式,通过模式识别让计算机能够读懂纸上的文字。

人脸识别技术  OCR光学字符标识系统
图片来自互联网


那些复杂的例子对理解模式识别并没有太大的帮助,为了能够更好的说明模式识别所做的事情和主要的思想,这里举一个比较容易理解的例子:

一个西瓜农场到了收获季节,为了能够达到更好的市场效应,果农利用自动化技术对西瓜进行分类,机器通过对西瓜的各种特征进行分析来判别西瓜的生熟、是否甜进行模式识别。最终的目标是将每个西瓜放到不同的分类里去,便于进行差异化定价以获得更好的收益。

生熟西瓜模式识别问题

将问题进一步简化,我们只进行生瓜与熟瓜的模式识别。题外话:曾经和朋友聊过选西瓜这事儿,很多朋友觉得最实在的方法是把瓜切开来检查,这方法确实是最准确的方法,但这也就仅合适买了回家就开吃的消费者,对瓜农来说这是不可能的事儿了,如果哪个瓜农真这么去做把每个西瓜剖开来做分类,那铁定血本无归了 - -

回到生熟西瓜模式识别问题上,我们最直观想到的识别方法就是看瓜皮的颜色了,在绝大多数情况下,瓜皮色深为熟,色浅为生。若依次为特征,那么所要做的工作就是便是将瓜皮颜色深浅进行量化,将颜色的深浅度标为0~1,0为浅色,1为深色。通过对样本100个生瓜与100个熟瓜进行检验,可以得到如下表的结果:

使用瓜皮的颜色深浅识别生熟瓜

由检验结果可以看到瓜皮颜色深浅这一特征可以对大部分的生熟西瓜进行正确分类,直观的看选择0.7作为阀值可以比较小误差的完成模式识别任务,不存在一个阀值可以准确无误的将生熟瓜分开,换而言之,模式识别并不是要绝对无误的将多种模式进行区分,而是要尽可能的减小错误情况。在真实的应用中,模式识别往往也达不到100%的正确,如人脸识别中对双胞胎是很难识别的,OCR系统中对一些较为潦草的文字也是难以正确识别的。虽然无法绝对的正确,但提高准确是依旧还是模式识别的任务之一。在区分生熟瓜的问题中,除了看瓜皮颜色外,还可以通过声音、纹理等等因素来进行识别,河北农业大学进行过一项有趣的实验就是通过拍打西瓜所发出声音的振动频率来识别西瓜的生熟,这里简化实验结果直接通过表的形式来进行生熟西瓜的识别:

使用拍打西瓜声音振动频率识别生熟瓜

可以看到声音振动频率这一特征比瓜皮颜色这一特征具有更好的识别效果,大大的降低了总体代价(即减少了错误识别的情况)。当然结合两个特征来进行识别可能可以获得更好的效果,雨过用程序设计语言来表达这个模式识别过程,则为:

if(hitHz>=190){      return "熟西瓜"}else{     return "生西瓜"}
     
至此,已经最简单的描述了模式识别所要做的事和如何做的方法,这里就先暂时不再继续对西瓜做太多的深入研究。在处理实际问题上所使用的模式识别方法也并不是那么简单,在确认好模式识别方法后还要考虑的问题也还有很多,在后续的文章里会将相应的概念以简单的方式展现出来。
原创粉丝点击