一种数据特征选择和预测方法及装置与流程

文档序号:12467082阅读:177来源:国知局
本发明涉及机器学习和模式识别领域,主要是机器学习中的特征选择方法,并结合梯度迭代决策树和支持向量机模型,进行数据特征选择和预测的方法及装置。
背景技术
:随着计算机技术的发展,目前计算机已经可以处理各种不同的数据,帮助人们更加高效的完成任务。尤其在人工智能领域,机器学习作为一项核心技术已经被广泛应用到了很多具体问题中去。支持向量机(SVM)是机器学习经典的模型之一,它很高效同时还能获得很好的预测结果。梯度迭代决策树(GBDT)是当前业界近年非常热门的机器学习方法,它源自经典的决策树(DecisionTree)模型。近年来,移动医疗是近年来全球的一个市场热点,跨界融合是其基本特征,大数据的分析、预测和应用更是前景无限。技术实现要素:基于上述问题,本发明开发建立有关用户血压数据序列的筛选模型,力争为个性化用户提供最优化策略和直观量化引导,协助实现最大效果的干预措施,为用户提供个性化的特征筛选服务。根据本发明一方面,提供了一种数据特征选择和预测方法,该方法包括步骤:步骤S1、采集用户信息和对应的血压观测数据,形成数据集,并从所述数据集中剔除异常值点;步骤S2、从所述数据集中的用户信息中提取用户特征;步骤S3、从所述数据集中的血压观测数据提取血压特征;步骤S4、将所提取的用户特征和血压特征进行归一化处理,处理结果作为训练样本形成训练集,利用所述训练集中的训练样本输入至支持向量机模型和/或梯度迭代决策树模型之中,训练得到预测模型。其中,所述用户特征包括用户的年龄、性别和身体质量指数;所述血压特征包括高压、低压、心率和服药情况。其中,步骤S3中所述血压特征的提取包括:提取不同预测任务下的血压特征;所述不同预测任务包括长周期、短周期、粗粒度和细粒度预测任务。其中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第一预定采集时间内的血压特征的平均值,输入至支持向量机模型中,所述支持向量机模型采用回归模型,所述回归模型的核函数采用线性核;将所述支持向量机模型的输出与所述训练集中同一用户在第二预定采集时间内的血压特征进行比较,进而更新所述支持向量机模型的参数;所述第二预定采集时间晚于所述第一预定采集时间;迭代执行上述步骤,直至所述支持向量机模型的参数收敛,得到第一预测模型。其中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第三预定采集时间内的血压特征的平均值,输入至梯度迭代决策树模型中,所述梯度迭代决策树模型的损失函数采用为最小平方差函数;将所述梯度迭代决策树模型的输出与所述训练集中同一用户在第四预定采集时间内的血压特征进行比较,进而更新所述梯度迭代决策树模型的参数;所述第四预定采集时间晚于所述第三预定采集时间;迭代执行上述步骤,直至所述梯度迭代决策树的参数收敛,得到第二预测模型。其中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第一预定采集时间内的血压特征的平均值,输入至支持向量机模型和中梯度迭代决策树模型,所述支持向量机模型采用回归模型,所述回归模型的核函数采用线性核;所述梯度迭代决策树模型的损失函数采用为最小平方差函数;将所述支持向量机模型和所述梯度迭代决策树模型的输出分别与所述训练集中同一用户在第二预定采集时间内的血压特征进行比较,进而分别更新所述支持向量机模型和所述梯度迭代决策树模型的参数;所述第二预定采集时间晚于所述第一预定采集时间;迭代执行上述步骤,直至所述支持向量机模型和所述梯度迭代决策树模型的参数收敛,得到第一预测模型。其中,步骤S1还包括从所述数据集中剔除异常值点,包括:去除用户的年龄不在预定年龄范围内的用户信息和对应的血压数据;去除用户的身高不在预定身高范围内的用户信息和对应的血压数据;去除用户的体重不在预定体重范围内的用户信息和对应的血压数据;去除用户的血压值不在预定血压范围内的用户信息和对应的血压数据;去除用户的心率不在预定心率范围内的用户信息和对应的血压数据。根据本发明第二方面,提供了一种数据特征选择和预测装置,包括:采集模块,用于采集用户信息和对应的血压观测数据,形成数据集,并从所述数据集中剔除异常值点;用户特征提取模块,用于从所述数据集中的用户信息中提取用户特征;血压特征提取模块,用于从所述数据集中的血压观测数据提取血压特征;训练模块,用于将所提取的用户特征和血压特征进行归一化处理,处理结果作为训练样本形成训练集,利用所述训练集中的训练样本输入至支持向量机模型和/或梯度迭代决策树模型之中,训练得到预测模型。其中,血压特征提取模块包括:血压特征提取子模块,用于提取不同预测任务下的血压特征;所述不同预测任务包括长周期、短周期、粗粒度和细粒度预测任务。本发明利用医学知识指导数据的清洗和特征工程选取工作,有效提升模型的准确性。附图说明图1是本发明提出的数据特征选择和预测方法的流程图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,以下结合具体实施例,并参照附图,对本发明进一步详细说明。如图1所示,本发明提出了一种数据特征选择和预测方法,该方法包括步骤:步骤S1、采集用户信息和对应的血压观测数据,形成数据集,并从所述数据集中剔除异常值点;步骤S2、从所述数据集中的用户信息中提取用户特征;步骤S3、从所述数据集中的血压观测数据提取血压特征;步骤S4、将所提取的用户特征和血压特征进行归一化处理,处理结果作为训练样本形成训练集,利用所述训练集中的训练样本输入至支持向量机模型和/或梯度迭代决策树模型之中,训练得到预测模型。在一实施例中,所述用户特征包括用户的年龄、性别和身体质量指数;所述血压特征包括高压、低压、心率。步骤S3中所述血压特征的提取包括:提取不同预测任务下的血压特征;所述不同预测任务包括长周期、短周期、粗粒度和细粒度预测任务。在一实施例中,本发明可以同时训练SVM模型和GBDT模型,并同时利用上述两个模型对用户血压进行预测;在另一实施例中,还可以单独训练SVM模型或GBDT模型,并利用训练好的SVM模型或GBDT模型进行预测。在一本实施例中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第一预定采集时间内的血压特征的平均值,输入至支持向量机模型中,所述支持向量机模型采用回归模型,所述回归模型的核函数采用线性核;将所述支持向量机模型的输出与所述训练集中同一用户在第二预定采集时间内的血压特征进行比较,进而更新所述支持向量机模型的参数;所述第二预定采集时间晚于所述第一预定采集时间;迭代执行上述步骤,直至所述支持向量机模型的参数收敛,得到第一预测模型。在另一实施例中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第三预定采集时间内的血压特征的平均值,输入至梯度迭代决策树模型中,所述梯度迭代决策树模型的损失函数采用为最小平方差函数;将所述梯度迭代决策树模型的输出与所述训练集中同一用户在第四预定采集时间内的血压特征进行比较,进而更新所述梯度迭代决策树模型的参数;所述第四预定采集时间晚于所述第三预定采集时间;迭代执行上述步骤,直至所述梯度迭代决策树的参数收敛,得到第二预测模型。在其他实施例中,步骤S4中所述利用所述训练集中的训练样本输入至支持向量机和/或梯度迭代决策树模型之中,训练得到预测模型,包括:从所述训练集中提取同一用户的用户特征、单月的血压特征的平均值、半月的血压特征的平均值和第一预定采集时间内的血压特征的平均值,输入至支持向量机模型和中梯度迭代决策树模型,所述支持向量机模型采用回归模型,所述回归模型的核函数采用线性核;所述梯度迭代决策树模型的损失函数采用为最小平方差函数;将所述支持向量机模型和所述梯度迭代决策树模型的输出分别与所述训练集中同一用户在第二预定采集时间内的血压特征进行比较,进而分别更新所述支持向量机模型和所述梯度迭代决策树模型的参数;所述第二预定采集时间晚于所述第一预定采集时间;迭代执行上述步骤,直至所述支持向量机模型和所述梯度迭代决策树模型的参数收敛,得到第一预测模型。在一实施例中,步骤S1还包括从所述数据集中剔除异常值点,包括:去除用户的年龄不在预定年龄范围内的用户信息和对应的血压数据;去除用户的身高不在预定身高范围内的用户信息和对应的血压数据;去除用户的体重不在预定体重范围内的用户信息和对应的血压数据;去除用户的血压值不在预定血压范围内的用户信息和对应的血压数据;去除用户的心率不在预定心率范围内的用户信息和对应的血压数据。下面通过具体的实施例详细介绍本发明的技术方案。在一实施例中,本发明提出了一种数据特征选择和预测方法,其包括:步骤101,收集用户个人信息数据和血压观测数据,并将所收集的用户个人信息和血压观测数据导入数据库之中,所述用户个人数据包括用户年龄、性别、身高、体重、身体质量指数(BMI)、测量时间等;所述血压观测数据包括高压、低压、心率、服药情况、测量月份信息等。清洗数据,根据相关医学知识对用户个人信息数据和血压观测数据,删去异常值点(即异常的用户个人信息数据和血压观测数据),将数据集变为可以用于机器学习训练模型的目标数据。异常值点的具体筛选规则:去除用户个人信息数据中年龄不在预定年龄范围内的数据,例如年龄大于110岁和小于10岁的用户;去除身高不在预定身高范围内的数据,例如身高小于120厘米或者大于200厘米的数据;去除体重不再预定体重范围内的数据,例如体重小于20kg或者大于130kg的数据;去除血压不在预定血压范围内的数据,例如低压小于和大于该用户历史血压测量平均值40的观测数据,去除高压小于和大于该用户历史血压测量平均值40的观测数据;去除心率为0的观测数据。步骤102,从数据库中选取用户的特征,包括年龄、性别和身体质量指数。根据权威医学资料可知:用户年龄越大,血压越高;男性血压普遍略高于女性;身体质量指数(BMI)越高(近似代表越肥胖),血压越高。提取特征包含:用户个人信息数据中的年龄、性别(用0表示女性,1表示男性),并将身高、体重转化为BMI(体重/身高的平方)。步骤S3,从数据库中选取血压特征,包括不同预测任务下的血压特征,不同预测任务包括长周期、短周期、粗粒度和细粒度等不同精度的预测任务,在不同预测任务下,所选取的血压特征包括高压、低压、心率、服药情况。血压观测数据包括用户高压、低压、心率、服药情况、测量月份信息。在此步骤中,进一步引入了不同的预测任务。例如长周期和短周期预测,分别表示将用户连续6个月或3个月的血压数据作为特征输入,若有当月无测量则用空缺值代替。粗粒度预测时,将2个月或3个月用户血压测量平均值作为特征输入,细粒度预测时,将一个月或半个用户血压测量平均值作为特征输入。步骤103,对特征数据(包括测量的高压、低压、心率以及用户的BMI、年龄、性别等,即从训练数据中获取的预定时间内的特征数据)及目标数据(即从训练数据中得到的晚于所述预定时间的一段时间的血压值作为目标数据)做归一化处理,将数据的范围控制在0和1之间。归一化处理公式如下:其中最小值指的是这个特征在数据库中存在的最小的一个值,最大值即是其中最大的一个值。对于月份信息的处理采用one-hot编码,将整型数据展开为0和1的编码,通过1在序列中的位置来表达编码的值,使得12个月份信息都转化成同等的地位。步骤104,使用支持向量机(SVM)和梯度迭代决策树(GBDT)对处理后的特征数据(包括用户特征和血压测量特征)和目标数据进行回归学习,构建用户未来血压的预测模型。将以上用户特征、血压测量特征,以及每条血压测量特征对应的月份信息作为训练数据做归一化处理,放入支持向量机(SVM)和梯度迭代决策树(GBDT)模型之中,直到模型的参数收敛,此时得到的参数使得模型相对于训练数据达到最优化。在SVM模型中通过实验证明,当选取训练模型为回归模型,核函数选为线性核(linearkernel)时效果最佳。在梯度迭代决策树模型中,损失函数选取为最小平方差函数(leastsquareerror),用predict函数将预测标签输出。为了验证本发明的实施效果,接下来以在真实数据上的实验结果作进一步的说明。具体步骤如下:步骤201,由于单次血压测量值无法准确描述该用户的血压情况,因为对于一个用户采集一个月的血压平均值整理到数据集中。步骤202,首先将所述数据集中的原始数据转化为适合训练模型的特征,之后选取出连续六个月有观测数据的用户,这样可以保证用户测量的连续性,提升预测的准确度。例如选用连续七个月份(N-5月到N+1月)有观测记录的用户的数据做训练(例如采用8月份和9月份同时出现的用户做训练),最后一个月N+1月作为训练目标;采用连续七个月份(N-4月到N+2月)有观测记录的用户做测试(例如用9月和10月同时出现的用户做测试),最后一个月N+2月作为测试目标。步骤S3,SVM实验训练集目标为N+1月的平均低压,将模型输出的预测结果与N+1月的数据进行对比来更新模型参数。我们接下来提取出1)和2)两种策略作为短周期和长周期的典型。具体的训练集特征提取规则如下:1)N-2-N月:提取用户的身高和体重转化成的BMI(体重/身高的平方)、性别、年龄;N-2,N-1,N月单独的平均高压、低压、心率、服药情况;N-2,N-1,N月每半个月平均高压、低压、心率、服药情况;N-2,N-1,N三月平均高压、低压、心率、服药情况。2)N-5-N月:提取用户的身高和体重转化成的BMI(体重/身高的平方)、性别、年龄;用户在N-5-N月单月的平均高压、低压、心率、服药情况;N-5-N每半个月平均高压、低压、心率,服药情况;每三个月的平均高压,低压,心率,服药情况。步骤S4,SVM实验测试集提取规则如下:1)N-1-N+1月:对应训练集N-2-N月,提取用户的身高和体重转化成的BMI(体重/身高的平方)、性别、年龄;N-1,N,N+1月单独的平均高压、低压、心率,N-1,N,N+1月每半个月平均高压、低压、心率;N-1,N,N+1三月平均高压、低压、心率。2)N-4-N+1月:对应训练集N-5-N月,将用户的身高和体重转化为BMI(体重/身高的平方)、性别、年龄;用户在N-4-N+1月单月的平均高压、低压、心率、服药;N-4-N+1每半个月平均高压、低压、心率,服药;每三个月的平均高压,低压,心率,服药。步骤S5,将训练集输入到lib-SVM模型之中,做训练直至模型收敛,优化模型参数。将特征输入到训练好的模型中即可输出预测结果,并与测试集目标比较,得出低压回归的平均误差。SVM模型构建如下:首先,定义超平面(w,b)关于训练数据集的函数间隔为:其中,x是特征数据,y为目标数据;因此最大间隔分类器目标函数可以定义为:进一步改写为:其中,n为样本个数,yi表示第i个样本的目标数据,xi表示第i个样本的特征数据;之后可以通过拉格朗日算子法将目标函数与限制条件合并,改写成一般的凸优化问题以便于计算。根据这个目标函数可以得到一个最优回归超平面,通过此超平面可以进行预测。需要在lib-SVM进行相应的设置,通过输入指令来选择合适的支持向量机核函数以及训练设置。-s表示SVM的设置类型,选择4(nu-SVR,regression)为回归模型,-t代表核函数的选择,选择0(linearkernel)为核函数,通过实验证明此设置效果最佳。lib-SVM可以将训练所得的模型参数存储下来,利用svm_predict函数就可以对测试集进行预测并评价模型性能。步骤S6,GBDT实验采用与SVM实验相同的特征提取规则,重复S3,S4,S5步骤。将训练集特征及目标输入到GBDT模型之中。采用开源机器学习工具scikit-learn里封装的GBDT工具包来实现GBDT回归,数据只需要用Python从文件中导入并存储成list格式。数据和标签分别对应一个list,相同位置相对应。GBDT模型构建:GBDT的核心为决策树(DecisionTree),决策树的总体流程是这样的:树的每一个节点都会得到一个预测值,这个预测值等于属于这个节点的所有特征的平均值。衡量最好的标准是最小化均方差。通过最小化均方差能够找到最靠谱的分枝依据。梯度迭代(GradientBoosting)的核心思想是通过迭代多棵树来共同决策。因此,可以得到GBDT的训练方法,即每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得到真实值的累加量。通过这种方法,GBDT可以综合多个决策树的预测并得到更加精确的预测结果。调用scikit-learn中的GradientBoostingRegressot函数来训练模型,决策树的深度为3层,学习速率设为0.005。通过实验证明此设置效果最佳。训练完成后模型参数会被储存起来,通过调用predict函数就可以利用学出来的模型参数来对测试集进行预测,并评价模型性能。步骤S7,将血压以10为区间划分得出分级误差,具体分级策略如表1所示。得到SVM与GBDT的实验结果分别如表2、表3所示,实验目标月份为10月。评价指标说明:平均误差:所有数据预测值与真实值差值的平均值。分级误差:所有数据得到分级结果与真实分级结果差值的平均值。相对准确率:平均预测值/平均真实值表1血压低压值分类级别低压值分类级别<80180-90290-1003100-1104>1105表2支持向量机(SVM)实验结果SVM预测用户在2015年10月份的平均低压实验表3梯度迭代决策树(GBDT)实验结果GBDT预测用户在2015年10月份的平均低压实验步骤S8,将表2、3中所得实验结果与拟合数值基础(Baseline)做比较。Baseline为直接用用户9月的低压数据拟合10月的数值,如表4所示。表4拟合数值基础(Baseline)月份平均误差平均误差率分级误差样本数10月5.276920.06380.436913012通过表中的实验结果可以得出,与拟合数值基础baseline的比较下,在低压平均误差方面有明显的提升,SVM模型短周期和长周期预测分别提升了10.37%和11.14%;GBDT模型短周期和长周期的预测分别提升了10.75%和11.45%。在分级误差方面,与baseline相比,SVM模型短周期和长周期预测分别提升了2.85%和8.43%;GBDT模型短周期和长周期的预测分别提升了8.43%和10.48%。以上所述的具体实施例,对本发明的目的、技术方案和效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1