2012-01-10 108 views
2

我正在做心脏疾病预测系统的项目。我在这里使用 “克利夫兰心脏病数据集”,其中包含13个属性遗传算法的特征选择

  1. 性别
  2. 胸痛类型
  3. 空腹血糖
  4. Restecg - 休息电图结果
  5. Exang - 运动诱发心绞痛
  6. 坡度 - 峰值运动ST段的斜率
  7. CA - 荧光染色的主要血管的数量
  8. 塔尔
  9. 特热什季血压
  10. 血清胆固醇
  11. Thalach - 最大的心脏速率来实现
  12. Oldpeak - 诱发相对运动休息
  13. 年龄

ST段压低我发现了一个他们为此应用遗传算法并选择以下属性的论文

  1. 类型 - 胸痛类型
  2. Rbp里 - 静息血压
  3. EIA - 运动诱发心绞痛
  4. Oldpk - 旧山顶
  5. VSL - 有色船号
  6. 塔尔 - 最大心脏率取得)

然而,他们没有提到他们用来找到最适合的属性(适应度函数)的标准。由于我是这个概念的新手,我不知道如何执行任务。谁能帮我?

+0

我会通过电子邮件发送作者,并询问他们使用了什么健身功能。有很多方法可以将GA中的健身功能组合起来,并且您使用的健身功能可能会影响您最终选择的功能。 – 2012-01-10 06:33:54

+0

[此问题可能对您有用](http://stackoverflow.com/questions/7992862/genetic-algorithms-fitness-function-for-feature-selection-algorithm) – 2012-01-10 06:36:26

+0

@timothy非常感谢。希望这篇文章会有所帮助。 – darsha 2012-01-10 06:40:00

回答

1

定义人口及其表示

候选人(GA的群)是属性的不同子集。每个子集都可以是一组与火炉病相关的一组属性。

所以我知道你有不同的度量值的属性和被测人员患有炉膛病的指标。

您可以使用每个属性的位轻松表示属性的子集。所以10000000000000将是只有第一个属性的子集。 11000 ...只有两个第一...等等。

找到适应度函数

如何说,如果候选人(属性的子集)是心脏疾病好坏的指标。如果它与疾病直接相关,我会说它是好的。因此,对于那些指标数目较高的患者,他们患有疾病,而对于所有数量较少的患者则没有该疾病。

TODO: find a correlation measure... :) (I'll edit the answer) 

具有比必要条件更多的指标的子集是不好的。因此,如果来自子集的属性不相关,则必须得分更差。

TODO: find a way to introduce this. 

两个方向

而且,我会考虑两个方向。举例来说,如果一个属性的数量很低,那么这个属性可能与炉底疾病有关。所以我会用26位。每个指标有两位。一个使用属性值,另一个使用负值。

找到健身措施

有了统计数据,你可以告诉我们,如果一个任意的属性集有利于发现心脏疾病或没有。

根据每个属性,每个患者将是第一个,第二个等等。例如血压。压力较小的将是第一个,压力较大的将是最后一个。因此,如果血压高度相关,那些高值的人将会患病,而低压者则不会。

因此,一组属性的好成绩是根据您拥有的数据可以做多少正确的诊断。如果你有属性A和B,他们的评分作为好的指标会随着高数量的病人和与之相关的炉床病人的数量而增加,并且会随着低数量和炉床病人(不相关或矛盾)的数量而减少。

对于一个唯一属性

我可以订购基于该属性的患者。然后我可以看到他们哪一个有疾病。如果那些数字较高的人(在排序的右边)有疾病,那么与其相关。否则不是。

如果我获得:

ND ND ND ND ND D D D D D D 

ND = no disease 
D = disease 

这是非常非常相关。

所以对于我来说,得分将是ND/D值的排序顺序,在排序患者对这个属性的价值后。

对于一个属性集

当然,你必须给一组属性的得分的(比方说,名单的前三个属性)。因此,我首先应该由他们中的每一个订单的患者:

Ordered by -> Attr1, Attr2, Attr3 

Patient1  1st 3rd 10th 
Patient2  2nd 11th 2nd 
Patient3  6th 1st 3rd 

再总结的位置为每一个病人:

Ordered by -> Attr1, Attr2, Attr3 

Patient1  1st 3rd 10th -> 1+3+10 = 14 
Patient2  2nd 11th 2nd -> 2 + 11 + 2 = 15 
Patient3  6th 1st 3rd -> 6+1+3 = 10 

然后由付款令患者。

P3, P1, P2 

那么,如果他们的疾病状态高度有序的(那些有疾病在右边),则得分高。

例如:

ND ND D -> only patient 2 has disease, highly correlated 
D D ND -> patients 3 and 1 has disease, doesn't seem correlated (in fact, it seems contradictory) 

所以用于定义评分方法的最后一部分是找到一种方法,说,如果位序列是有序与否:

ND ND ND ND D D D D D D -> high score 
D ND D ND D ND D ND D ND -> low score 

希望它能帮助! :)

+0

非常感谢。这真的很有帮助 – darsha 2012-01-10 13:26:14

+0

太好了,我很高兴! – helios 2012-01-10 13:53:02

+0

哎呀,还有,你可以使用0/1等布尔属性。对于像胸部疼痛类型这样的非标量值来说,也许你可以制作不同的布尔属性,比如¿has-pain-1? ¿有疼痛-2?等等。 – helios 2012-01-10 13:58:55

0

既然你是研究人员,你应该真的能够说出你想要达到的目标。 “健身”是一种解决方案与您试图达到的匹配程度。例如 “健身”在这个原因可能是一个功能,最接近预测。

+0

非常感谢哟的回复。这正是我想弄明白的。我不知道如何发展健身功能。如果你给我一个帮助我继续进行的想法 – darsha 2012-01-10 09:06:47

+0

要依赖一个健身功能,你需要能够描述你正在寻找什么。只有你可以做到这一点。 – 2012-01-10 09:07:42

0

要了解其他作者使用的健身功能,您可以随时向他们发送电子邮件。

结合GA中健身功能的方法有很多,您使用的健身功能会影响您最终选择的功能。所以如果你想和另一组作者一样获得相同的功能组合,我只需要问他们。大多数科学家对他们工作感兴趣的其他人非常有帮助。

根据我的经验,有时你可能不会得到答复 - 所以不要再为自己的要求而烦恼。根据他们机构的规定,他们甚至可以使用代码,但直到问你的时候才会知道。

但是,如果您只是想通过某种方式来减少一组中的功能数量,那么this question上的答案可能会有所帮助。