Застосування методів машинного навчання на веб-сайтах 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. Автоматизоване позначення можливих дублікатів та дуже пов’язаних питань : На веб-сайті вже є подібна функція із пов’язаною панеллю в правому полі. Знайти майже точні дублікати та запропонувати їх може бути корисним модераторам. Зробити це через сайти в Спільноті Південної Європи може здатися новим.
  8. Прогноз Churn та збереження користувачів : Використовуючи функції з історії кожного користувача, чи можете ви передбачити наступного разу, коли ви їх очікуєте побачити? Чи можете ви передбачити ймовірність того, що вони повернуться на сайт залежно від того, як довго вони відсутні та особливостей їх минулої поведінки? Це може бути використано, наприклад, щоб спробувати помітити, коли користувачі загрожують "збитком", і залучити їх (скажімо, електронною поштою), намагаючись утримати їх. Типовий підхід видаляє електронну пошту після певного фіксованого періоду бездіяльності. Але кожен користувач дуже різний і є багато інформації про безліч користувачів, тож можна розробити більш підхідний підхід.

1
@ кардинал. Це чудова відповідь, і враховуючи наявність усіх цих даних, це зробить захоплюючий проект.
richiemorrisroe

1
Більшість ваших пропозицій здаються мені практичними та пов'язаними з ML. У будь-якому випадку, деякі з них повинні мати справу з помилковими та неповними даними. На жаль, я не маю глибоких знань щодо видобутку та очищення даних, а також недостатньо часу, щоб засвоїти їх. Я сподіваюся, що інші члени статистики попрацюють над цими ідеями та внесуть внесок у спільноту SE та вражають їх :)
Ісаак

2
@Isaac, список, який я надав, не мав потреби переповнювати. Він мав на меті просто потенційно допомогти в мозковому штурмі. Залежно від характеру проекту, я думаю, що обробка 1-2 з них буде найбільше, що можна було очікувати. Ура.
кардинал

1
всі ідеї хороші чи чудові, але мені подобається найкраще "Розбиття користувачів та тем" ... система рекомендацій для потенційно цікавих питань була б приголомшливою.
steffen

9

Я думав і про передбачення тегів, ідея мені також подобається. У мене є відчуття, що це можливо, але вам може знадобитися подолати багато питань, перш ніж ви приїдете до остаточного набору даних. Тому я думаю, що прогнозування тегів може знадобитися багато часу. Крім неправильних тегів, роль максимуму 5 тегів може грати роль. Крім того, що деякі теги є підкатегоріями інших (наприклад, "багаторазове порівняння" можна розглядати як підкатегорію "тестування на значимість").

Я не перевіряв, чи включені часи голосування під час завантаження в базу даних, але більш простим і все-таки цікавим проектом може бути прогнозування "остаточної" кількості голосів (можливо, через 5 місяців) щодо питання залежно від початкових голосів, та терміни прийняття відповіді.


Як я пам'ятаю, кожен користувач має свій голос із датою + ідентифікатором питання.
chl

(+1) для прогнозування голосів Чудова ідея!
steffen

1
Цей проект здається чудовим, особливо якщо ми передбачимо, що кількість користувачів vpvote дуже скоро буде призначена для користувача. Подальша робота може полягати в тому, щоб сказати користувачеві, що стримує його / її питання і яке вдосконалення може зробити його питання популярним. У будь-якому випадку, як завжди, вибір функції є дійсно важливим і складним завданням, і виконання таких прогнозів сильно залежить від цього вибору. TL; DR Мені подобається ваша ідея
Ісаак

2

Це гарне запитання. Я теж вважав, що загальнодоступні набори даних StackExchange стануть хорошими предметами для аналізу. Вони є досить незвичними, що можуть бути хорошими тестовими зразками для нових статистичних методів. Наявність такої великої кількості добре структурованих даних є незвичною, у будь-якому випадку.

кардинал запропонував купу речей, які були б корисні для StackExchange. Я не обмежуватимусь цим.

Ось один очевидний кандидат для аналізу, хоча він не має очевидного використання. Це помітний ефект від того, що користувачі з високим рівнем репутації мають більше шансів отримати репутацію, за інших рівних умов. Однак цей ефект, ймовірно, нетривіальний для моделювання. Оскільки ми не можемо легко порівняти корисність для користувачів, очевидним підходом було б припустити, що відповіді користувачів завжди були однаково корисними (неправда взагалі, але треба починати десь), а потім додавати інфляційний термін для врахування його зростаючої репутації . Тоді можна було б (можу) додати деякі терміни, які б пояснювали, що його відповіді покращуються із збільшенням досвіду. Можливо, це могло б впоратися якимось тимчасовим рядом. Я не впевнений, як інтервал даних буде впливати на це. Це може бути цікавою вправою.

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

Хтось знає статистичні дослідження на основі даних SE? Також Ісаак зазначив, що в даних є помилки. Хтось знає щось більше про це?


Це, справді, цікаве запитання, яке я вважаю, що ЕндіW почав аналізувати у публікації блогу та запитаннях задовго. Мені цікаво ваше твердження про те, що існує такий «помітний» такий ефект, який, я не зовсім переконаний, існує насправді. Потім ви запропонуєте спосіб моделювати це, але чи не включає це, як правило, спроба відповісти на точне запитання, на яке, на вашу думку, вже є ствердна відповідь?
кардинал

@cardinal: У вас є посилання на допис у блозі? Я не впевнений, що розумію ваше останнє речення. Тес, я думаю, що ефект справжній і помітний, принаймні, якщо ім'я користувача - Скіт, але на даний момент це лише анекдотичне враження, хоча і сильне. Отже, якщо ви віддаєте перевагу, ви можете замінити "помітний ефект" гіпотезою. Аналіз, звичайно, намагатиметься підтвердити або спростувати, а також виміряти силу ефекту, якщо він би існував.
Faheem Mitha

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.