Алгоритм поиска решений, основанный на ответах на данный вопросник - PullRequest
3 голосов
/ 16 сентября 2010

Рассмотрим следующий сценарий:

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

Пример:

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

В итоге:

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

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

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

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

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

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

0 голосов
/ 13 октября 2010

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

...