2012-01-10 4 views
2

Я делаю проект по системе прогнозирования сердечных заболеваний. здесь я использую "Кливленд болезнь сердца Dataset", который содержит 13 атрибутовГенетический алгоритм для выбора функции

  1. Пол
  2. Chest Pain Тип
  3. Голодание сахара в крови
  4. Restecg - отдыхает электрографическими результатов
  5. Exang - осуществление индуцированной стенокардии
  6. Наклон - наклон пикового тренинга Сегмент ST
  7. CA - количество основных сосудов, окрашенных флюороскопией
  8. Тал
  9. Трест артериального давления
  10. Сыворотка Холестерин
  11. Thalach - максимальная частота сердечных сокращений достигается
  12. Oldpeak - ST депрессии, индуцированный упражнения относительно отдыха
  13. Возраст

Я нашел где они применили генетический алгоритм для этой цели и выбрали следующие атрибуты:

  1. Тип - Боли в груди Тип
  2. RBP - Resting артериального давления
  3. Eia - Осуществление индуцированной стенокардии
  4. Oldpk - Старый Пик
  5. Vsl - Количество сосудов цветные
  6. Thal -Максимальной частота сердечных сокращения достигнуто)

Однако они не упомянули о критериях, которые они использовали для поиска наиболее приспособленных атрибутов (функция пригодности). Поскольку я новичок в этой концепции, я не знаю, как выполнить задачу. Может кто-нибудь мне помочь?

+0

Я хотел бы написать авторам и спросить их, какую функцию фитнеса они использовали. Существует множество способов комбинировать функции для фитнеса в GA, а используемая функция фитнеса может повлиять на функции, которые вы в конечном итоге выбираете. –

+0

[Этот вопрос может быть полезен для вас] (http://stackoverflow.com/questions/7992862/genetic-algorithms-fitness-function-for-feature-selection-algorithm) –

+0

@timothy Большое спасибо. Надеюсь, что сообщение будет полезно. – darsha

ответ

1

Определение населения и его представление

кандидатов (населения ГА) являются различные подмножества атрибутов. Каждое подмножество может быть хорошим набором атрибутов, связанных с болезнью сердца или нет.

Итак, я понимаю, что у вас есть данные с различными мерами для атрибутов и индикатором измеряемого лица, имеющего болезнь сердца или нет.

Вы можете легко представить подмножество атрибутов, используя бит для каждого атрибута. Таким образом, 10000000000000 будет подмножеством только с первым атрибутом. 11000 ... только два первых ... и так далее.

Найти функцию фитнеса

Как сказать, если кандидат (подмножество атрибутов) является хорошим или плохим индикатором заболевания пода. Я бы сказал, что это хорошо, если он напрямую коррелирует с болезнью. Таким образом, для всех пациентов с высоким показателем по этим показателям у них есть заболевание, а у всех пациентов с низкими цифрами болезнь не имеет.

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

Подмножество с большим количеством индикаторов, чем необходимо, является плохим. Таким образом, вы должны набирать хуже, если атрибут из подмножества НЕ коррелирован.

TODO: find a way to introduce this. 

Два направления

Кроме того, у меня будет учитывать два направления. Например, атрибут может быть связан с болезнью сердца, если он имеет небольшое число. Поэтому я буду использовать 26 бит. Два бита для каждого индикатора. Один использует значение атрибута, а другой - отрицательный.

Поиск: фитнес-мера

С статистическими данными, которые вы могли бы сказать, если произвольный набор атрибутов хорош для обнаружения болезни пода или нет.

Каждый пациент будет первым, вторым и так далее в соответствии с каждым атрибутом. К примеру, артериальное давление. Первый с меньшим давлением будет первым, тот, у кого больше давления, будет последним.

Так что, если артериальное давление сильно связано, те с высокими значениями будут иметь заболевание, в то время как у пациентов с низким давлением не будет.

Таким образом, хорошим набором для набора атрибутов является то, сколько правильных диагнозов вы могли бы сделать, основываясь на данных, которые у вас есть. Если у вас есть атрибуты А и В, их оценка в качестве хороших показателей будет увеличиваться с увеличением числа пациентов с высоким числом и заболеванием очага (связанным) и будет уменьшаться с числом пациентов с низким числом и сердечным заболеванием (не связанным или противоречивым).

Для единственного атрибута

можно заказать пациентов на основе этого атрибута. Тогда я могу видеть, у кого из них болезнь. Если у пациентов с более высоким числом (справа от заказа) есть заболевание, то это связано с ним. В противном случае нет.

Если я получаю:

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

+0

Отлично, я рад! – helios

+0

К сожалению, для булевых атрибутов, таких как секс, вы можете использовать 0/1. Для нескалярных значений, таких как тип боли в грудной клетке, ну, может быть, вы можете сделать разные логические атрибуты, такие как ¿has-pain-1? ¿Имеет-боль-2? и так далее. – helios

0

Поскольку вы являетесь исследователем, вы действительно должны быть в состоянии сказать, чего вы пытаетесь достичь. «Фитнес» - это то, насколько близко решение соответствует тому, чего вы пытаетесь достичь. например «Фитнес» в этой причине может быть функцией, которая наиболее точно соответствует прогнозу.

+0

спасибо, что так много за ответ. это то, что я пытаюсь выяснить. У меня нет идеи о том, как развивать фитнес-функцию. если вы дадите мне идею, которая будет полезна для меня, чтобы продолжить. – darsha

+0

Чтобы соответствовать функции фитнеса, вы должны быть в состоянии описать, что вы ищете. Только ты можешь это сделать. –

0

Чтобы узнать, какую функцию фитнеса используют другие авторы, вы всегда можете отправить их по электронной почте.

Существует множество способов сочетания функций для фитнеса в GA, а функция пригодности, которую вы используете, повлияет на функции, которые вы в конечном итоге выберете. Поэтому, если вы хотите добиться того же сочетания функций, что и другая группа авторов, я просто спрошу их. Большинство ученых очень полезны для других, заинтересованных в их работе.

По моему опыту, иногда вы можете не получить ответ - так что не стесняйтесь спрашивать снова, если вам нужно. В зависимости от правил в их учреждении, может даже иметь код, который вы можете использовать, но не узнаете, пока не спросите.

Однако, если вы просто хотите каким-то образом уменьшить количество функций в наборе, может быть полезным ответ на this question.

Смежные вопросы