выбор между алгоритмами

Я уверен, что существует партия программного обеспечения, Тестирующего Инженеров, Инженеров Проверки Алгоритма на Stackoverflow. Кто-то мог сказать мне, как можно было бы продолжить двигаться в следующем сценарии.

Скажите, что у нас есть Маммограмма и 5 различных алгоритмов, которые берут эту маммограмму в качестве входа и определяют, существует ли Рак у пациента. Если 3 из 5 алгоритмов говорят, что существует рак у пациента, и 2 говорят, что у пациента нет никакого рака. Какой алгоритм должен я верить. Как я должен продолжить двигаться, тестируя эти алгоритмы. Там какое-либо статистическое понятие используется в таких сценариях?

Меня задали этот вопрос в интервью относительно положения Инженера Проверки Алгоритма. Я полагаю, что они пытались видеть, как я буду думать, учитывая такой сценарий. Как я должен был ответить на это?

Спасибо за внимание

- Sashi

7
задан Sashi Kiran Challa 12 July 2010 в 16:03
поделиться

15 ответов

В принципе, если вы знаете, что результаты алгоритмов условно независимы (т.е. независимы при истинной, но неизвестной метке класса), то использование Naive Bayes является оптимальным мета-классификатором.

В противном случае на этот вопрос невозможно ответить, не зная структуры условной зависимости между классификаторами. Например, если классификаторы A, B, C и D являются слабыми, идентичными классификаторами (т.е. они всегда дают одинаковые результаты) и имеют точность 0,51, а классификатор E условно независим от классификаторов A, B, C и D и имеет точность 0,99, то я думаю, совершенно очевидно, что голосование - плохая идея.

1
ответ дан 6 December 2019 в 05:42
поделиться

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

Имея стандарт, вы можете начать получать оценку того, какой алгоритм (алгоритмы) является более "точным" (т.е. чаще всего согласуется с мнением эксперта). Информация о показателях позволяет вам получить более подробную информацию о времени и обстоятельствах, при которых каждый из них оказывается более или менее точным, так что вы можете начать формировать суждение о времени/обстоятельствах, при которых стоит доверять одному из них, а не другому. Таким образом, вы можете (по крайней мере, надеетесь) объединить результаты пяти существующих алгоритмов в один общий результат, который (при осторожности и, возможно, некоторой удаче) будет более точным, чем любой из них по отдельности.

1
ответ дан 6 December 2019 в 05:42
поделиться

Выбор лучшего классификатора для работы или комбинирование различных классификаторов - это целая отдельная область. Эта общая статья о классификации является хорошим началом, чтобы узнать о выборе лучшего классификатора для работы. А эта статья об ансамблях классификаторов - хорошее место для начала изучения объединения классификаторов.

Чтобы дать основу для ответа на ваш (довольно широкий) вопрос: Лучший классификатор для работы зависит от нескольких факторов:

  • Требуемое качество классификации (в вашем случае оно должно быть высоким)
  • Допустимая сложность классификации (т.е. можете ли вы вычислять в течение нескольких дней, чтобы получить ответ на вопрос, есть ли у вас несколько миллисекунд) (в вашем случае время не является ограничением, я бы предположил)
  • Стоимость, связанная с неправильной классификацией. Это очень важный фактор в вашем случае. Если вы говорите людям, что у них рак, когда у них его нет, вы вызываете большой стресс, но (можно надеяться) дальнейшее тестирование (которое стоит денег) в конечном итоге покажет, что они здоровы. С другой стороны, если вы пропустите рак у пациентки, она может умереть. Это означает, что "лучший" классификатор (тот, который делает меньше всего ошибок) может оказаться не самым лучшим для вашей проблемы.

По поводу последнего пункта: Скажем, 1 из 1000 женщин болеет раком, у меня есть несколько классификаторов:

  1. Пропускает 20% случаев рака и говорит, что у здоровой женщины рак в 2% случаев. Этот классификатор сделает около 200 ошибок в популяции из 10000 человек.
  2. Просто скажите: "У этого человека нет рака" во всех случаях. Всего 10 ошибок на 10000 случаев!
  3. Просто скажите: "У этого человека рак", и он сделает 9990 ошибок в 10000 случаев.

Второй классификатор делает наименьшее количество ошибок, но после нескольких месяцев его использования люди, которых можно было бы спасти, начинают умирать. Третий классификатор отправляет всех на следующий тест (который будет иметь ту же проблему, что и этот) или, возможно, делает бесполезную операцию по изменению жизни 9990 здоровым людям. Во втором тесте приходится идти на компромисс. Два человека могут сильно заболеть или даже умереть, 198 человек переживают болезненные и стрессовые процедуры и операции впустую. Очевидно, что в вашем случае все классификаторы были похожи на классификатор 1 с небольшими различиями в процентах. В таких случаях приходится искать компромисс между пропуском случаев рака и проведением остальных процедур (включая стоимость!) для здоровых людей. Отправной точкой для исследования этого компромисса является receiver-operater-characteristic

4
ответ дан 6 December 2019 в 05:42
поделиться

Исходя из предоставленной информации, вы не сможете ответить. Вам придется взять все 5 алгоритмов и протестировать их на пациентах с диагнозом рака, а также на пациентах, которые, как известно, не болеют раком. Это позволило бы определить, какой алгоритм является наиболее точным.

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

0
ответ дан 6 December 2019 в 05:42
поделиться

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

Проверить такие вещи, как поисковый алгоритм Google, не имеющий «правильного» ответа, было бы сложнее.

1
ответ дан 6 December 2019 в 05:42
поделиться

Это не тривиальная проблема, которая сильно зависит от того, на какие риски вы готовы пойти.

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

2
ответ дан 6 December 2019 в 05:42
поделиться

Наденьте шляпу собеседника, это психологическая оценка. На такие вопросы, как эта оценка алгоритма, есть более одного правильного ответа. Я узнал об этих вопросах от своей жены, которая проработала рекрутером более 5 лет. Интервьюер хочет увидеть, как вы отреагируете. Лучше всего просто делать предположения и приводить к логическому завершению. Не говорите «Я не знаю», не спорите и не задавайте кучу вопросов. Вы будете казаться трудным и спорным (как и многие программисты).

Теперь, когда вы знаете, что это не вопрос программирования, подумайте о том, чтобы задать его на сайте careeroverflow.com. Мне нравятся эти вопросы, потому что они показывают способность адаптироваться и становиться нежесткими.

Почему люк круглый? <- Версия Microsoft

3
ответ дан 6 December 2019 в 05:42
поделиться

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

вы можете обнаружить, что 3 алгоритма постоянно пропускают определенный тип рака, который два других умеренно хорошо подбирают. вы можете обнаружить аналогичные отношения, которые возникают, например, когда алгоритмы 2, 3 и 5 говорят, что рака нет, алгоритм 1 говорит, что есть, а алгоритм 4 не дает окончательных результатов, что обычно есть доброкачественные пятна определенной формы и интенсивности это следует проанализировать, но, вероятно, это не рак.

4
ответ дан 6 December 2019 в 05:42
поделиться

Я думаю, что если бы у вас была некоторая статистическая информация о предыдущих характеристиках каждого алгоритма (сколько раз он был правильным / неправильным в ряде статистических экспериментов), то вы могли бы рассчитать вероятность того, что вы правы для каждого алгоритма. Затем вы могли бы каким-то образом объединить эти вероятности, чтобы получить вероятность того, что этот человек болен раком. Просто предположение ...

1
ответ дан 6 December 2019 в 05:42
поделиться

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

Скажем, A, B и C на самом деле используют один и тот же подалгоритм для предварительной обработки данных, а последний дает неоптимальные результаты на каком-то конкретном изображении, и поэтому предварительно обработанное изображение заставляет последующие фазы давать неправильные результаты - это не будет иметь значения, у вас есть три алгоритма, говорящие одно и то же.

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

7
ответ дан 6 December 2019 в 05:42
поделиться

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

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

Одна вещь, которую мы упускаем из виду, как программисты, - это то, что люди могут решать проблемы, которые мы не можем предсказать; представьте, что врач замечает на маммограмме что-то такое, что алгоритмы не предназначены для обнаружения?

1
ответ дан 6 December 2019 в 05:42
поделиться

Это хорошая возможность для реализации того, что иногда называют «экспертной системой». Вы берете большую выборку своих данных (в вашем случае, изображения маммограммы и результаты различных алгоритмов) и пропускаете ее через ряд реальных экспертов по плоти и крови в этой области (здесь, онкологов или лаборантов). Запишите ответы для каждого изображения вместе с выходными данными алгоритмов. В конце концов, у вас должно быть достаточно данных для сопоставления вывода алгоритма с выводом эксперта. Чтобы убедиться, что ваше отображение работает, прогоните несколько тестовых изображений через вашу систему (образцы, которые были не частью исходного набора данных) и попросите свою группу экспертов перепроверить результаты. В идеале эксперты должны соглашаться с выводом вашей системы очень часто.

Не зная ничего о самих алгоритмах, трудно принять решение, основываясь на трех результатах «да» и 2 «нет» (особенно для такой важной задачи, как скрининг на рак). Ваша цель (по крайней мере, на первых порах) - как можно больше приблизиться к тем же результатам, что и у подготовленного эксперта, и такие системы, как эта, иногда можно сделать более точными, если принимать решения на основе знаний и опыта экспертов в данной области, а не на математических расчетах. только алгоритмы.

2
ответ дан 6 December 2019 в 05:42
поделиться

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

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

Что-то вроде того.

2
ответ дан 6 December 2019 в 05:42
поделиться

При прочих равных можно сказать, что у пациента 60% шанс заболеть раком. Чтобы дать лучший ответ, вам нужно знать больше информации о том, как работает алгоритм. Некоторые моменты для рассмотрения:

  • Возможно, некоторые алгоритмы новее других или оказались менее надежными. Было бы хорошо знать точность каждого алгоритма, используя исторические данные маммограммы, помеченные как «Раковые» и «Не раковые».
  • Рак у каждого человека немного отличается - может быть, есть характеристики, которые лучше определить с помощью определенного алгоритма? Требуется ли эксперт в предметной области для определения правильного диагноза на основе выводов алгоритма и данных маммограммы (изображения?)?
  • Как уже упоминалось, в некоторых алгоритмах используются те же методы, что и в других алгоритмах, поэтому оба алгоритма вероятны. иметь такую ​​же предвзятость.
2
ответ дан 6 December 2019 в 05:42
поделиться

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

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

2
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: