2013-02-21 2 views
2

У меня есть приложение PHP/MySQL, в котором хранятся симптомы и соответствующий препарат. Какой алгоритм машинного обучения я должен использовать для прогнозирования препарата для любых симптомов. Кроме того, каков будет формат учебного набора?Какой алгоритм машинного обучения подходит для этого сценария

+0

Вы могли бы поставить лучшие ответы на http://stats.stackexchange.com/ –

+0

Я взял на себя смелость удалить тег MySQL, потому что это не имеет никакого отношения к базам данных. –

+0

Вы спрашиваете о лучшем алгоритме или о том, какое программное обеспечение использовать? –

ответ

2

В ML нет «лучшего решения» для этого сценария, почти всегда этот метод/данные удовлетворяют мои потребности? Итак, попробуйте с помощью простой методики ML (например, дерева решений), если она не будет работать, попробуйте что-то более сложное. Если он не будет работать, попытайтесь изменить данные, ...

1

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

В общем:

  • Хорошие данные помогают почти всегда: то есть предобработки ваших данных для извлечения функции («резюме»), что по вашему мнению, было бы полезно для человека тоже.
  • Избегайте бесполезных функций: предпочитайте несколько хороших функций по многим сложным, которые могут немного помочь.
  • Помните, что вряд ли будет волшебный черный ящик: вам нужно будет настроить свой алгоритм. Большинство алгоритмов ML имеют несколько так называемых «гиперпараметров», которые влияют на работу алгоритма; например скорость обучения; сглаживания; размер окна и т. д.
  • Поскольку это не черный ящик, найдите введение машинного обучения и получите хотя бы базовое представление о том, как и почему эти методы работают. Легко получить полную бессмыслицу из алгоритма ML, поэтому важно иметь хотя бы некоторое представление о том, как эти вещи работают, чтобы вы могли правильно настроить свою проблему.
  • Попробуйте что-нибудь действительно простой, как ближайший сосед (вам понадобится метрика расстояния). Этого вполне достаточно.

Хотя я еще не использовал его в последнее время, я считаю, что SVM по-прежнему будет лучшим выбором, если NN недостаточно хорош. Это не хип-новинка, но они обычно довольно хороши без слишком большой настройки. Но почти всегда лучше использовать хорошо настроенный слабый алгоритм (т. Е. Один с документами, которые вы понимаете, и реализация, где вы можете попробовать множество вариантов гиперпарама), чем плохо настроенный сильный алгоритм. Конечно, если вы действительно не знаете, что делаете.

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

0

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

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

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

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

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

+0

Можете ли вы указать ссылку на точность байесовских сетей? – kamaci

+0

Я говорю из личных знаний, у меня действительно нет ссылки, кроме ai-class.org (класс Стэнфорда об AI, а также класс Machine Learning на ml-class.org). –

0

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

Нет общего «лучшего алгоритма» для ничего.

В частности, для данных, не связанных с данными, когда у других нет данных.

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

Кроме того, опыт и знания необходимы, чтобы получить хорошие результаты.

+1

Можем ли мы сказать «нет бесплатного обеда» для таких случаев? – kamaci

2

хорошо ваши данные будут в конечном итоге выглядит так:

row_id symptom_x symptom_y degree_of_symptom_z ... best_drug 

1  false  true  0.8      drug_x 
2  true  null  0.0      drug_q 

И вы будете использовать статистический классификатор, чтобы узнать лучший препарат, основанный на симптомах. Затем вы будете кормить его новыми симптомами, и это будет указывать на лучший препарат.

Вероятно, будет много доступных симптомов, поэтому алго должен быть способен обрабатывать множество столбцов.

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

Проверьте RapidMiner.

+0

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

+0

Логистическая регрессия предназначена для классификации, а не для регрессии, несмотря на название. –

0

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

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

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

Обратите внимание, что у вашего рецепта может потребоваться больше одного препарата или нет.

Одна проблема, которую вы должны учитывать, заключается в том, что если вы принимаете какие-то лекарства, вы не можете принимать других, и у пациента могут быть некоторые аллергии. По этой причине я бы посоветовал вам взглянуть на http://en.wikipedia.org/wiki/Association_rule_learning и Prolog.

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