Алгоритм: бинарный поиск при неопределенных значениях

11

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

Справочная информация: мне нужно расположить студентов на наиболее подходящем из 12 уровней сложности. Текущий подход - грубая сила, и он задает 60 вопросов с 4 вариантами ответов с несколькими вариантами ответов, увеличивая сложность, останавливаясь после трех неправильных ответов, и ставя ученика на уровень: floor((score - 1) / 5) + 1как минимум 1.

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

Среднее положение на самом деле находится на уровне 2, поэтому 50 +% студентов набрали <11 (т.е. ответили <14 вопросов). Как ни странно, это может быть потому, что им становится скучно, и они перестают относиться к вопросам всерьез (они маленькие дети).

Предлагаемое решение: Проведите тест в виде бинарного поиска по двенадцати элементам, начиная с вопроса на уровне сложности 6/7 и продолжая в зависимости от того, правильно ли они задают вопрос. Теоретически, это может найти подходящий уровень сложности для них в 3-4 вопросах.

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

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

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


источник
Зачем вообще тестировать? Просто самостоятельно отрегулируйте вопросы по фактическому тесту
Скотт Стенсланд
@ ScottStensland, интересная мысль. Тем не менее, настоящая программа состоит из 12 «карт» из 10 «уроков», каждый из которых состоит из 8–15 «заданий» на HTML5-холсте или игр, каждая из которых имеет очень изменчивый дизайн. Студенты проходят по картам и получают награды и награды / сертификаты после каждого урока и карты. Если бы мы постоянно настраивали их уровень после каждой игры, это было бы довольно дезориентирующим, и нам нужно было бы встроить обратную связь во все наши существующие игры и выяснить правила обратной связи для каждой игры.
@ Кирилл, есть ли простой способ переместить / кросспостить вопрос в другой раздел?
@jim Вы можете пометить это как внимание модератора, чтобы попросить переместить вопрос, или вы также можете удалить этот вопрос здесь и создать новый идентичный вопрос там. Кросспостинг (имеющий одинаковые вопросы на разных сайтах одновременно) обычно не рекомендуется. Я сделал это предложение, потому что оно мне кажется сравнительно простым вопросом статистики / машинного обучения, на который четкий ответ получился бы гораздо быстрее.
Кирилл

Ответы:

2

Рассматривайте проблему как массив байесовских вероятностей; вначале предположим, что есть вероятность 1/13 того, что ребенок находится чуть ниже каждого уровня, а для полноты - вероятность 1/13, что он не на вершине. Затем: 1) Найдите медианный уровень вашего массива, т. Е. Уровень, на котором вероятность быть выше него ближе всего к 50%. 2) Задайте ребенку вопрос с этого уровня. 3) Используйте правило Байеса для обновления вероятности каждой ячейки, допуская 25% ошибок. Завершите и верните наиболее вероятный уровень, когда одна ячейка достигает достаточно высокой вероятности, или, я полагаю, когда у вас заканчиваются вопросы на уровне.

Более строгое рассмотрение этого алгоритма здесь ; Я рекомендую прочитать его перед внедрением.

Тимоти Нодин
источник