本发明涉及人体成分预测技术领域,尤其涉及的是一种基于集成学习算法的人体成分预测方法及系统。
背景技术:
人体成分测量是当今医疗健康检测领域不可缺少的重要手段。通过对人体的正常成分范围监控,能对科学锻炼、合理健身和减肥等做出有效指导。
对人体成分的测定方法主要有:水下称重法、双能x射线吸收法、近红外线测试法、ct断层扫描法、空气替代法、核磁共振法、同位素稀释法、超声波法、脂溶性气体测定法、代谢产物测量法、生物电阻抗分析法等。其中,生物电阻抗分析法(bia)因其无创、无辐射、设备比较简单、成本低廉、可连续使用、不要求特殊使用环境等鲜明特点而受到广泛关注。
目前的生物电阻抗分析法多采用多元线性回归的方法,假设测试者身高、体重、年龄以及人体电阻抗等与人体成分之间的关系是线性的,利用大量人体数据进行建模。该模型虽然简单,但是由于各人体参数之间存在严重的多重共线性(比如身高、体重、年龄间存在千丝万缕的联系),导致预测精度较差。此外,由于采集人体成分样本数据的代价较高,使得通常用于普通多元线性回归的样本数过少,从而导致生成模型精度不高,甚至在样本数少于模型特征数时无法计算。
技术实现要素:
本发明所要解决的技术问题是提供一种基于集成学习算法的人体成分预测方法及系统,解决因模型各自变量之间存在严重的共线性、以及样本数据相对较少而导致的模型预测准确度差甚至无法计算的问题。
为解决上述问题,本发明提出一种基于集成学习算法的人体成分预测方法,包括以下步骤:
s1:采集若干人体参数,选取与人体成分相关系数较高的人体参数及其中一种或几种的运算项作为自变量,将待预测的人体成分作为因变量;
s2:根据所述自变量及因变量确定的原始样本数据,通过集成学习算法进行建模,包括步骤s21-s24:
s21:根据所述自变量及因变量确定的原始样本数据,采用偏最小二乘法进行建模,得到第一模型参数;
s22:根据所述自变量及因变量确定的原始样本数据,采用逐步回归算法进行建模,得到第二模型参数;
s23:根据所述自变量及因变量确定的原始样本数据,采用支持向量机回归算法进行建模,得到第三模型参数;
s24:根据三种不同算法的估计标准误差大小及得到的模型参数,用加权平均的方法生成人体成分预测模型:
s3:根据所述人体成分预测模型确定的自变量采集测试对象的人体参数作为测试样本数据,通过所述人体成分预测模型对测试对象的成分进行预测。
根据本发明的一个实施例,所述步骤s21包括:
s211:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量,k为其一个样本的特征数,因变量表示为y=[y1;y2;...;yn]n×1;
s212:先对原始样本数据进行标准化处理,
s213:计算
s214:计算
s215:计算
s216:将残差em作为新的
s217:检查残差fm的精度,若精度达到要求,或者主成分数量m已经达到初始x的秩,执行下一步;否则,赋值m=m+1,循环步骤s213~s216,对残差矩阵进行新一轮的成分提取和回归分析;
s218:得到标准化数据回归方程
s219:计算样本因变量与回归值之间的估计标准误差为
根据本发明的一个实施例,所述步骤s22包括:
s221:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量,k为其一个样本的特征数,因变量表示为y=[y1;y2;...;yn]n×1;
s222:先对原始样本数据进行标准化处理,
s223:针对k个自变量x*,分别拟合它与因变量的简单线性回归模型,得到共k个简单线性回归模型;
s224:对各个自变量进行偏f检验,将偏f检验的p值小于α的自变量判定为具有统计学意义,将偏f检验p值最小且有统计学意义的自变量引入模型,如果所有模型均无统计学意义,则运算过程终止;
s225:再分别拟合引入模型外的其他自变量的线性回归模型,同样将偏f检验p值最小且有统计学意义的自变量引入模型,执行下一步,如果没有具有统计学意义的自变量,则运算过程终止,跳入步骤s228;
s226:在每次将新的自变量引入模型后,判断之前引入模型的自变量是否仍有统计学意义,若没有统计学意义,则将其剔除出模型;
s227:判断剩余的模型外的自变量是否有统计学意义,如果有则返回至步骤s225,直至模型外的自变量均无统计学意义,而模型内的自变量均有统计学意义,执行下一步;
s228:保留被剔除的自变量的拟合系数,并设置其为0,此时标准化数据回归方程
s229:计算样本因变量与回归值之间的估计标准误差为
根据本发明的一个实施例,所述步骤s23包括:
s231:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量,k为其一个样本的特征数,因变量表示为y=[y1;y2;...;yn]n×1;
s232:先对原始样本数据进行标准化处理,
s233:用线性回归函数f(x*)=x*w+b拟合数据
其中,常数c>0、ε>0,§i、
s234:引入拉格朗日乘子求解对偶问题,得:
其中,ai、
计算样本因变量与回归值之间的估计标准误差为
根据本发明的一个实施例,所述步骤s3包括:
s31:设测试对象的样本数为h,自变量表示为x′=[x′1,x′2,...,x′k]h×k,x′i为列向量,k为其特征数;
s32:先对测试样本数据进行标准化处理,
s33:标准化预测变量
根据本发明的一个实施例,所述人体参数包括:身高、体重、年龄、性别、多个电流频率下的全身及节段阻抗和相角中的一种或几种;所述自变量为人体参数本身、或者对单个人体参数做数学运算的单运算项、或对至少两个人体参数做数学运算的组合运算项。
根据本发明的一个实施例,所述待预测的人体成分包括全身成分和/或人体节段成分。
根据本发明的一个实施例,集成学习算法中,偏最小二乘法、逐步回归算法、支持向量机回归算法的估计标准误差相互独立。
根据本发明的一个实施例,在测试对象的样本数少于特征数的情况下,计算人体成分预测模型的模型参数时,逐步回归算法的建模模型的估计标准误差不考虑在内。
根据本发明的一个实施例,所述人体成分预测模型为单频模型或多频模型。
本发明还提供一种基于集成学习算法的人体成分预测系统,包括:
变量模块:采集若干人体参数,选取与人体成分相关系数较高的人体参数及其中一种或几种的运算项作为自变量,将待预测的人体成分作为因变量;
建模模块:根据所述自变量及因变量确定的原始样本数据,通过集成学习算法进行建模,包括以下子模块:
第一算子子模块:根据所述自变量及因变量确定的原始样本数据,采用偏最小二乘法进行建模,得到第一模型参数;
第二算子子模块:根据所述自变量及因变量确定的原始样本数据,采用逐步回归算法进行建模,得到第二模型参数;
第三算子子模块:根据所述自变量及因变量确定的原始样本数据,采用支持向量机回归算法进行建模,得到第三模型参数;
模型构建子模块:根据三种不同算法的估计标准误差大小及得到的模型参数,用加权平均的方法生成人体成分预测模型:
预测模块:根据所述人体成分预测模型确定的自变量采集测试对象的人体参数作为测试样本数据,通过所述人体成分预测模型对测试对象的成分进行预测。
采用上述技术方案后,本发明相比现有技术具有以下有益效果:
传统的多元线性回归方法无法解决模型自变量间多重共线性的问题,而本发明中结合偏最小二乘回归、逐步回归、支持向量机回归算法从三种完全不同的角度对系统中的数据和信息进行筛选,提取对因变量解释最强的综合变量,辨识系统中的信息与噪声,从而更好地克服变量多重共线性在系统建模时的不良影响,提高预测精度;
假设集成学习中各子算法误差相互独立且均值为零,此时随着子算法个数的增加,总误差的期望逐渐减小,最终趋于零,因此,与单个预测算法相比,集成学习算法增加了预测精度和稳定性;
当样本数据较少,特别是样本数少于模型特征数时,传统的多元线性回归方法已经无法计算,而本发明的方法也能得到不错的预测结果。
附图说明
图1为本发明一实施例的基于集成学习算法的人体成分预测方法的流程示意图;
图2为本发明一实施例的各人体电阻抗参数测量方式说明示意图;
图3为本发明一实施例对人体全身总水分tbw的预测值与真实值对比图;
图4为本发明另一实施例对人体全身总水分tbw的预测值与真实值对比图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
参看图1,在一个实施例中,基于集成学习算法的人体成分预测方法,包括以下步骤:
s1:采集若干人体参数,选取与人体成分相关系数较高的人体参数及其中一种或几种的运算项作为自变量,将待预测的人体成分作为因变量;
s2:根据所述自变量及因变量确定的原始样本数据,通过集成学习算法进行建模,包括步骤s21-s24:
s21:根据所述自变量及因变量确定的原始样本数据,采用偏最小二乘法进行建模,得到第一模型参数;
s22:根据所述自变量及因变量确定的原始样本数据,采用逐步回归算法进行建模,得到第二模型参数;
s23:根据所述自变量及因变量确定的原始样本数据,采用支持向量机回归算法进行建模,得到第三模型参数;
s24:根据三种不同算法的估计标准误差大小及得到的模型参数,用加权平均的方法生成人体成分预测模型:
s3:根据所述人体成分预测模型确定的自变量采集测试对象的人体参数作为测试样本数据,通过所述人体成分预测模型对测试对象的成分进行预测。
下面对本发明的基于集成学习算法的人体成分预测方法进行更具体的描述。
在步骤s1中,采集若干人体参数,选取与人体成分相关系数较高的人体参数及其中一种或几种的运算项作为自变量,将待预测的人体成分作为因变量。选定自变量和因变量后,可以根据自变量和因变量的项目来采集相应的建模用的样本数据,还可采集建模后的相应测试用的样本数据。
优选的,所述人体参数包括:身高、体重、年龄、性别、多个电流频率下的全身及节段阻抗和相角中的一种或几种;所述自变量为人体参数本身、或者对单个人体参数做数学运算的单运算项、或对至少两个人体参数做数学运算的组合运算项。对单个人体参数做数学运算的单运算项例如是但不限于,以身高为例,身高的幂次方、开根号、线性相乘等运算。组合运算项例如是但不限于,以身高和体重为例,身高和体重的乘除等等运算。
单个人体参数本身对于人体成分的考量可能会不准确,一些单个或两个以上的人体参数进行一定运算后会提高与人体成分的相关系数,进行一定的运算组合后可以将不同参数关联地来考量其与人体成分之间的相关性,引入更多于人体参数本身的方面来对人体成分进行预测,预测考量的因素更全面,预测更精准。
优选的,所述待预测的人体成分包括全身成分和或人体节段成分。全身成分可以包括:总水分、细胞内外水分、脂肪、非脂肪、骨骼肌、无机盐、身体细胞量、肌肉等等。人体节段成分可以包括:上肢、下肢、躯干等身体各段的总水分、细胞内外水分、脂肪、非脂肪以及腹部脂肪等等。当然也不限于此,只要保证所预测的人体成分与所选定的人体参数之间存在较高的相关系数。
选定自变量和因变量之后,可以进行建模,进入步骤s2中。
s2:根据所述自变量及因变量确定的原始样本数据,通过集成学习算法进行建模,包括步骤s21-s24。
s21:根据所述自变量及因变量确定的原始样本数据,采用偏最小二乘法进行建模,得到第一模型参数;
s22:根据所述自变量及因变量确定的原始样本数据,采用逐步回归算法进行建模,得到第二模型参数;
s23:根据所述自变量及因变量确定的原始样本数据,采用支持向量机回归算法进行建模,得到第三模型参数;
s24:根据三种不同算法的估计标准误差大小及得到的模型参数,用加权平均的方法生成人体成分预测模型:
偏最小二乘法、逐步回归算法、支持向量机回归算法作为所述集成学习算法的三个子算法,分别根据所确定的自变量和因变量进行建模,得到三个模型,根据这三个模型建立一个混合模型,得到最终的人体成分预测模型。
优选的,所述步骤s21包括:
s211:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量(列向量的每一个向量均为一样本,此处的i=1~k),k为其一个样本的特征数,此处的特征便是所确定的人体参数、和/或人体参数运算得到的单运算项或/或多运算项,因变量表示为y=[y1;y2;...;yn]n×1;
s212:先对原始样本数据进行标准化处理,
s213:计算
s214:计算
s215:计算
s216:将残差em作为新的
s217:检查残差fm的精度,若精度达到要求(可以与预设精度值进行比较),或者主成分数量m已经达到初始x的秩,执行下一步;否则,赋值m=m+1,循环步骤s213~s216,对残差矩阵进行新一轮的成分提取和回归分析;
s218:得到标准化数据回归方程
s219:计算样本因变量与回归值之间的估计标准误差为
优选的,所述步骤s22包括:
s221:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量,k为其一个样本的特征数,因变量表示为y=[y1;y2;...;yn]n×1;
s222:先对原始样本数据进行标准化处理,
s223:针对k个自变量x*,分别拟合它与因变量的简单线性回归模型,得到共k个简单线性回归模型;
s224:对各个自变量进行偏f检验,将偏f检验的p值(结果可信水平的一个递减指标)小于α的自变量判定为具有统计学意义,将偏f检验p值最小且有统计学意义的自变量引入模型;
例如,对
其中,偏回归平方和
可令显著性水平α=0.05,当p值小于α时具有统计学意义,考察其中有统计学意义的简单线性回归模型,对下述的统计学意义判断均适用。将其中p值最小的模型所对应的自变量
s225:再分别拟合引入模型外的其他自变量的线性回归模型,同样将偏f检验p值最小且有统计学意义的自变量引入模型,执行下一步,如果没有具有统计学意义的自变量,则运算过程终止,跳入步骤s228;
例如,在已经引入模型的
s226:在每次将新的自变量引入模型后,判断之前引入模型的自变量是否仍有统计学意义,若没有统计学意义,则将其剔除出模型;
例如,考量之前引入模型的自变量
s227:判断剩余的模型外的自变量是否有统计学意义,如果有则返回至步骤s225,直至模型外的自变量均无统计学意义,而模型内的自变量均有统计学意义,执行下一步;
如果之前引入模型的自变量
s228:保留被剔除的自变量的拟合系数,并设置其为0,此时标准化数据回归方程
s229:计算样本因变量与回归值之间的估计标准误差为
优选的,所述步骤s23包括:
s231:设原始样本数据的样本数为n,自变量表示为x=[x1,x2,...,xk]n×k,xi为列向量,k为其一个样本的特征数,因变量表示为y=[y1;y2;...;yn]n×1;
s232:先对原始样本数据进行标准化处理,
s233:用线性回归函数f(x*)=x*w+b拟合数据
其中,常数c>0、ε>0,§i、
s234:引入拉格朗日乘子求解对偶问题,得:
其中,ai、
计算样本因变量与回归值之间的估计标准误差为
步骤s24中,根据三种不同子算法的估计标准误差大小,用加权平均的方法生成人体成分预测模型,将权重系数与估计标准误差大小成反比来加权计算。估计标准误差反映了实际值与其估计值之间的平均离差程度,可以说明回归模型拟合的优劣状况;根据估计标准误差进行加权平均,不仅减小了单一学习算法泛化性能不佳的风险,而且扩大了假设空间,提高了得到更优结果的可能性。
在模型建立之后,便可根据模型进行人体成分的预测,进入步骤s3。
步骤s3中,根据所述人体成分预测模型确定的自变量采集测试对象的人体参数作为测试样本数据,通过所述人体成分预测模型对测试对象的成分进行预测。
优选的,所述步骤s3包括:
s31:设测试对象的样本数为h,自变量表示为x′=[x′1,x′2,...,x′k]h×k,x′i为列向量,k为其特征数;
s32:先对测试样本数据进行标准化处理,
s33:标准化预测变量
优选的,集成学习算法中,偏最小二乘法、逐步回归算法、支持向量机回归算法的估计标准误差相互独立。假设集成学习中各子算法误差相互独立且均值为零,此时随着子算法个数的增加,总误差的期望逐渐减小,最终趋于零。因此,与单个预测算法相比,集成学习算法增加了预测精度和稳定性。
优选的,在测试对象的样本数少于特征数的情况下,计算人体成分预测模型的模型参数时,逐步回归算法的建模模型的估计标准误差不考虑在内(只考虑偏最小二乘法、支持向量机回归法结合的集成学习算法)。由于样本数少于特征数,传统的多元回归算法已经无法计算,而偏最小二乘法、支持向量机回归法结合的集成学习算法,针对小样本数据建立人体成分预测模型有较好的效果。
可选的,所述人体成分预测模型为单频模型或多频模型。
下面通过两个更具体的实施例来对本发明的基于集成学习算法的人体成分预测方法进行更详细的阐述。
实施例1:利用集成学习算法建立人体成分模型
步骤一:采集若干人体参数,包括身高(h)、体重(w)、年龄(a)、性别(s)、多个电流频率下(1khz、5khz、50khz、250khz、500khz、1mhz)的全身及节段阻抗(zbody、zra、zla、zt、zrl、zll)和相角(pbody、pra、pla、pt、prl、pll)。
下标body、ra、la、t、rl、ll分别表示全身、右上肢、左上肢、躯干、右下肢、左下肢,对图2中各人体电阻抗参数测量方式进行说明:
测zla、pla时,在e3和e7端加恒定电流,测e2和e4。
测zra、pra时,在e1和e5端加恒定电流,测e2和e4。
测zt、pt时,在e3和e7端加恒定电流,测e2和e6。
(或在e1和e5端加恒定电流,测e4和e8。)
测zll、pll时,在e3和e7端加恒定电流,测e6和e8。
测zrl、prl时,在e1和e5端加恒定电流,测e6和e8。
测zbody、pbody时,在e1和e5端加恒定电流,测e2和e6。
(或在e3和e7端加恒定电流,测e4和e8。)
步骤二:选取不同频率下与人体成分相关系数较高的参数及其运算项作为自变量特征向量,包括h2/z、z*w/h2、w、h、h2、xc、1/z、bmi、p等,其中容抗xc=z*sin(p),bmi=w(kg)/h2(m2)。分别将人体成分作为因变量,包括全身及节段总水分(tbw)、全身及节段细胞外水分(ecw)、全身及节段脂肪(bfm)及非脂肪含量(ffm)等。当预测人体全身或某节段成分时,自变量z(相角)和p(相角)及因变量tbw、ecw、ffm等实例化为相应部位的数值。本例中我们收集522组成年男性样本数据,随机抽取450组数据进行训练,其余72组数据用来检验预测效果。以建立全身总水分含量预测模型为例,此时z=zbody,p=pbody,tbw为全身总水分。
步骤三:450组训练样本中人体参数及其运算项对应自变量x,全身总水分tbw对应因变量y。首先对数据进行标准化处理,并分别在不同频率1khz、5khz、50khz、250khz、500khz、1mhz下,取相应的自变量x*,用集成学习算法对人体样本数据进行回归建模。用估计标准误差see等来评价回归效果。
步骤四:利用不同频率下建立的人体成分模型,分别对72组检验样本进行预测,发现在50khz频率下预测效果最好。此时,全身总水分tbw的预测结果如图3所示,与实际值相关系数达0.97。因此,我们将50khz频率下的模型作为人体全身总水分的预测模型。
建立人体节段,如上肢、躯干、下肢等部位体成分预测模型的方法与建立全身体成分模型的方法基本相同。只需将自变量z和p,及因变量tbw、ecw、bfm、ffm等实例化为相应部位的数值建模即可。需要注意的是,对于人体不同节段的相同或不同成分,最终选取的最佳模型可能不在同一频率。要使全身及节段所有成分达到最佳预测效果,我们最终建立的可能是多频模型。
实施例2:在样本数少于特征数的情况下建立人体成分模型
预测方法跟实例1基本相同,不同之处在于,我们从原450组训练样本中随机抽取7组数据(特征数为9)作为训练数据,然后对72组原检验数据进行预测。此时,由于样本数少于特征数,传统的多元回归算法已经无法计算。因此,将偏最小二乘法、支持向量机回归作为集成学习算法的子算法,来进行预测。如图4所示,我们给出50khz频率下,全身总水分tbw的预测结果,其与实际值相关系数达0.88。可以看出,偏最小二乘法、支持向量机回归结合的集成学习算法,针对小样本数据建立人体成分预测模型有特殊的优势。
本发明还提供一种基于集成学习算法的人体成分预测系统,包括:
变量模块:采集若干人体参数,选取与人体成分相关系数较高的人体参数及其中一种或几种的运算项作为自变量,将待预测的人体成分作为因变量;
建模模块:根据所述自变量及因变量确定的原始样本数据,通过集成学习算法进行建模,包括以下子模块:
第一算子子模块:根据所述自变量及因变量确定的原始样本数据,采用偏最小二乘法进行建模,得到第一模型参数;
第二算子子模块:根据所述自变量及因变量确定的原始样本数据,采用逐步回归算法进行建模,得到第二模型参数;
第三算子子模块:根据所述自变量及因变量确定的原始样本数据,采用支持向量机回归算法进行建模,得到第三模型参数;
模型构建子模块:根据三种不同算法的估计标准误差大小及得到的模型参数,用加权平均的方法生成人体成分预测模型:
预测模块:根据所述人体成分预测模型确定的自变量采集测试对象的人体参数作为测试样本数据,通过所述人体成分预测模型对测试对象的成分进行预测。
关于本发明的基于集成学习算法的人体成分预测系统的具体内容可以参看前述实施例中基于集成学习算法的人体成分预测方法部分的描述内容,在此不再赘述。
本发明虽然以较佳实施例公开如上,但其并不是用来限定权利要求,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。