Применение методов машинного обучения на сайтах StackExchange

37

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

Я один из поклонников stackoverflow и stackexchange и знаю, что дампы баз данных этих веб-сайтов предоставляются публике, потому что они потрясающие! Я надеюсь, что смогу найти хорошую задачу машинного обучения для этих баз данных и решить ее.

Моя идея

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

Пожалуйста, скажите мне :

Я хочу спросить статистику сообщества как опытных людей о ML два вопроса:

  1. Как вы думаете, предложение тегов, по крайней мере, является проблемой, которую можно решить? Есть ли у вас какие-либо советы по этому поводу? Я немного волнуюсь, потому что stackexchange пока не реализует такую ​​функцию.

  2. У вас есть какая-нибудь другая / лучшая идея для проекта ML, основанного на базе данных stackexchange? Я считаю , что очень трудно найти что - то узнать из баз данных stackexchange.


Рассмотрение ошибок базы данных. Я хотел бы отметить, что хотя базы данных огромны и имеют много экземпляров, они не идеальны и подвержены ошибкам. Очевидным является возраст пользователей, которые ненадежны. Даже выбранные теги для вопроса не являются 100% правильными. В любом случае, мы должны учитывать процент правильности данных при выборе проблемы.

Рассмотрение самой проблемы: мой проект не должен быть о data-miningчем-то вроде этого. Это просто должно быть применение методов ML в реальном мире.

Исаак
источник

Ответы:

28

Да , я думаю, что прогнозирование тегов является интересным, и у вас есть хороший шанс на «успех».

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

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

  1. Базовый описательный анализ поведения пользователей : я предполагаю, что существует очень четкая циклическая недельная схема участия пользователей на этом сайте. Когда сайт получает больше всего трафика? Как выглядит график участия пользователя на сайте, скажем, стратифицированный по часам за неделю? Вы хотите скорректировать потенциальные изменения общей популярности сайта с течением времени. Это приводит к вопросу, как изменилась популярность сайта с момента его создания? Как участие «типичного» пользователя меняется со временем с момента присоединения? Я предполагаю, что в начале он довольно быстро нарастает, затем на плато, и, вероятно, через несколько недель после присоединения присоединится к югу.
  2. Оптимальное представление вопросов и ответов . Понимание первого вопроса, естественно, приводит к некоторым более интересным (в смысле ML) вопросам. Скажем, у меня есть вопрос, на который мне нужен ответ. Если я хочу максимизировать свою вероятность получения ответа, когда я должен представить его? Если я отвечаю на вопрос и хочу максимально увеличить количество голосов, когда я должен представить свой ответ? Может быть, ответы на эти два очень разные. Как это зависит от темы вопроса (скажем, например, как определено соответствующими тегами)?
  3. Сложность пользователей и тем : какие пользователи наиболее похожи по своим интересам, опять же, возможно, по меткам? Какие темы наиболее похожи в зависимости от того, какие пользователи участвуют? Можете ли вы придумать хорошую визуализацию этих отношений? В ответ можно попытаться предсказать, какой пользователь (пользователи), скорее всего, отправит ответ на конкретный вопрос. (Представьте, что вы предоставляете такую ​​технологию SE, чтобы пользователи могли получать уведомления о потенциально интересных вопросах, а не просто на основе тегов.)
  4. Кластеризация ответчиков по поведению . Кажется, что существует несколько различных базовых поведенческих моделей, касающихся того, как ответчики используют этот сайт. Можете ли вы придумать функции и алгоритм кластеризации для кластеризации ответчиков в соответствии с их поведением. Являются ли кластеры интерпретируемыми?
  5. Предлагая новые теги : Можете ли вы предложить предложения для новых тегов, основанные на выводе тем из вопросов и ответов, находящихся в настоящее время в базе данных. Например, я считаю, что тег [смесь-модель] был недавно добавлен, потому что кто-то заметил, что мы получаем кучу связанных вопросов. Но, похоже, информационно-поисковый подход должен быть в состоянии извлечь такие темы напрямую и потенциально предложить их модераторам.
  6. Полусопровождаемое изучение географических местоположений : ( Этот может быть немного обидчивым с точки зрения конфиденциальности. ) Некоторые пользователи перечисляют, где они находятся. Другие нет. Используя шаблоны использования и, возможно, словарный запас и т. Д., Можете ли вы установить географическую доверительную область для местоположения каждого пользователя? Интуитивно кажется, что это будет (намного) более точным с точки зрения долготы, чем широты.
  7. Автоматическая пометка возможных дубликатов и очень связанных вопросов . На сайте уже есть аналогичная функция с соответствующей панелью в правом поле. Поиск почти точных дубликатов и предложение их может быть полезным для модераторов. Делать это на разных сайтах сообщества SE было бы новым.
  8. Прогнозирование оттока и удержание пользователя : Используя функции из истории каждого пользователя, можете ли вы предсказать следующий раз, когда ожидаете их увидеть? Можете ли вы предсказать вероятность того, что они вернутся на сайт, в зависимости от того, как долго они отсутствовали, и особенностей их прошлого поведения? Это можно использовать, например, чтобы попытаться заметить, когда пользователи подвергаются риску «оттока», и привлечь их (скажем, по электронной почте), чтобы сохранить их. Типичный подход - пересылать электронные письма после определенного периода бездействия. Но каждый пользователь очень разный, и существует множество информации о множестве пользователей, поэтому можно разработать более индивидуальный подход.
кардинальный
источник
1
@ кардинал. Это замечательный ответ, и, учитывая наличие всех этих данных, это сделало бы увлекательный проект.
richiemorrisroe
1
Большинство ваших предложений мне кажется практичным и связанным с ОД. Во всяком случае, некоторые из них должны иметь дело с ошибочными и неполными данными. К сожалению, я не обладаю глубокими знаниями в области интеллектуального анализа и очистки данных, и у меня недостаточно времени для их изучения. Я надеюсь, что другие члены статистики поработают над этими идеями и внесут вклад в сообщество SE и произведут на них впечатление :)
Исаак
2
@ Исаак, список, который я предоставил, не был перегружен. Это было предназначено просто, чтобы потенциально помочь с мозговым штурмом. В зависимости от характера проекта, я думаю, что обработка 1-2 из них будет самым ожидаемым. Приветствия.
кардинал
1
все идеи хороши или хороши, но мне больше нравится «Бикластеризация пользователей и тем» ... система рекомендаций для потенциально интересных вопросов была бы потрясающей.
Штеффен
9

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

Я не проверял, включено ли время до голосования в загружаемую базу данных, но более простым и все же интересным проектом могло бы быть прогнозирование «окончательного» числа голосов (возможно, через 5 месяцев) по вопросу в зависимости от первоначальных голосов, и время принятия ответа.

GaBorgulya
источник
Из того, что я помню, у каждого пользователя есть свой голос с датой + идентификатор вопроса.
ЧЛ
(+1) для прогнозирования голосования. Отличная идея!
Штеффен
1
Этот проект кажется великолепным, особенно если мы очень скоро прогнозируем количество vpvote для пользователя. Дальнейшая работа может состоять в том, чтобы рассказать пользователю, что сдерживает его / ее вопрос и какие улучшения могут сделать его вопрос популярным. В любом случае, как всегда, выбор функции - действительно важная и сложная задача, и выполнение таких прогнозов сильно зависит от этого выбора. TL; DR Мне нравится твоя идея
Исаак
2

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

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

Вот один очевидный кандидат для анализа, хотя он не имеет очевидного использования, которое приходит на ум. Это заметный эффект, что пользователи с высоким уровнем репутации имеют больше шансов получить положительные голоса, при прочих равных условиях. Однако этот эффект, вероятно, нетривиален для модели. Поскольку мы не можем очень легко сравнить полезность по пользователям, очевидным подходом было бы предположить, что ответы пользователей всегда были одинаково полезны (в общем-то это неправда, но с чего-то начинать нужно), а затем добавить инфляционный термин для учета его растущей репутации. , Затем можно было бы (я полагаю) добавить в некоторые термины, которые объясняли бы его ответы, улучшающиеся с увеличением опыта. Может быть, это могло быть обработано каким-то временным рядом. Я не уверен, как интервал данных повлияет на это. Это может быть интересное упражнение.

Я добавлю больше примеров, если / когда я думаю о них.

Кто-нибудь знает о статистических исследованиях, основанных на данных SE? Также Исаак упомянул, что в данных есть ошибки. Кто-нибудь знает что-нибудь еще об этом?

Фахим Митха
источник
Это, действительно, интересный вопрос, который, как я полагаю, AndyW начал анализировать в блоге и задавать вопросы некоторое время назад. Я нахожу любопытным ваше утверждение о том, что существует «заметный» такой эффект, который, я не совсем убежден, действительно существует. Затем вы предлагаете способ смоделировать это, но разве это обычно не включает попытку ответить на конкретный вопрос, который, по вашему мнению, уже имеет утвердительный ответ?
кардинал
@cardinal: У вас есть ссылка на пост в блоге? Я не уверен, что понимаю ваше последнее предложение. Tes, я думаю, что эффект реален и заметен, по крайней мере, если имя пользователя Skeet, но на данный момент это просто эпизодическое впечатление, хотя и сильное. Итак, если вы предпочитаете, вы можете заменить «заметный эффект» гипотезой. Анализ, конечно, попытается подтвердить или опровергнуть его, а также измерить силу эффекта, если он существует.
Фахим Митха