2010-09-15 1 views
3

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

  1. Потенциальные клиенты представлены опроснику, где они могут выбрать ни одного, один или несколько вариантов ответа на каждый вопрос.
  2. Автоматический алгоритм должен рекомендовать оптимальное решение, основанное на ответах клиентов.

Пример:

  1. Есть 3 возможных решений S1, S2, S3
  2. Вопросник содержит 10 вопросов, Q1, Q2 ... Q10
  3. Каждый вопрос содержит переменное число возможных ответов где :
    • A1.1 является первым ответом на вопрос 1.
    • A3.2 является второй nswer на вопрос 3.
  4. Я хочу, чтобы иметь возможность моделировать следующие решения, основанные на ответах, предоставленных заказчиком:
    • A1.1, A1.3, A2.1, A3.2 => S1
    • А1.1, А1.3, А2.2 => S1
    • А1.2 => S2
    • А2.2 => S2
    • А1.1, А3.1, А3 .2 => S2
    • Любая другая комбинация => S3

В итоге:

  • Для данного набора ответов должно быть рекомендовано решение.
  • Решения, определенные меньшим количеством ответов, должны быть предпочтительнее, чем решения, определяемые большим количеством ответов.

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

+0

Из описания проблемы в одиночку я бы пошел на ряд утверждений if. Что заставляет вас думать, что вам нужен алгоритм? – 2010-09-15 20:34:13

+0

jdv: Если у вас есть 57 решений, 112 вопросов и 378 ответов, это будет очень длинная серия заявлений. – John

+0

@John at CashCommons: Да, я знаю, но я не хотел этого делать. – 2010-09-15 20:44:24

ответ

1

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

Если это не работает, то вам нужен более сложный классификатор. Вы должны посмотреть decision trees (и их расширения, чередующиеся деревья решений и случайные леса) и Bayesian classifiers, среди прочих.

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

0

Мне кажется скорее декларативным logical program, то комбинаторной или статистической проблемой. Просто отмените свои заявления о том, какое решение выбрать из заданных ответов и замените «=>» на «: -», и вы получите Prolog. Эти утверждения являются предложениями Horner и могут быть решены с использованием алгоритма SLD resolution, поскольку ваши правила просты. Есть много решателей полки с привязками к различным языкам, поэтому вы можете выбрать некоторые из них.

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

  • Нет связанных вопросов^_^