在这个较深的领域也有许多肤浅的体会,在这里做一个小结吧,权当用来理清烦乱的思路.
说到数据挖掘, 不能不首先从定义说起. 数据挖掘的定义是在发展中不断丰富起来的. 而且对于不同应用领域,定义和理解都是存在区别的.
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据集中识别有效的、新颖的、潜在有用的,以及最终可理解的模式的非平凡过程。它是一门涉及面很广的交叉学科,包括机器学习、数理统计、神经网络、数据库、人工智能、模式识别、粗糙集、模糊数学等相关技术。
由于数据挖掘是一门受到来自各种不同领域的研究者关注的交叉性学科,因此从发展过程中导致了很多不同的术语名称。其中,最常用的术语是"知识发现"和"数据挖掘"。相对来讲,数据挖掘主要流行于统计界(最早出现于统计文献中)、数据分析、数据库和管理信息系统界;而知识发现则主要流行于人工智能和机器学习界。
数据挖掘可粗略地理解为三部曲:数据准备(data preparation)、数据挖掘,以及结果的解释评估(interpretation and evaluation)。
根据数据挖掘的任务分如下几种:探索性数据分析、描述建模、分类或预测建模、数据聚类、关联规则发现、寻找模式和规则、依赖关系或依赖模型发现、异常和趋势发现等等。
根据数据挖掘的对象分,有如下若干种数据源:关系数据库、面向对象数据库、空间数据库、时态数据库、文本数据源、多媒体数据、异质数据库、遗产(legacy)数据库,以及Web数据源。
根据数据挖掘的方法分,可粗分为:统计方法、机器学习方法、神经网络方法和数据库方法。统计方法中,可细分为:回归分析(多元回归、自回归等)、判别分析(贝叶斯判别、费歇尔判别、非参数判别等)、聚类分析(系统聚类、动态聚类等)、探索性分析(主元分析法、相关分析法等)、以及模糊集、粗糙集、支持向量机等。机器学习中,可细分为:归纳学习方法(决策树、规则归纳等)、基于范例的推理CBR、遗传算法、贝叶斯信念网络等。神经网络方法,可细分为:前向神经网络(BP算法等)、自组织神经网络(自组织特征映射、竞争学习等)等。数据库方法主要是基于可视化的多维数据分析或OLAP方法,另外还有面向属性的归纳方法。
数据挖掘算法的组件:四大基本组件:1.模型或模式结构,决定要寻找的潜在结构或函数形式; 2.评分函数,鉴定一个已拟合模型的质量; 3.优化和搜索方法,一套算法执行的方法,其中涉及到优化评分函数和对不同模型和模式结构的搜索; 4.数据管理策略,在搜索和优化过程中高效的管理和访问数据.
以上粗浅介绍了数据挖掘的主要概念. 结合语音识别的工作,下面简要说说当前语音识别的概况.
语音信号处理以语音为研究对象, 涉及心理学、生理学、语言学、人工智能、模式识别等多项研究领域. 大体上来看, 语音研究领域分为两块: 语音合成(Text to Speech)和语音识别(Automatic Speech Recognition,简称ASR),二者可以分别以嘴巴和耳朵来比拟,分别让电脑具有说话和听话的能力. 我目前的工作属于语音识别的领域,所以就较为熟悉一些. 由于ASR的天然的难度,所以这方面的研究比TTS要晚许多. 下面简要介绍ASR的主要技术.
1.20世纪70年代末, 产生了矢量量化的识别技术. 就是将若干个采样信号分为一组,构成一个矢量,然后一次性进行量化. 然后采用各种方法来度量矢量间的距离, 从而决定识别结果. 因此这里面, 矢量的构成方式、量化方式、距离度量方式都是非常重要的环节.
2.动态时间规正的识别技术(Dynamic Time Warping), 是一种把时间规正和距侧测度计算结合起来的一种非线性规正技术.也是语音识别中的一种很成功的匹配算法.
3. 隐马尔可夫模型技术(Hidden Markov Model,简称HMM). 这一技术是当前世界上的主流技术, 在识别性能上大大超过以前的其他技术. 这是一种统计模型. 其理论基础是在1970年前后由Baum等人建立起来的, 随后由CMU的Baker和IBM的Jelinek等人将其应用到语音识别中. 我在刚开始接触HMM的时候,觉得其深不可测,现在想想这也是在深厚的理论积累上自然而然的结果.在20世纪80年代中期,Bell Lab的Rabiner等人对HMM的深入浅出的介绍, 才使得各国的语音相关的研究人员了解和熟悉HMM, 进而成为公认的有效的语音识别方法. HMM主要涉及数理统计理论、动态规划等。HMM应用到语音处理时经常会面临3大基本问题:前向-后向算法、Viterbi算法和Baum-Welch算法。关于HMM的使用,有一个对于全球语音识别研究具有重要作用的工具,那就是剑桥大学工程系的Speech Vision and Robotics Group(不知道如何翻译合适,大概就是语音感知与机器人研究组)开发的Hidden Markov Model Toolkit (HTK). 由于语音处理涉及到许多方面的数据处理工作,HTK为人们提供了许多方面的支持. 我曾经简单阅读了HTK的代码, 复杂精巧之极, 由于涉及到许多底层的理论, 所以如果不懂得相关理论是很理解代码的.
4.神经网络技术(Artificial Neutrual Network),相信许多人不会陌生. 它模拟人的大脑的原理(尽管人们还不太了解人的大脑的工作原理),通过许多人工神经元组成一个复杂的多层的网络, 每个人工神经元都有自己的一个相当于函数的变换. 函数的参数时待定的. 通过已有的训练集来对这个网络进行训练,从而确定网络中每个神经元的变换方式. 尽管ANN的最终形式很难用可以理解的方式来描述, 但是ANN具有几乎无限的描述能力, 只要有足够的训练数据.(如果训练数据不足,就可能导致训练出来的结果过度拟合. 就是说,与训练集吻合良好,但是对于陌生的数据却误差很大) 但是ANN在语音识别领域的使用还是比不上HMM. 可能主要是由于训练数据的采集是最大的障碍吧.
一个深切的感受就是,许多技术的性能是很吸引人的, 但是实际做起来会有许多现实的障碍. 所以人们往往在理论和现实之间寻找较好的权衡. 好了, 这次就先到这里. 欢迎感兴趣的朋友们一起交流学习.
【作者: cho_ken】