Генетический алгоритм выбора признаков - PullRequest
2 голосов
/ 10 января 2012

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

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

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

  1. Тип - Тип боли в груди
  2. Rbp - кровяное давление в состоянии покоя
  3. Eia - стенокардия, вызванная физической нагрузкой
  4. Олдпк - Старая вершина
  5. Vsl - Количество сосудов, окрашенных
  6. Thal -Максимальная частота сердечных сокращений достигнута)

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

Ответы [ 3 ]

1 голос
/ 10 января 2012

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

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

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

Вы можете легко представить подмножество атрибутов, используя бит для каждого атрибута. Таким образом, 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 голосов
/ 10 января 2012

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

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

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

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

0 голосов
/ 10 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...