алгоритмы для оценки пользовательских ответов - PullRequest
5 голосов
/ 01 ноября 2009

Я работаю над веб-приложением, которое будет использоваться для классификации фотографий автомобилей. Пользователям будут представлены фотографии различных транспортных средств, и им будет предложено ответить на ряд вопросов о том, что они видят. Результаты будут записаны в базу данных, усреднены и отображены.

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

Этот вопрос задается всем вам, ребятам в области компьютерных наук, где найти такие алгоритмы или дать себе теоретическую основу для разработки таких алгоритмов. Я предполагаю, что мне придется изучить некоторую вероятность и статику, возможно, некоторые данные. Некоторые книжные рекомендации будут великолепны. Спасибо!

P.S. Это вопросы с несколькими вариантами ответов.

Все это хорошие предложения. Спасибо! Хотелось бы, чтобы при переполнении стека был способ выбрать несколько правильных ответов, чтобы большее количество из вас могло быть признано за ваш вклад !!

Ответы [ 7 ]

3 голосов
/ 01 ноября 2009

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

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

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

2 голосов
/ 01 ноября 2009

Я полагаю, что то, что вы описали, решается с помощью обнаружения выбросов / аномалий . Существует ряд методов:

  • статистические методы
  • дистанционные методы
  • основанные на модели методы

Я предлагаю вам взглянуть на эти слайды из превосходной книги Введение в интеллектуальный анализ данных

0 голосов
/ 02 ноября 2009

Если бы вы собирали голоса типа «по шкале от 1 до 10, как бы вы оценили этот автомобиль», вы, вероятно, могли бы использовать простое среднее и стандартное отклонение: чем меньше стандартное отклонение, тем более единодушен общий консенсус среди ваших избирателей, и вы можете пометить пользователей, которые, например, 3 стандартных разработчика от среднего.

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

Обратите внимание, что я написал "флаг пользователей", не отбросить голоса. Если вы отбрасываете голоса, вы не можете сказать, насколько вы уверены в результате («91% проголосовали за Ford Mustang»). Если пользователь имеет более чем определенный процент голосов, помеченных им, - это ваше дело.

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

0 голосов
/ 01 ноября 2009

Я думаю, что вы говорите, что вы обеспокоены тем, что некоторые люди являются "выбросами", и они добавляют шум к вашим данным, делая классификацию менее надежной. Итак, если у вас есть Chevy Camaro, и большинство людей говорят, что это либо пони, либо мускул-кар, либо спортивная машина, но у вас есть какой-то дурак, который говорит, что это семейный седан, вы бы хотели минимизировать воздействие его голосовать.

Одна вещь, которую вы могли бы сделать, это обеспечить оценку репутации, подобную переполнению стека, для пользователей:

  • Чем больше пользователь «согласен» с другими пользователями, тем лучше будет его оценка. Для данного пользователя (пользователя X) это можно определить простым вычислением того, какой процент пользователей, ответивших на вопрос, выбрал ту же категорию, что и пользователь X, а затем усреднить это значение по всем ответам на вопросы.
  • Возможно, вы захотите умножить это значение на общее количество ответов на вопросы, чтобы побудить людей ответить на как можно больше вопросов. (Примечание: если вы решите сделать это, это будет эквивалентно суммированию баллов по процентному соглашению, а не их усреднению.)
  • Вы можете представить окончательный рейтинг репутации пользователям, убедившись, что они будут вознаграждены за то, насколько хорошо их ответы совпадают с ответами других пользователей. Это побудит людей отвечать больше на вопросы, но также и заботиться в своих ответах.
  • Наконец, вы можете рассчитать показатель достоверности для данной категории, сложив общий показатель репутации всех людей, которые выбрали данную категорию.

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

0 голосов
/ 01 ноября 2009

Какие это вопросы (да / нет или от 1 до 10?).

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

0 голосов
/ 01 ноября 2009

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

Вот простой подход, которого должно быть достаточно:

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

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

0 голосов
/ 01 ноября 2009

Если вы знаете, какие ответы вы ожидаете, почему вы просите людей проголосовать? Исключая некоторые значения, вы в основном превращаете голосование в то, что вам нравится. Автомобили производят разное впечатление на разных людей. Если за 100 человек понравился автомобиль, то когда кто-то приходит и говорит, что он или она ему не нравится, вы исключаете голосование?

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

Без начального набора данных вы не сможете применить какой-либо алгоритм, потому что вы получите ложные результаты. Рассмотрим только один голос из 100 по шкале от 0 до 100. Второй голос - «1». Вы исключите этот голос, потому что он слишком далеко от среднего.

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