正在加载图片...
·354· 智能系统学报 第13卷 q值较大时,意味着此症状为潜在的主要症状,则提 通过对Skyline查询进行改进并将其结果作为推荐 高该症状的权重;numsympiom表示疾病的总症状数, 结果的候选集合,而将传统的协同过滤推荐算法加 对num,进行归一化,以防止部分疾病系数偏大: 以改进作为局部范围内的一种评分方式,有效地应 typedisease表示症状对应的疾病类型数量,对数函数 对地域约束严格带来的挑战。 则是为了提高潜在主要症状的权重。 4.1kd-tree索引结构 3.2.3症状联想机制 地理位置信息由经度和纬度组成,是一个天然 算法在用户输入症状信息和得到诊断结果之后 的二维数据,而kd-tree常被用来对多维数据结构进 均引入症状联想机制,以此来加强与用户的交互, 行划分,在kd-tree上对指定的点搜索其一定范围内 提升辅助诊断的准确性。 的邻居节点效率很高四。 1)用户输入时的症状联想 因此,针对医院的经纬度信息,将所有的医院 基于分词与症状索引表,统计症状两两之间共 以kd-tree的结构组织起来,每个节点保存医院的经 同出现的次数,并将与该症状共同出现次数前5的 纬度以及医院在数据库中对应的编号。在后面的推 症状存入症状索引表作为联想症状,在用户输入完 荐算法中,查询指定点一定范围内的医院时就可以 一个症状之后,将联想症状提供给用户,用户可以 在该kd-tree上进行,返回医院的idhospital集合,而 从中选择与自身相关的症状,以此来帮助用户提升 根据idhospital返回医院的其他信息的时间可忽略 输入症状的完整性。 不计。 2)诊断之后的症状联想 4.2改进的Skyline查询算法 首先计算疾病中每个症状在该疾病中的权值, 医疗推荐可以抽象为一个多目标优化问题,可 然后选择权重前3的症状作为联想症状保存,在得 以通过将Skyline查询引入到推荐算法中解决。 到诊断结果之后将联想症状提供给用户,若出现联 Skyline查询的目的是找到不被其他点支配的 想症状说明患该种疾病的可能性较高,从而帮助用 点集合作为Skyline集合,本文中支配的定义如下。 户进一步确定所患疾病,症状在疾病中的权重计算 支配:一个医院节点主要考虑距离和评分两方 方法与上述相似度计算公式类似,只不过N为疾病 面,因此可以抽象地表示为h=(s,d),其中s表示该 总数。 医院治疗某种疾病的评分,d表示该医院与该用户 辅助诊断部分使用的数据只是疾病与其相关症 的距离;若h1支配h2,则(h1.s≥h2s且h1.d≤h2.d)并 状信息,相比于通用检索系统其数据量很小:而且 且(h.s>h2.s或h1.dkh2.d为真。 查询是由症状确定疾病这一种固定模式,其输入与 该算法是针对传统Skyline查询中结果集合小 输出模式不变,因此引入症状联想机制是合理的, 于推荐结果集的最小阈值而提出的,此时推荐结果 而且能有效加强系统和用户的交互,提升推荐结果 候选集合由两部分组成:传统的Skyline集合和优 的满意度。 先级队列中的元素集合。其中Skyline集合中元素 3.3诊断结果的优化 的优先度高于优先队列中的元素,只有当Skyline 用户往往会对自己可能患有的疾病进行猜想, 集合中的元素少于推荐的最小阈值时才从优先级队 这是非常有价值的信息。系统将考虑来自用户的反 列选取元素进行补充。 馈信息,对诊断结果进行优化。具体实现过程如下: 在算法中,维护一个优先级队列Q,长度为什1, 1)将反馈疾病的症状加入查询项; 以便在队列中的元素达到推荐结果的最小阈值时还 2)增加查询项中已有的症状的权重。 能进行一次插入操作,队列Q的优先级定义为:若 具体而言,反馈信息与原症状信息的权重比 h,支配h2,则h,的优先级大于h2;否则,h2的优先 α的计算过程为 级大于h1。Q中从头到尾元素的优先级依次升高, a=0.5(x+1 也就是说,Q的头元素Q.front的优先级最低。对于 (2) \max 在BNL中淘汰的节点P,进行如下操作: 式中:x为某反馈项在诊断结果中的位置,max为反 if(O.size(<k) 馈项在诊断结果中位置的最大值。 Q=Q+p,*若Q还没有满,则将p插入Q*/ 4基于地域信息的推荐技术 else if(Q.sizc0=k)/*若优先级队列Q满了*/ if(Q.front(0支配p) 本节介绍了基于地域信息的推荐技术,该算法 passp,/*若Q的头节点支配p,淘汰p*/q 值较大时,意味着此症状为潜在的主要症状,则提 高该症状的权重;numsymptom 表示疾病的总症状数, 对 numi 进行归一化,以防止部分疾病系数偏大; typedisease 表示症状对应的疾病类型数量,对数函数 则是为了提高潜在主要症状的权重。 3.2.3 症状联想机制 算法在用户输入症状信息和得到诊断结果之后 均引入症状联想机制,以此来加强与用户的交互, 提升辅助诊断的准确性。 1) 用户输入时的症状联想 基于分词与症状索引表,统计症状两两之间共 同出现的次数,并将与该症状共同出现次数前 5 的 症状存入症状索引表作为联想症状,在用户输入完 一个症状之后,将联想症状提供给用户,用户可以 从中选择与自身相关的症状,以此来帮助用户提升 输入症状的完整性。 2) 诊断之后的症状联想 首先计算疾病中每个症状在该疾病中的权值, 然后选择权重前 3 的症状作为联想症状保存,在得 到诊断结果之后将联想症状提供给用户,若出现联 想症状说明患该种疾病的可能性较高,从而帮助用 户进一步确定所患疾病,症状在疾病中的权重计算 方法与上述相似度计算公式类似,只不过 N 为疾病 总数。 辅助诊断部分使用的数据只是疾病与其相关症 状信息,相比于通用检索系统其数据量很小;而且 查询是由症状确定疾病这一种固定模式,其输入与 输出模式不变,因此引入症状联想机制是合理的, 而且能有效加强系统和用户的交互,提升推荐结果 的满意度。 3.3 诊断结果的优化 用户往往会对自己可能患有的疾病进行猜想, 这是非常有价值的信息。系统将考虑来自用户的反 馈信息,对诊断结果进行优化。具体实现过程如下: 1) 将反馈疾病的症状加入查询项; 2) 增加查询项中已有的症状的权重。 具体而言,反馈信息与原症状信息的权重比 α 的计算过程为 α = 0.5 ( x max +1 ) (2) 式中:x 为某反馈项在诊断结果中的位置,max 为反 馈项在诊断结果中位置的最大值。 4 基于地域信息的推荐技术 本节介绍了基于地域信息的推荐技术,该算法 通过对 Skyline 查询进行改进并将其结果作为推荐 结果的候选集合,而将传统的协同过滤推荐算法加 以改进作为局部范围内的一种评分方式,有效地应 对地域约束严格带来的挑战。 4.1 kd-tree 索引结构 地理位置信息由经度和纬度组成,是一个天然 的二维数据,而 kd-tree 常被用来对多维数据结构进 行划分,在 kd-tree 上对指定的点搜索其一定范围内 的邻居节点效率很高[12]。 因此,针对医院的经纬度信息,将所有的医院 以 kd-tree 的结构组织起来,每个节点保存医院的经 纬度以及医院在数据库中对应的编号。在后面的推 荐算法中,查询指定点一定范围内的医院时就可以 在该 kd-tree 上进行,返回医院的 idhospital 集合,而 根据 idhospital 返回医院的其他信息的时间可忽略 不计。 4.2 改进的 Skyline 查询算法 医疗推荐可以抽象为一个多目标优化问题,可 以通过将 Skyline 查询引入到推荐算法中解决。 Skyline 查询的目的是找到不被其他点支配的 点集合作为 Skyline 集合,本文中支配的定义如下。 h = ⟨s,d⟩ 支配:一个医院节点主要考虑距离和评分两方 面,因此可以抽象地表示为 ,其中 s 表示该 医院治疗某种疾病的评分,d 表示该医院与该用户 的距离;若 h1 支配 h2,则 (h1 .s≥h2 .s 且 h1 .d≤h2 .d) 并 且 (h1 .s>h2 .s 或 h1 .d<h2 .d) 为真。 该算法是针对传统 Skyline 查询中结果集合小 于推荐结果集的最小阈值而提出的,此时推荐结果 候选集合由两部分组成:传统的 Skyline 集合和优 先级队列中的元素集合。其中 Skyline 集合中元素 的优先度高于优先队列中的元素,只有当 Skyline 集合中的元素少于推荐的最小阈值时才从优先级队 列选取元素进行补充。 在算法中,维护一个优先级队列 Q,长度为 k+1, 以便在队列中的元素达到推荐结果的最小阈值时还 能进行一次插入操作,队列 Q 的优先级定义为:若 h1 支配 h2,则 h1 的优先级大于 h2;否则,h2 的优先 级大于 h1。Q 中从头到尾元素的优先级依次升高, 也就是说,Q 的头元素 Q.front 的优先级最低。对于 在 BNL 中淘汰的节点 p,进行如下操作: if (Q.size()<k) Q=Q+p; /*若 Q 还没有满,则将 p 插入 Q*/ else if (Q.size()=k)/*若优先级队列 Q 满了*/ if (Q.front() 支配 p) pass p; /*若 Q 的头节点支配 p,淘汰 p*/ ·354· 智 能 系 统 学 报 第 13 卷
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有