Так вот, что бы я сделал.Учитывая ответ на мой предыдущий вопрос, я думаю, у вас есть что-то вроде следующего.Похоже, вы хотите реализовать 20 вопросов, например, подход.
С двадцатью вопросами у вас есть ответы да / нет, поэтому двоичное дерево работает лучше всего.Тем не менее, вы можете наложить несколько вариантов выбора, но пользователь выбирает один вариант.Таким образом, этот алгоритм предполагает, что вы обучили свое дерево заранее, и оно было построено из набора данных, который вы хотите использовать.
Скажем, например, что мы пытаемся поставить медицинский диагноз, чтобы наши данные могли выглядеть какследующие:
Disease Name Head Ache Fever Back Pain Leg Pain Blurry Vision Hearing Loss
Common Cold Yes Yes No No No No
Migraine Yes No No No Yes No
Herpes No Yes No No No No
В этом примере, Головная боль, Лихорадка, Боль в спине, Боль в ногах и т. д. являются влияющими факторами, а Имя болезни является целью.Каждый ряд будет представлять собой фактический диагноз отдельного пациента, поэтому заболевание может повторяться в данных более одного раза.
- Измените алгоритм обхода, чтобы начать с корня.
- ЕслиВы достигли листа, сообщающего пользователю потенциальные ответы.
- Возьмите фактор влияния, использованный для разделения этого узла, представьте его пользователю и задайте вопрос «Да / Нет» (У вас болит голова).
- Идите налево, если пользователь ответит Да.
- Идите вправо, если пользователь ответит №
- Перейти к шагу 2
На листеузлы, которые вам понадобятся, в фактических строках, которые попали в это место, чтобы вы могли отобразить его пользователю, говоря, что у вас может быть один из них:
Головная боль Мигрень отрубленная голова
Предписание:бла-бла-бла.
С 1 миллионом влияющих потребуется время, чтобы построить дерево.Если вы хотите понизить это, возможно, можно использовать многозначные факторы влияния вместо да / нет.Хотя действительно трудно придумать 1 миллион да / нет уникальных вопросов даже для каждого заболевания.Как только вы построите дерево, оно может предложить столько диагнозов, сколько вы захотите.