语音识别已经成为一个面向多种应用、满足多种需求的庞大体系,这种技术的广泛应用推动了语音识别评测的诞生,而评测反过来又推动了语音识别技术的进步。 语音识别是指用计算机对人的语音信号进行分析处理,从而得到其对应文字的过程。其最终目的就是实现一种自然的人机交互方式,使机器能听懂人的语言,辨明话音的内容,将人的语音正确地转化为对应的文本,或者根据语义做出相应的动作。常见的应用系统有语音输入系统、语音控制系统、智能对话查询系统等。而语音识别评测是指针对语音识别的某项应用,创建评测语料库,提出评测指标和对应算法,用评测语料训练和测试各参评系统,并对其识别结果进行比较和分析的过程。
实际上,从1987年起,美国国家标准技术局就开始组织对各大学和公司研发的语音识别系统进行评测。十几年间,根据技术的现状,组织了多次不同任务的评测,促进了领域内的竞争和交流,对语音识别技术的进步和发展起到了巨大的引领和推动作用。
当前,国际上知名的语音识别评测主要有: 美国NIST(国家标准技术局)评测、欧洲TC-STAR评测和中国的863评测。美国NIST评测是开展历史最久、项目设置最全也最负盛名的评测,近20年来,每年都针对语音识别方向的热点技术组织国际性评测,涉及的语言有英语、汉语普通话和阿拉伯语,涉及的任务有孤立词识别、关键词识别和大词汇量连续语音识别,涉及的语音包括了朗读语音、自然语音、对话语音、广播语音、会议语音等各种常见的语音类别。TC-STAR语音识别评测是欧盟TC-STAR项目的一部分。该项目主要针对语音到语音的机器自动翻译。其语音识别评测任务为连续语音识别,针对英语、西班牙语和汉语普通话,处理的语音为会议发言(英语、西班牙语)或新闻广播(汉语)。863语音识别评测是类似NIST评测的综合性评测,语言以汉语为主,任务和通道多样,根据语音识别技术的现状和发展趋势不断调整。
语音识别的主要技术
近年来,由于大规模语料库的支持,基于统计的语音识别方法逐渐发展成熟,取得了较好的识别结果,成为当前语音识别技术的主流。基于隐马尔可夫模型(HMM)的统计语音识别在各个通道,各种任务的语音识别中得到了广泛应用。
图1所示为当前大多数语音识别系统采用的框架和流程。原始语音经前端处理后,从中提取出若干维的特征向量用于识别。识别时,声学模型和语言模型共同作用,得到使某一概率最大的字串作为识别结果。
前端处理是指在特征提取之前,先对原始语音进行处理,部分消除噪声和不同说话人带来的影响,使处理后的信号更能反映语音的本质特征。最常用的前端处理有端点检测和语音增强。端点检测是指在语音信号中将语音和非语音信号时段区分开来,准确地确定出语音信号的起始点。经过端点检测后,后续处理就可以只对语音信号进行,这对提高模型的精确度和识别正确率有重要作用。语音增强的主要任务就是消除环境噪声对语音的影响。目前通用的方法是采用维纳滤波,该方法在噪声较大的情况下效果好于其他滤波器。
在特征提取阶段,一般是把语音信号切分成几十毫秒的帧,对每一帧提取一个特征向量。但这样会丢失帧与帧之间的联接信息,无法反映帧之间的变化过程,因此,还应该加上向量的一阶差分和二阶差分(相当于连续函数中的一阶导数和二阶导数)共同构成特征。
如上文所述,目前主流的语音识别系统大多基于统计模式识别原理,其基础是由声学模型和语言模型共同构成的统计模型。
声学模型是识别系统的底层模型,其目标是通过模型度量,寻找语音特征向量序列对应的发音。当前常用的声学模型是隐马尔可夫模型(HMM)。HMM模型可以看成一个双重随机过程,一个马尔可夫链的各个状态可以产生出各种输出。这种机制较合理地模仿了人类语言活动的过程,对孤立词和连续语音识别来说都是较理想的声学模型。
语言模型的作用是通过提供字或词之间的上下文信息和语义信息。对于大词汇量连续语音识别,语言模型是必不可少的关键模块之一。目前比较成熟的方法是统计语言模型,当前的主流方法是N元文法(N-gram),其主要思想是根据已知前(N-1)个字或词,预测第N个字或词出现的概率。由于训练语料的限制,目前主要采用三元语法。
训练统计模型
对于统计模型,要想使得它能够识别语音,必须对模型进行训练。所谓训练,是指对大量的训练语料进行统计和处理,计算和调整模型的参数,使模型对未训练过的数据也能达到理想的识别结果。语音识别系统的训练主要包括声学模型的训练和语言模型的训练。对于广泛采用的HMM声学模型,其训练主要是获取HMM中的状态转移概率、各状态的输出概率分布等参数。常用的方法是基于最大似然估计原理的迭代算法(如Baum-Welch算法)。对于基于三元文法的语言模型,其训练主要是从大量的文本中计算三元组的概率。
当模型训练好以后,就可以进行识别了。语音识别算法的主要思路是在侯选的词串中搜索使声学模型和语言模型的概率乘积最大的词串。因此,识别过程也常称作搜索(Search)或解码(Decoding)。当前常用的搜索算法是Viterbi算法,其本质是一种动态规划方法。
当前的语音识别系统大都是说话人无关(Speaker Independent)系统,即事先并不知道要识别的语音的说话人特征。但是,对于某个说话人,如果能够适当学习他(她)的发音特点,调整模型参数,显然会使得识别效果更好。这就是说话人自适应的主要原理。所谓说话人自适应,是指对大训练集上得到的模型参数进行调整,使之对当前说话人产生更好地识别效果。可以说,说话人自适应实际上是希望通过少量数据的增强训练(即所谓的自适应过程),使非特定人系统接近特定人系统的性能。常用的说话人自适应方法主要有两种: 最大后验概率(MAP)方法和最大似然线性回归(MLLR)方法。MPA算法采用基于最大后验概率准则,具有理论上的最优性,因此在小词表的语音识别任务中具有相当好的性能。其缺点是对大词汇量的任务自适应速度缓慢,无法满足应用的要求。因此,当前的大词汇量连续语音识别系统大多采用MLLR方法,或将MAP与MLLR结合。从评测结果来看,如果有充分的时间调整说话人自适应模型,连续语音识别中的字错误率可以下降1至4个百分点。
从几年来各参评系统采用的主要技术来看,当前语音识别系统中的技术严重趋同。几乎所有的参评系统都采用上述框架和基本模块,区别主要在于模块内部的细化程度,或者把某模块中的几种技术做些组合。例如,采用不同的前端处理方法,对男女声和有无噪声的语音分类处理,以及同时采用多种声学特征和不同的搜索策略构造多个识别子系统,最后对各子系统的识别结果做一种类似投票的表决(ROVER技术),得到最终识别结果。
由于863语音识别评测并不限制训练数据的使用,各单位可以使用自备的所有数据。因此,从评测结果及各单位的研讨中可以看到,训练数据的数量和质量对系统的性能有很大的影响。为了使评测更公平,2005年的评测中提供了一定量的统一训练集,但规模还较小。在以后的评测中,将考虑提供大量的训练集,希望能够避免因训练数据不同而造成的性能差异。
863计划中语音识别评测
从2003年起,中国科学院计算技术研究所连续三年承办863计划中文信息处理与智能人机接口技术评测,语音识别评测始终是其中的一个主要分项。三年间,863语音识别评测受到了国内外语音识别研究者的关注,参加单位数逐年递增,成为国内语音识别领域最高级别的交流平台,在国际上也具备了相当的影响力。
2003年和2004年度语音识别评测采用现场评测方式,即各参评系统的运行在评测现场同时进行。这种组织形式比较严格,一旦参评系统运行出现故障将无法继续。而且,要求所有参评单位必须到场,其成本也较高。为了避免这些问题,2005年的863评测采用目前国际通用的网上评测的方法,即在网上发布数据,各参评单位在自己的运行环境上运行参评系统后将识别结果通过网络提交给评测单位。
863语音识别评测最大的特色在于测试数据的选取。文本语料的选取采用从大规模原始语料库中筛选的方法,充分考虑到了对各种韵律学特征(音节、二音子、三音子、音连关系等)、语法特征(句型和句法结构等)和各种领域、各种文体(散文、小说、实事新闻等)的覆盖。录音时不是采用实验室加噪声,而是在完全真实的场景中录制数据,并且充分考虑到了说话人、信噪比等因素的覆盖,在实验的基础上提出了真实环境中信噪比的分布模型,并在此模型的指导下录制数据。这种以实验和理论为依据、以算法为支撑,控制各种语音属性,从而最大限度地拟合真实应用的数据采集方法,在国际上也是很有特色的。目前国际上的同类评测,录音场景多为实验室,对各种影响因素一般只做宽泛的覆盖,几乎没有按理论模型控制的方法。
863语音识别评测的另一个特点是对结果做了充分的统计分析。目前的国际评测一般除给出相应的指标外,还会做一些统计分析,而之前的国内评测却很少这么做。从2004年开始,863语音识别评测也开始对结果进行统计分析,而在2005年的评测中,更是采用专业统计学方法,采用实验设计、假设检验、回归分析、方差分析、协方差分析等一系方法对结果及影响结果的因素进行了深入分析,对各评测单位认清自己系统的优势和缺点,进一步改进起到了很大作用。
另外,在电话连续语音关键词识别评测中,在2004年尝试了以语义槽为单位的基于语法关键词识别任务和评测指标,在2005年首次使用了两个说话人一起录制的自然对话语音,更加符合真实应用的特点,这在国际同类评测中都是没有的。
从评测结果看语音识别技术现状
863语音识别评测,包括PC、电话、嵌入式设备三个语音通道,涉及听写机、对话查询、命令词识别等多种任务,基本上涵盖了当前语音识别的主要研究和应用方向。而参评的又大都是国内长期进行该项研究、有较高水平的单位和系统,因此,无论是采用的方法还是识别的效果,本次评测都可以真实反映出国内语音识别技术的现状。这里结合2004年的评测,对评测结果进行分析。之所以选择2004年的评测结果,是因为它的评测分项最全,几乎覆盖了语音识别的各种应用。
1 识别结果的评价
评测的主要目标就是通过对识别结果的评价、分析了解参评系统的性能的和语音技术的现状。因此,制订有效的、能够真实反映出系统性能的评价指标也是很重要的研究任务。
对于大词汇量连续语音识别来说,国际上通用的指标是文字错误率(对于英语,文字指单词; 对于汉语,文字指字,下同)。其基本思想为采用动态规划算法将标准答案与识别结果对齐,以得到“正确文字数”、“替换文字数”、“插入文字数”、“删除文字数”四项参数,然后计算文字错误率。
错误文字数 = 替换 + 插入 + 删除文字数
文字错误率 = 错误文字数 / 原文答案文字数
下面给出一个例子:
LAB: 新 增 四 百 万 千 瓦 时 的 强 大 电 流 输 入 云 南 的 电 网
REC: 新 增 四 百 花 钱 忙 时 的 q 打 电 流 于 树 绿 云 南 电 网
C C C C N N N C C N N C C I N N C C D C C
其中,LAB是标准答案,REC是识别结果,上面的格式是根据编辑距离最小对齐的结果,第三行标记了各类文字,C表示正确文字,N表示替换文字,I表示插入文字,D表示删除文字。
2004年863语音识别评测中的电话连续语音识别评测分项采用的主要指标是语义槽识别正确率,即用语料文本解析得到的标准答案和识别结果相比较,完全匹配的槽认为是识别正确的,定义槽识别正确率为:
槽识别正确率 = 正确识别的槽的个数 / 标准答案中槽的总数
对于嵌入式设备命令词识别,由于是孤立词识别,因此采用命令词识别正确率即可:
命令词识别正确率 = 正确识别的命令词数 / 命令词总数
2 识别系统性能
对各系统给出的识别结果计算上述指标,得到对各系统识别性能的评价。表1给出了每个分项中识别效果最好的系统的指标,以及前三名系统的平均指标。为了统一,将电话连续语音识别中的槽识别正确率和嵌入式设备命令词识别中的命令词识别正确率统称为正确率。对桌面(这里指PC,以下同)连续语音识别,采用文字正确率,定义为(目前研究者对文字正确率定义稍有不同,本文中一律以下面的定义为准):
文字正确率 = 1 - 文字错误率
表中的最高正确率基本可以代表该分项的最高水平,前三名的正确率均值可以一定程度上反映该分项的平均水平,而前三名正确率的方差可以反映该分项中各系统的性能差异程度。
从表中可以看到,桌面连续语音识别分项中,汉语的识别效果远远好于英语(文字正确率最多相差20个百分点)。其原因显然在于国内对汉语语音识别的研究比英语多而且深入。另外,英语训练语料的相对缺乏,也是一个重要原因。
在采用了语法限制的语义槽识别任务和槽识别正确率作为评测指标后,电话连续语音的槽识别正确率较低。事实上,由于电话语音的录制环境为办公室环境,其噪音比桌面语音要小得多,所以正确率较低的原因主要在于对语法的处理和槽识别正确率较低。
嵌入式设备命令词识别的正确率与桌面语音字正确率大致相当。一方面,连续语音识别要比孤立词识别困难,另一方面,嵌入式设备的语音通道和计算资源都比PC差得多,从结果可以看出,这两方面的因素基本抵消。
从各分项前三名的正确率方差可以看出,汉语桌面连续语音识别和嵌入式设备命令词分项中各系统的性能差异较小,而英语桌面连续语音识别,特别是一倍实时任务中各系统性能差异较大。这是因为当前语音识别的研究重点在于前者,研究者较多,研究也比较深入,而英语的识别相对来说研究者较少。
3 影响系统识别性能的因素
从上面的识别结果评价可以看出,对真实噪音环境下录制的语音数据,当前的语音识别系统识别正确率偏低,还很难达到实用。
从语音识别产生以来,噪音一直是影响识别效果的主要因素。为了分析噪音对识别的影响,将评测数据按信噪比(SNR)分段,从参评系统选取三个,分别计算其在各段内的识别正确率,可以看出,识别正确率基本上随着SNR的增大而提高,SNR在20dB以上的数据正确率比SNR在5~10dB的数据高近30个百分点。对桌面连续语音识别的其他分项和嵌入式命令词识别的结果分析也得到类似的结果。
对于电话连续语音识别来说,由于录制环境是办公室真实环境,因此噪音并不是影响性能的主要因素。电话连续语音识别分为5个子领域,每个子领域各有一套语法。评测句子由语法生成的有效成分在前后加上任意长的填充词(filler)构成,如语法生成的句子为“从天安门到中关村怎么坐公交车”,而实际录制的句子是“你好,请问从天安门到中关村怎么坐公交车,可以查到吗?”,其中的“你好,请问”和“可以查到吗”就是filler。由分析可以发现,不同领域内的槽识别正确率相差很大。这主要有两个原因,一是不同领域的语法复杂度不同,二是不同领域内有filler的句子所占比例不同。为了进一步衡量filler对识别的影响,选取三个识别系统,将有filler的句子和没有filler的句子分别计算识别率,统计结果如图2所示。从图中可以看出,filler对识别的影响是相当大的,无filler的句子比有filler的句子识别正确率可以高几十个百分点。
从上面的介绍可以看到,国内语音识别研究发展迅速,识别性能日益提高, 但在对真实环境下录制的数据,特别是信噪比较低的情况下,识别性能还无法达到实用要求。对于桌面连续语音和嵌入式设备上的孤立词识别,对噪音的鲁棒性不高是系统面临的主要问题。对于电话查询系统来说,对语义的解析和无关语句的处理还存在一定困难。另外,对非朗读的自然语音,如对话、会议内容的识别,对电视广播节目内容的识别或检索近年来吸引了越来越多研究者的注意,国外的一些评测机构也组织了这方面的评测,863语音识别评测也在考虑增加相应的项目。总之,863语音识别评测将继续针对这些任务,针对噪音、方言、自然语音等关键问题构建评测语料库,开展评测,提供结果分析,组织讨论交流,以促进语音识别技术的发展。
(作者单位: 中国科学院计算技术研究所)
WPS表格中可以使用VLOOKUP函数进行近似匹配,该函数的基本语法为:
VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
其中:
lookup_value:要查找的值,可以是单元格引用或者文本值。
table_array:用于查找的表格区域,包括要查找的值和相应的返回值,一般情况下需要使用绝对引用或者定义名称来确保查找范围不会改变。
col_index_num:要返回的值所在的列序号,从左往右数,如果查找表格区域包括多列,则需要指定返回值所在的列序号。
range_lookup:可选参数,表示是否进行近似匹配,通常为TRUE(近似匹配)或FALSE(精确匹配)。如果未指定,则默认为TRUE。
如果要进行近似匹配,需要将range_lookup设置为TRUE。在进行近似匹配时,VLOOKUP函数会在查找表格区域中查找第一个小于或等于lookup_value的值,并返回相应的返回值。
例如,假设有一个表格区域A1:B5,其中A列为数值列,B列为相应的文本列,要在该表格区域中查找数值为10的相应文本值,则可以使用以下公式:
=VLOOKUP(10,A1:B5,2,TRUE)
该公式的意思是,在表格区域A1:B5中查找第一个小于或等于10的数值,并返回相应的文本值。如果表格区域中没有小于或等于10的数值,则返回最接近10的数值的相应文本值。
本节,我们将介绍什么是特征,特征的分类以及常见的特征距离度量和它的简单实现。
在机器学习和模式识别中,特征是被观测对象的可测量性能或特性。在模式识别,分类和回归中,信息特征的选择,判别和独立特征的选择是有效算法的关键步骤。特征通常是数值型的,但语法模式识别可以使用结构特征(如字符串和图)。“特征”的概念与线性回归等统计技术中使用的解释变量有关。
以上内容来自于 维基百科 。
关于特征,特征工程这块内容很广泛,在业界广泛流传这么一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
这里,我们也不会对特征做太多学术上的叙述,只是结合例子对特征做一些简单的描述。
特征,可以认为是描述事物的一个特性。比如说我们描述一个人,可以使用的特征很多,身高,体重,性别等等,这些特征往往都会有相应的值,身高(180 cm),体重(70 kg),性别(男,女)。这些特征描述了一个人的基本特性,通过身高,体重,我们想象一个人大致的轮廓。比如简历或者病历,HR可以通过简历上的内容,了解到你的经历,例如学历,实习经历,年龄等等。同样地,医生可以通过病历上面的各项指标和参数,知道你身体的大致情况,从而做出大致的判断了。
那么在机器学习里面呢,我们都会接触各种各样的数据集,不妨以西瓜数据集为例吧。
在这个csv数据集的第一行(除了第一个),都可以看作是一个个特征,那最后一个往往就是标签了,比如色泽就是西瓜的一个特征,色泽就会有相应的特征值,如青绿,乌黑,浅白,对于密度这个特征呢,它的取值就是连续的浮点数了。这些特征都可以描述西瓜的一部分,而好瓜作为标签,决定了瓜的种类,它的取值便是好坏与否了。
接下来我们将介绍特征的分类。
在简单认识了特征后,我们就可以对特征分类了,从上面的西瓜数据集可以看出,每个特征都有相应的取值,描述西瓜的一部分。而是不同特征还是有一些区别的,比如色泽和密度,区别很明显,而有些区别,却不明显,如敲声,虽然它和密度不一样,但是我们还是可以感觉出一种“程度”,混响和沉闷之间还是有“程度”上的区别的,尽管它不如密度那样直观。
现在,我们对特征做个简单的分类吧,这里我们对特征和属性不作区分,即两者的代表意思相同。
通常,我们可以将特征划分为"连续特征"和"离散特征"。
“连续特征”在定义域上有无穷多个可能的取值,比如说密度这个特征,它有无穷多个取值;而“离散特征”在定义域上是有限个取值,比如性别,只有男女之分,调查问卷中的等级之分等等。
但是呢,在距离度量时,特征上“序”的概念,或者说“程度”也是很重要的。在连续特征上,不同特征值的大小关系是很明显的,密度值的不同带来的序的关系显而易见,对于离散特征,尽管它的取值是有限个,但是序的概念依然存在。
例如,调查问卷中常见的评分标准,{"差","较差","一般","较好","好"}的离散属性与连续属性更接近一些,我们能明显感知出"好","较好"的距离比"好","一般"更近一些。这样的特征称为“有序特征”;而诸如颜色(不考虑不同颜色对应的值),交通方式这样的特征,它们的定义域也是有限的,如交通方式{"飞机","火车","轮船","汽车"},它们没有明显的序的概念,称为“无序特征”。
至此,我们可以对特征简单地分类:
对于函数 ,我们首先看看距离度量需要满足的一些基本性质:
需注意的是,通常我们是基于某种形式的距离来定义"相似度度量",距离越大,相似度越小。然而,用于相似度度量的距离未必定要满足距离度的所有基本性质,尤其是直递性。例如在某些任务中我们可能希望有这样的相似度度量:"人","马"分别与"人马"相似,但"人"与"马"很不相似;要达到这个目的,可以令 "人","马"与"人马"之间的距离都比较小 但"人"与"马"之间的距离很大,此时该距离不再满足直递性;这样的距离称为"非度量距离"。
如图:
接下来,我们将介绍常见的特征距离度量,第一个是针对无序特征的,其他的是针对连续特征和离散特征中的有序特征的度量方式。
在介绍连续特征和离散特征中的有序特征的度量方式前,我们先简单约定一些符号。
都是 维空间上的向量。
表示 和 之间的距离。
使用matlab实现部分度量方式。
对无序属性可采用 VDM (Value Difference Metric)。令 表示在属性 上取值为 的样本数, 表示在第 个样本簇中在属性 上取值为 的样本数, 为样本簇数,则属性 上两个离散值 与 之间的 VDM 距离为:
这个是我们从小到大接触的最多的距离了,其公式为:
matlab程序:
标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离将各个分量都“标准化”到均值、方差相等。
假设样本集X的均值为 ,标准差为 , 的“标准化变量”表示为:
标准化欧氏距离公式:
matlab程序:
切比雪夫距离为某一维度上的最大距离,其公式如下:
matlab程序:
曼哈顿距离也被称为“计程车距离”,或者说“城市街区距离”,它不是走两点之间的直线,而是类似于的街道这样的线段,其公式如下:
matlab程序:
闵可夫斯基距离是一组距离的定义,是对多个距离度量公式概括性的表述,其公式为:
当 ,为哈曼顿距离:
当 ,为欧氏距离:
当 ,为切比雪夫距离:
matlab程序如下:
马氏距离是基于样本分布的一种距离,其定义如下:
有 个样本向量 ,协方差矩阵为 ,均值记为向量 ,其中样本向量 到 的马氏距离为:
向量 与 的马氏距离为:
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则 与 之间的马氏距离等于他们的欧氏距离:
若协方差矩阵是对角矩阵,则就是标准化欧氏距离:
特点:
matlab程序如下:
余弦距离可用来衡量两个向量的差异,其公式如下:
夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。
matlab程序如下:
两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。
汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素 和 之间的汉明距离等于它们汉明重量的差 。
应用:汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。比如在信息编码过程中,为了增强容错性,应使得编码间的最小汉明距离尽可能大。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。
matlab程序如下:
杰卡德相似系数:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:
杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:
用公式表示:
matlab程序如下(matlab中将杰卡德距离定义为不同的维度的个数占“非全零维度”的比例):
相关系数:是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关):
相关距离:
公式如下:
matlab程序:
信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度),分散程度,混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小,公式为:
其中, 是样本集 的类别数, 是 中第 类元素出现的概率。
设有两个概率分布 , 上, , ,则 和 的互信息为:
设 , 是两个随机变量,其
皮尔逊相关系数为:
其中, 是 , 的协方差, , 是 , 的标准差。
相对熵, , 是两个概率分布,其距离为:
它是非对称度量:
基于KL散度发展而来,是对称度量:
其中
量在再生 希尔伯特空间 中两个分布的距离,是一种核学习方法。两个随机变量的距离为:
其中, 是映射,用于把原变量映射到高维空间中。
以上便是一些机器学习里面常见的度量方式,其实还有很多,例如Principal angle,HSIC等,这里就不继续展开叙述了。
针对不同的特征,不同的问题,我们需要选择合适的度量方式。
本文参考了
请写一个Windows表单(就是带有若干控件的窗口)程序,根据Levenshtein距离(编辑距离),计算出两个文件的差异。
计算Levenshtein距离通常采用的自底向上动态编程算法,需要用到一个(n + 1) × (m + 1) 的矩阵,n和m分别是两个字符串的长度。这里有一个函数LevenshteinDistance的伪代码,传入参数是:字符串s及其长度m、字符串t及其长度n。该函数计算两者的Levenshtein距离。
以下是得到的矩阵的两个示例,高亮突出部分是需要经过的最少步骤。
这个算法中,有一点自始至终保持不变:我们最少只需d[i,j]步 *** 作即可以把(任意)初始的字符段s[1i] 变换为t[1j]。当算法执行结束后,数组右下方的元素就是最终结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)