一种基于聚类的使用语音判断帕金森严重程度检测方法与流程

文档序号:16587374发布日期:2019-01-14 18:37阅读:2427来源:国知局
一种基于聚类的使用语音判断帕金森严重程度检测方法与流程

本发明涉及机器学习、人工智能、语音诊断、数据挖掘,更具体地说,涉及一种基于聚类的使用语音判断帕金森严重程度检测方法。



背景技术:

svm(supportvectormachine)是目前使用最广泛的分类器之一。svm可以解决的基本问题是二分类问题。它的根本思想是通过凸优化算法从训练数据中找到一个或者一组可以将两类数据分开的超平面。这样,在预测时,就可以通过这组超平面来判断预测数据属于哪一类。目前已有的基于机器学习的帕金森诊断技术只是将帕金森进行诊断分类,判定疑似患者是否患有帕金森病。而帕金森病是一种不可逆转的疾病,所以在实际的生活中不能起到本质解决病人问题的效果。支持向量回归(supportvectorregression,svr),是根据svm的基本思想改良成的一种回归算法,其主要思想是寻找一个超平面对样本进行映射,与其它的回归算法不同的是其映射与真实值之间的差的绝对值如果小于一个具体的范围,就不计入损失。但是已有技术中还存在的一些缺陷或问题,比如说只能进行是否患有帕金森分类,不能给出患病程度。虽然有专利是通过updrs(统一帕金森病评定量表)对帕金森病人评估患病严重程度,但是是进行整体计算与预测,不能根据帕金森患者的情况进行个性化预测。加快了诊断的效率。



技术实现要素:

本发明给出一种基于聚类的使用语音判断帕金森严重程度检测方法。

为了达到上述目的,本发明提供一种基于聚类的使用语音判断帕金森严重程度检测方法,包括如下步骤:

s1、语音信号的采集

选择元音,通过采集设备,采集如下内容:病人编号、姓名、年龄、性别、是否确诊为帕金森、是否有其他导致语音障碍的疾病、患病时间、updrs(运动)、updrs(整体)、采集日期及时间、当天第几次采集;

s2、语音信号的预处理

对语音进行语音信号的预处理,包括格式转换,采样频率转换,预加重,加窗和分帧,去除无声部分,进行基频提取;

s3、提取所有的语音特征

包括基频特征pitch、基频扰动jitter、振幅扰动shimmer、信噪比特征、非线性特征;

s4、模型及计算

基于支持向量机的分类算法,利用线性可分svm分类器,以及非线性模型,svm通过引入核函数建立模型;将s3所得特征数据以及医生给出的信息进行一一对应,行成数据集;使用k-means进行聚类,对于每一个聚类的类别,将数据集按3:1的比例分为训练集和测试集;针对每一个聚类行程的类别,训练集使用支持向量机的分类算法及svm模型进行分类模型训练,使用支持向量回归svr方法进行回归模型训练,使用网格搜索方法进行优化模型,将训练好的,每一类别的模型参数进行保存。

s5、进行预测

对于聚类的每个分类,载入以上训练过程中得到的分类及回归模型;输入需要判断和预测的数据,计算距离判断所属类别,使用该类别对应的模型对数据进行分类计算,得到分类结果。将分类结果再进行处理,对于预测是未患有帕金森病的测试者,将标记值置设为0,对于预测患有帕金森病的测试者,再使用svr进行回归预测,得到计算出的标记值,通过标记值进行患病者的严重程度推测,结束进程;

s6、反馈结果

将预测的结果通过接口,反馈回前端,展示给用户。

优选方式下,步骤s3中基频特征pitch采用自相关法来进行基频的提取;

对于确定性的信号,短时自相关函数的定义为:

然后对于每一帧的自相关函数,需要找到其第一个过零点之后最大的峰值,其对应的下标k值就是该帧语音对应的基音周期,对k取倒数就是基频;

一般基频用来表示,由于在语音预处理的时候对语音信号进行了分帧处理,所以每一帧都会有一个对应的,这样就可以得到一个基频序列。

而基频特征就是在提取出的基频序列基础上,计算一些简单的统计学的参数。

优选方式下,步骤s3中,jitter用来表示基频的扰动,即基音周期偏离周期的程度,由于音频采用的是持续发音法,且发长元音,可以排除元辅音交替的基频扰动;

jitter计算的时候使用的不是基频,而是基音周期,基音周期定义如下:

s.t.n=1,2,...,n(2.1)

其中,n表示帧,n代表了帧的总数,指的是第n帧的基频,指的就是第n帧的基音周期;

(1)jitter:即基音周期的相对扰动,是相邻基音周期的差的平均绝对值,与基音周期的平均值的比值,反映了整体受试者对声带振动的相对控制能力;其公式为:

(2)jitter_abs:即基音周期的绝对扰动,就是相邻基音周期的差的平均绝对值,反映了整体受试者对声带振动的绝对控制能力;其公式为:

(3)jitter_ppq5:即基音周期相邻5点扰动,是某一帧基音周期与其相邻5帧的平均基音周期之差的平均绝对值,一定程度反映了一段时间受试者对声带振动的控制能力;其公式为:

(4)jitter_rap:即基音周期相邻3点扰动,是某一帧基音周期与其相邻3帧的平均基音周期之差的平均绝对值,一定程度反映了一段时间受试者对声带振动的控制能力;其公式为:

(5)jitter_ddp:即基音周期相邻3点扰动之差,是相邻3帧基音周期之间的差的的差值,再求平均绝对值,一定程度反映了一小段时间内受试者对声带振动的控制能力的差值;其公式为:

优选方式下,步骤s3中,shimmer是语音的振幅的扰动,即振幅偏离平均振幅的程度:

shimmer测量的振幅的定义是:

a0,n=max(pn)-min(pn)(3.1)

s.t.n=1,2,...,n

其中,序列表示第n帧的语音信号值序列,指第n帧对应的振幅;

(1)shimmer:即振幅扰动(按百分比来算),是相邻振幅的差的平均绝对值,与振幅的平均值的比值,反映了受试者对语音幅度的相对控制能力;其公式为:

(2)shimmer_db:即振幅扰动(按分贝来算)。是相邻振幅的比值的平均值,只不过单位是分贝db,反映了受试者对语音幅度的相对控制能力;其公式为:

(3)shimmer_apq5:即振幅相邻5点扰动,是某一帧振幅与其相邻5帧的平均振幅之差的平均绝对值,一定程度反映了一段时间受试者对语音幅度的控制能力;其公式为:

(4)shimmer_apq3:即振幅相邻3点扰动,是某一帧振幅与其相邻3帧的平均振幅之差的平均绝对值,一定程度反映了一段时间受试者对语音幅度的控制能力;其公式为:

(5)shimmer_dda:即振幅相邻3点扰动之差,是相邻3帧振幅之间的差值之差,再求平均绝对差值,一定程度反映了一小段时间内受试者对语音幅度的控制能力的差值;其公式为:

(6)shimmer_apq11:即振幅相邻11点扰动,是某一帧振幅与其相邻11帧的平均振幅之差的平均绝对值,一定程度反映了一大段时间受试者对语音幅度的控制能力;其公式为:

优选方式下,步骤s3中,非线性特征为有去趋势波动分析dfa、复发周期密度熵rpde、基频周期熵ppe。

本发明是使用计算机软件分析完成的,解决了临床中没有固定指标确定是否患有帕金森的难题,同时也解决了临床观察帕金森周期长,费用高等问题,具有实时,高效又低成本的特点。这个基于聚类的使用语音判断帕金森严重程度检测的方法,不仅能够通过语音的方式对被测试者是否患有帕金森病进行判断,还可以通过预测的updrs值进行被测试者患帕金森严重程度的判断,通过聚类的方法行成多个类别,小类别类进行预测和回归可以显著提高预测的准确率。可以通过预测的结果,来决策接下来对患者如何进行辅助治疗。对于帕金森患者的个性化治疗是一个福音。

附图说明

图1是模型构建流程图;

图2updrs评估流程图;

图3线性可分svm分类器;

图4线性svr回归器。

具体实施方式

一语音信号的采集

1.1发音的选择

采集的发音内容需要简短,同时能够在一定程度上反映出病人的语音障碍。考虑到需要不同的人之间存在语种不同、有无方言、有无口音以及需要避免发音不清等多种因素,决定采用持续发音法,此方法比较普遍,且效果好,可操作性强。

而选择发音上,选择了发元音,这是因为不同的声音形成的机理不同:

(1)元音:是在发音过程中由气流通过口腔而不受阻碍发出的音。其发音时气流从肺部呼出经过声门,然后冲击声带,使声带均匀振动,最后气流不受阻碍通过口腔、鼻腔,通过舌、唇的调节而发出不同的声音。所以发元音时声带必然振动。

(2)辅音:是在发音过程中由气流在口腔或咽头受到阻碍而发出的音。其发音时气流受到多个发音器官的各种阻碍,其主要依靠阻碍来发音。所以发辅音时声带不一定要振动。

1.2采集设备

与以往使用专业的录音设备的实验相比,为了满足将其包装成app的需要,采集时用到的设备为正常的手机。同时由于手机存在操作系统不同的问题,我们使用了两台手机进行采集,一台是iphone5s,另一台是oppor9s。该系统使用python的flask框架在服务器搭建后台处理平台及音频传输接口,通过使用已经开发好的app进行采集,将语音文件存到后台服务器里,以便后续处理。

1.3采集方案

为了得到大量的实验数据,需要对每一个帕金森病人进行多次测量(开状态,关状态,服药前,服药后,服药1小时后,服药3小时后),采样环境需满足安静同时使采样者放松的房间,且协助采样者同样保持安静。如果在录音过程中有突发的不可预测的杂音,需要删掉重录,从而保证录音的质量。采集内容包括:病人编号、姓名、年龄、性别、是否确诊为帕金森、是否有其他导致语音障碍的疾病、患病时间、updrs(运动)、updrs(整体)、采集日期及时间、当天第几次采集。

二语音信号的预处理

对语音进行语音信号的预处理,包括格式转换,采样频率转换,预加重,加窗和分帧,去除无声部分,进行基频提取,使用matlabr2017a作为处理工具。(此部分可以在网络上查到)

三提取所有的语音特征

包括基频特征pitch、基频扰动jitter、振幅扰动shimmer、信噪比特征、非线性特征,具体计算语音特征步骤如下:

表1所有用到的语音障碍特征表

1.基频特征pitch

采用了最为常见的自相关法来进行基频的提取,其特点是可解释性强,同时适合于这种快速的语音处理手机应用。自相关法其计算比较简单,就是利用自相关函数进行基频的估计。

首先需要对之前提取的每一帧语音信号进行短时自相关计算。对于确定性的信号,短时自相关函数的定义为:

然后对于每一帧的自相关函数,需要找到其第一个过零点之后最大的峰值,其对应的下标k值就是该帧语音对应的基音周期,对k取倒数就是基频。

一般基频用来表示,由于在语音预处理的时候对语音信号进行了分帧处理,所以每一帧都会有一个对应的,这样就可以得到一个基频序列。

而基频特征就是在提取出的基频序列基础上,计算一些简单的统计学的参数。

(1)f0_mean:即对基频序列求平均值,反映了受试者声带振动频率的整体高低,男女之间有一定的差别。

(2)f0_max:即对基频序列求最大值,反映了受试者声带振动频率的最大值。

(3)f0_min:即对基频序列求最小值,反映了受试者声带振动频率的最小值。

(4)f0_median:即对基频序列求中值,一定程度上反映了受试者声带振动频率的整体高低。

(5)f0_std:即对基频序列求标准差,反映了受试者声带振动频率的离散程度。

2.基频扰动jitter

jitter本为抖动的意思,在概率学上指的是一个事件实际发生与理想发生的时间的偏差,由确定性内容和高斯(随机)内容组成。

这里面jitter用来表示基频的扰动,即基音周期偏离周期的程度,由于音频采用的是持续发音法,且发长元音,可以排除元辅音交替的基频扰动,所以jitter在一定程度上反映了受试者对声带振动的控制能力。

jitter计算的时候使用的不是基频,而是基音周期,基音周期定义如下:

s.t.n=1,2,...,n(2.1)

其中,n表示帧,n代表了帧的总数,指的是第n帧的基频,指的就是第n帧的基音周期。

(1)jitter:即基音周期的相对扰动,是相邻基音周期的差的平均绝对值,与基音周期的平均值的比值,反映了整体受试者对声带振动的相对控制能力。其公式为:

(2)jitter_abs:即基音周期的绝对扰动,就是相邻基音周期的差的平均绝对值,反映了整体受试者对声带振动的绝对控制能力。其公式为:

(3)jitter_ppq5:即基音周期相邻5点扰动,是某一帧基音周期与其相邻5帧的平均基音周期之差的平均绝对值,一定程度反映了一段时间受试者对声带振动的控制能力。其公式为:

(4)jitter_rap:即基音周期相邻3点扰动,是某一帧基音周期与其相邻3帧的平均基音周期之差的平均绝对值,一定程度反映了一段时间受试者对声带振动的控制能力。其公式为:

(5)jitter_ddp:即基音周期相邻3点扰动之差,是相邻3帧基音周期之间的差的的差值,再求平均绝对值,一定程度反映了一小段时间内受试者对声带振动的控制能力的差值。其公式为:

3.振幅扰动shimmer

shimmer本为闪烁的意思,在这里同jitter,但是其测量的对象不同,是语音的振幅的扰动,即振幅偏离平均振幅的程度。

由于实验测得语音的振幅不单单与受试者发声有关,还与受试者与手机的距离等其他因素有关,所以很难用语音的振幅直接作为特征。但是帕金森病人有一个特点,就是在说话的时候,声音会原来越小,所以帕金森病人对语音的幅度的控制不如正常人,而shimmer可以很好的体现这一点。

shimmer测量的振幅的定义是:

a0,n=max(pn)-min(pn)(3.1)

s.t.n=1,2,...,n

其中,序列表示第n帧的语音信号值序列,指第n帧对应的振幅。

(1)shimmer:即振幅扰动(按百分比来算),是相邻振幅的差的平均绝对值,与振幅的平均值的比值,反映了受试者对语音幅度的相对控制能力。其公式为:

(2)shimmer_db:即振幅扰动(按分贝来算)。是相邻振幅的比值的平均值,只不过单位是分贝db,反映了受试者对语音幅度的相对控制能力。其公式为:

(3)shimmer_apq5:即振幅相邻5点扰动,是某一帧振幅与其相邻5帧的平均振幅之差的平均绝对值,一定程度反映了一段时间受试者对语音幅度的控制能力。其公式为:

(4)shimmer_apq3:即振幅相邻3点扰动,是某一帧振幅与其相邻3帧的平均振幅之差的平均绝对值,一定程度反映了一段时间受试者对语音幅度的控制能力。其公式为:

(5)shimmer_dda:即振幅相邻3点扰动之差,是相邻3帧振幅之间的差值之差,再求平均绝对差值,一定程度反映了一小段时间内受试者对语音幅度的控制能力的差值。其公式为:

(6)shimmer_apq11:即振幅相邻11点扰动,是某一帧振幅与其相邻11帧的平均振幅之差的平均绝对值,一定程度反映了一大段时间受试者对语音幅度的控制能力。其公式为:

4.信噪比特征

谐波信噪比hnr(harmonictonoiseratio)和谐波噪信比nhr(noisetoharmonicratio)是比较常见的一对用来评估语音中包含噪音的比例的特征,其在言语病理学中的诊断价值已经被广泛的报道过。它们可以很好的度量浊音语音信号用于产生声学波形中的加性噪声。而由于本实验采用的长元音也属于浊音信号,所以hnr和nhr是很好的语音障碍特征。

如果采集的语音信号足够纯净,那么其中的噪音主要来自于声带在振动时的不完全闭合,帕金森病人的由于对声带附近的肌肉的控制力减弱且会振颤,所以可以用来评估帕金森病人发声时声带闭合的能力。

一个比较简便而实用的计算方法也是基于自相关函数。首先同基频特征小节里的方法对每一帧的语音信号计算自相关函数(短时自相关)。定义一个参数,其代表了除了零延迟以外,自相关的值最大的那个点对应的下标k值,近似该帧对应的基音周期。然后根据公式(1.1),rxx(lmax)就是最大的那个点的对应的自相关函数值。

那么谐波分量为:

噪音分量为:

那么hnr(按分贝计算)的定义为:

那么nhr(按比例计算)的定义为:

每一帧都可以得到一个对应的hnr和nhr,所以参考基频特征,还需要在hnr和nhr序列的基础上计算一些简单的统计学的参数。

(1)hnr_mean,即谐波信噪比的平均值,可以在分贝的度量上,评估受试者发声时声带闭合的平均能力。

(2)hnr_std,即谐波信噪比标准差,可以在分贝的度量上,评估受试者发声时声带闭合的平均变化。

(3)nhr_mean,即谐波噪信比的平均值,可以在正常的度量上,评估受试者发声时声带闭合的平均能力。

(4)nhr_std,即谐波信噪比标准差,可以在正常的度量上,评估受试者发声时声带闭合的平均变化。

5.非线性特征

经过实验发现,使用非线性特征构建的模型更能区分帕金森病人的声音和健康人的声音,所以近年来越来越多的相关研究都在致力于使用新的非线性特征。

非线性特征计算比较复杂。本次实验所采用的非线性特征为有去趋势波动分析(dfa)、复发周期密度熵(rpde)、d2、基频周期熵(ppe)。下面就是对这些特征的原理与计算方法的介绍。

5.1dfa(去趋势波动分析)

去趋势波动分析(detrendedfluctuationanalysi,dfa)是一个最为直接的评估信号分形自相关性的方法之一,其早期是用来评估dna链结构排序的变化特性。其主要思想是去掉信号中的固有趋势,从而获得信号中的波动特性,属于非线性的模型,主要用于对非平稳的时间序列(在统计学上是指方差、自相关等特性随着时间而变化的序列)的标度指标进行计算。

其计算较为复杂,首先需要对输入信号x(n)进行累加:

通常认为x(n)满足独立分布,且分布相同,即可以认为y(n)在统计学上满足自相关独立分布。接着需要对y(n)进行不重叠分段,其分段的段数scales默认的选择是从分2段开始,到最接近log2m的整数,其中m是输入信号的采样总数。

经过分段后,需要对每一段都进行线性拟合,通常使用最小二乘法来进行一阶拟合(线性回归)。最终每一段可以得到一个对应的斜率a和截距b。接着需要求拟合后与真实值之间的均方误差(及波动):

其中,l是每一段的长度,yi(n)是指第i段的第n个y值,ai,bi就是第i段拟合出的斜率和截距。

假如分段的段数scale有n个取值,即l有n个取值那么就需要对这n个分别求取对应的f(l)。由于分段长度l与标度指标之间的关系为:f(l)∝lα,所以不能直接求,通常需要映射到log-log空间中,即log(f(l))∝αlog(l),进行线性拟合即可,同样拟合使用最小二乘法来进行一阶拟合(线性回归),可以得到,即dfa值。

5.2rpde(复发周期密度熵)

复发周期密度熵(recurrenceperioddensityentropy,rpde),是一个基于混沌理论用来寻找信号周期的算法。可以发现一个时间序列重复的程度,其基本思想是在相空间下测量信号的重复度,即复发周期,从而可判断随机噪声的大小,属于非线性模型。

其计算涉及到混沌理论。

(1)混沌理论:

首先介绍一些混沌理论的基础:不同于通常的时间序列研究,在混沌时间序列中,需要将序列映射到相空间中,即相空间重构。通常,根据嵌入定理,可以使用坐标延迟法进行相空间重构:

x={xi|xi=[xn,xn+τ,xn+2τ,...,xn+(m-1)τ]t,i=1,2,...,m}(5.2.1)

式(5.2.1)中,xn是输入的时间序列x的第n个值。xn是相空间重构出的嵌入向量,是嵌入延迟,m是嵌入维度,即嵌入向量的长度,m是嵌入向量的个数。嵌入延迟和嵌入向量的选择是相空间重构十分重要的一环。

(2)c-c算法

目前有许多理论对和m进行求解,其中c-c算法是其中最为经典的算法之一,可以直接将二者全部求出,其基于关联积分:

其中,dij=||xi-xj||(∞),是其无穷范数,而n对应输入时间序列的长度。

那么计算时需要将输入时间序列分解成t个如下子序列:

n是t的整数倍,接下来:

调整半径r,定义:

δs2(m,r,t)=max{s2(m,rj,t)}-min{s2(m,rj,t)}(5.2.6)

通常n,m,r的取值可以通过bds统计结论来估计,其中如果取n=3000,m=2,3,4,5,ri=i×0.5σ的时候,是输入时间序列的标准差,i=1,2,3,4。则:

的第一个零点或者的第一个极小值对应的t即为要求的最优。

s2cor(t)的最小值对应的t即为嵌入窗长l=(m-1)t,那么就可以得到最优m。

(3)rpde

得到m和后,根据式(5.2.1)就可以得到m个嵌入向量x,接着使用临近折返法,事先定义一个半径r,和长度为m向量p,p初始化为零向量,其原理是首先选取第i个嵌入向量xi,然后对之后的向量xi进行比较,当找到第一个xj与其的距离小于r开始计数,直到第一个xj+n与其的距离大于r停止,即有n-1个与其距离小于r的向量,然后对p的第n-1的值+1,然后对下一个向量xi+1进行同样的操作,直到所有向量轮完。

那么rpde为:

其中,tmax是选取的p的长度,默认对p全选。

5.3d2(相关维度)

相关维度(correlationdimension,d2),也是基于混沌理论的一个指标,反映了信号的关联程度。

d2是根据关联积分c(r)而来,定义与式(5.2.2)相同,但dij的意义不同由无穷范数变为二范数,即dij=||xi-xj||2。根据式(5.2.2),r为半径,认为相关指标v与r之间的关系为:c(r)∝rv,那么类似dfa,也可以将其映射到log-log空间中,即log(c(r))∝vlog(r),进行线性拟合即可。拟合时使用最小二乘法来进行一阶拟合(线性回归),可以得到v,即d2值。

5.4ppe(基频周期熵)

基频周期熵(pitchperiodentropy,ppe),是用来测量持续发声时基频的稳定性的特征,其思想是将基频映射到对数空间中,并去除各种干扰因素来求基频的周期熵,属于非线性模型。

首先将基频f0转换成对数半音序列:

f0,per=12log2(f0/127)22(5.4.1)

然后需要将f0,per功率谱扁平化,本实验使用普通的线性白化滤波器,其原理是首先计算出输入语音信号的功率谱gx(ω),然后滤波器为:

功率谱扁平化滤波可以滤除掉平均半音的影响(与性别和发音内容相关),滤波之后得到序列为r。接着求取其功率谱p(r)。最后仿照rpde的方法求熵:

其中,l为功率谱序列的长度。

我们将每一段采集的音频都进行以上的特征计算。

四模型介绍以及计算过程

支持向量机(supportvectormachine,svm),是最为经典的分类算法。其主要思想是寻找一个超平面对样本进行分割,此超平面需要尽可能的让正类和负类样本之间的间隔最大,图3表示了一个基本的线性可分svm分类器。

首先假设有m个样本{i∈{1,2,...,m}|(xi,yi)},其中是一个n维的向量,代表了第i个样本的特征向量,其n个值对应了第i个样本的n个特征yi∈{+1,-1},是第i个样本的类别标签,即正类和负类。在图3中,h是用来分类的超平面,其可以使用如下的线性方程表示:

wtx+b=0(1)

其中,w=(w1;w2;...;wn)是h的法向量,其维度也为n维,b是位移项,代表了h与原点的距离。对于第i个样本(xi,yi),若yi=+1,则wtxi+b>0;若yi=-1,则wtxi+b<0,这样就可以进行分类。

而h1和h2是两个与h平行且距离相等的两个超平面,其中h1:wtx+b=-1和h2:wtx+b=1。在svm的思想中,一个好的分类器需要满足两个条件:(1)没有任何样本在h1和h2之间;(2)h1和h2之间的距离要最大。

根据直线之间的距离公式可以推出h1和h2两个超平面间的距离公式:

其中,d是两个超平面h1和h2的距离。根据条件(1),样本必须不能在h1和h2之间,根据条件(2),需要让d最大,则可以求解的最小值,那么可以转化为:

公式(3)为svm的基本型。那么显然公式3是一个凸二次规划问题。可用凸优化方法解决,根据拉格朗日乘数法定理,然后利用对偶问题求解最优值。

首先对上述函数引入拉格朗日乘子,得到拉格朗日函数:

其中,α=(α1;α2;...;αm),对此函数分别求w和b的偏导为0,结果为:

那么将公式(5)和(6)代入(4)中,就可以得到一个对偶问题:

αi≥0,i=1,2,...,m

通常使用smo算法就可以求解该问题。利用对偶问题理论,知道α就可以求解出w,反过来,知道w就可以解出α,求解w的最大值转化为求解α的最大值,求出α*带入公式(4)可求出w*和b*。最后得到最优超平面h*。根据公式(1),当一个新的样本输入时,将其代入函数就可以得到该样本的类别。

但是如果数据有噪声,直接使用上述模型就会带来一定的误差,这时可以让模型允许一些数据点在一定范围内偏离超平面,故引入松弛变量这个概念ξi,其中ξi≥0。

s.t.yi(wtxi+b)+ξi≥1,i=1,2...,m

ξi≥0,i=1,2...,m

引入松弛变量ξi之后,允许样本点的函数间隔小于2,允许有些样本点在超平面之间或者对方的区域中。目标函数中第二项是惩罚项,对离群点进行处罚,离群点越多目标函数值就越多,因此要求尽可能的减小目标函数值。c表示离群点的权重,c越大目标函数值就越大。

但是对于现实的问题,通常用一个线性模型是无法准确分类的(线性不可分),必须需用非线性模型,svm通过引入核函数解决了这个问题,其原理是直接将样本从原始空间映射到更高维的特征空间,而在该空间中线性可分。

令φ(x)为x经过映射后的特征向量,那么带入到公式(8)中:

在计算的时候,需要计算φ(xi)tφ(xj),核函数由此引入:

κ(xi,xj)=<φ(xi),φ(xj)>=φ(xi)tφ(xj)(10)

由于其原理,所以核函数的选择与分类器的性能关系密切。表5.1列举几种常用的核函数。

表5.1常用的核函数

最终求解可以得到:

实现svm的方法有许多,目前最受欢迎的方法是台湾大学林智仁教授开发的libsvm工具箱,简单易用,速度快速,功能全面,支持windows和unix操作系统,支持的语言比较广泛,java、python、r、matlab、ruby等语言均可支持,本次实验使用的是matlab来调用libsvm,版本为3.21版。libsvm本身可以支持的核函数有线性核、多项式核、rbf核和sigmoid核,经实验,本实验最终使用高斯核(rbf核)。

支持向量回归(supportvectorregression,svr),是根据svm的基本思想改良成的一种回归算法其主要思想是寻找一个超平面对样本进行映射,与其它的回归算法不同的是其映射与真实值之间的差的绝对值如果小于一个具体的范围,就不计入损失。图2表示了一个基本的线性的svr回归器。

首先假设有m个样本{i∈{1,2,...,m}|(xi,yi)},其中xi是一个n维的向量,代表了第i个样本的特征向量,其n个值对应了第i个样本的n个特征,yi是第i个样本的对应的回归输出,即连续的值。在图2中,h是用来回归映射的超平面,可以使用如下的线性方程表示:

wtx+b=0(12)

其中,w=(w1;w2;...;wn)是h的法向量,其维度也为n维,b是位移项,代表了h与原点的距离。对于第i个样本(xi,yi),将其特征向量输入到回归器里后,即可得到模型的输出f(xi)=wtxi+b,这样就可以进行回归。

而h1和h2是两个与h平行且距离相等的两个超平面,其中h1:wtx+b=-1和h2:wtx+b=ε。根据svr的基本思想,可以容忍真实输出值y和模型输出值f(x)之间的误差不超过ε,只有误差超过ε才计算误差损失。如图4,即在h1和h2中间的部分就算预测正确。同时也需要让h1和h2距离最近,所以根据式(2)和上述条件,得到式(13):

其中,c是正则项的系数,lε是我们需要计算的损失,称为不敏感损失:

同svm,引入松弛变量ξi和两个松弛变量代表了两侧的松弛程度可以不同,再引入核函数κ(xi,xj),其定义同svm。最终可以变成:

其求解方法完全和svm一样,通过引入拉普拉斯乘子,然后利用对偶问题

实现svr的方法也有许多,这里为了方便仍然使用matlab来调用libsvm工具箱,只要调整其中的参数就可以改变算法类型,在本次实验使用的版本中,有e-svr和v-svr两种类型,经实验后选择比较常用的e-svr。

将上一小节处理得到的特征数据以及医生给出的updrs进行一一对应,行成数据集。将以上数据集使用k-means进行聚类,对于每一个聚类的类别,将数据集按3:1的比例分为训练集和测试集。针对每一个聚类行程的类别,训练集使用svm模型进行分类模型训练,使用svr进行回归模型训练,使用网格搜索方法进行优化模型,将训练好的,每一类别的模型参数进行保存。

五进行预测

对于聚类的每个分类,载入以上训练过程中得到的分类及回归模型。输入需要判断和预测的数据,计算距离判断所属类别,使用该类别对应的模型对数据进行分类计算,得到分类结果。将分类结果再进行处理,对于预测是未患有帕金森病的测试者,将updrs值置为0,对于预测患有帕金森病的测试者,再使用svr进行回归预测,得到计算出的updrs值,通过updrs的值进行患病者的严重程度推测,结束进程。

六反馈结果

将预测的结果通过接口,反馈回前端,展示给用户。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1