Zastosowanie metod uczenia maszynowego w witrynach StackExchange

37

W tym semestrze mam kurs uczenia maszynowego, a profesor poprosił nas o znalezienie problemu w świecie rzeczywistym i rozwiązanie go jedną z metod uczenia maszynowego przedstawionych na zajęciach, takich jak:

Jestem jednym z fanów przelewania stosów i wymiany stosów i wiem, że zrzuty tych witryn są udostępniane publicznie, ponieważ są niesamowite! Mam nadzieję, że uda mi się znaleźć dobre wyzwanie w zakresie uczenia maszynowego dotyczące tych baz danych i rozwiązać je.

Mój pomysł

Przyszedł mi do głowy pomysł przewidywania tagów pytań na podstawie wprowadzonych słów w treści pytania. Myślę, że sieć bayesowska jest właściwym narzędziem do uczenia się znaczników do pytania, ale wymaga dalszych badań. W każdym razie, po fazie uczenia się, kiedy użytkownik kończy wprowadzanie pytania, należy mu zasugerować kilka tagów.

Proszę powiedz mi :

Chcę zapytać społeczność statystyk jako doświadczonych ludzi o ML dwa pytania:

  1. Czy uważasz, że sugestia tagu to przynajmniej problem, który ma szansę rozwiązać? Czy masz jakieś porady na ten temat? Martwię się trochę, ponieważ stackexchange nie implementuje jeszcze takiej funkcji.

  2. Czy masz jakiś inny / lepszy pomysł na projekt ML oparty na bazie danych Stackexchange? Naprawdę trudno mi znaleźć coś do nauczenia się w bazach danych stackexchange.


Uwagi na temat błędów bazy danych: Chciałbym wskazać, że chociaż bazy danych są ogromne i mają wiele instancji, nie są idealne i są podatne na błędy. Oczywistym jest niewiarygodny wiek użytkowników. Nawet wybrane tagi do pytania nie są w 100% poprawne. W każdym razie powinniśmy wziąć pod uwagę procent poprawności danych przy wyborze problemu.

Rozważanie na temat samego problemu: Mój projekt nie powinien dotyczyć data-miningczegoś takiego. Powinno to być po prostu zastosowanie metod ML w świecie rzeczywistym.

Izaak
źródło

Odpowiedzi:

28

Tak , myślę, że przewidywanie tagów jest interesujące i dla którego masz dobrą szansę na „sukces”.

Poniżej znajdują się przemyślenia, które mogą pomóc w burzy mózgów i dalszym zgłębianiu tego tematu. Myślę, że istnieje wiele potencjalnie interesujących kierunków, które mógłby obrać taki projekt. Sądzę, że poważna próba wykonania tylko jednego lub dwóch z poniższych zadań byłaby bardziej niż wystarczająca i prawdopodobnie pojawią się bardziej interesujące pytania niż te, które postawiłem.

Mam bardzo szeroki pogląd na to, co uważa się za uczenie maszynowe . Niewątpliwie niektóre z moich sugestii można by lepiej zaklasyfikować jako eksploracyjną analizę danych i bardziej tradycyjną analizę statystyczną . Być może pomoże to jednak w niewielkim stopniu w formułowaniu własnych interesujących pytań. Zauważysz, że staram się odpowiadać na pytania, które moim zdaniem byłyby interesujące pod względem poprawy funkcjonalności strony. Oczywiście istnieje wiele innych interesujących pytań, które mogą nie być związane z przyjaznością witryny.

  1. Podstawowa opisowa analiza zachowania użytkowników : Zgaduję, że istnieje bardzo wyraźny cykliczny tygodniowy wzorzec uczestnictwa użytkowników w tej stronie. Kiedy strona uzyskuje największy ruch? Jak wygląda wykres uczestnictwa użytkowników w witrynie, na przykład, podzielony na godziny w ciągu tygodnia? Chcesz dostosować się do potencjalnych zmian ogólnej popularności witryny w miarę upływu czasu. Prowadzi to do pytania, jak zmieniła się popularność witryny od momentu jej powstania? Jak udział „typowego” użytkownika zmienia się w zależności od czasu od dołączenia? Domyślam się, że przyśpiesza dość szybko na początku, potem na płaskowyżach i prawdopodobnie po kilku tygodniach dołączenia kieruje się na południe.
  2. Optymalne składanie pytań i odpowiedzi : Uzyskanie wglądu w pierwsze pytanie wydaje się naturalnie prowadzić do bardziej interesujących (w sensie ML) pytań. Powiedz, że mam pytanie, na które potrzebuję odpowiedzi. Jeśli chcę zmaksymalizować moje prawdopodobieństwo otrzymania odpowiedzi, kiedy powinienem ją przesłać? Jeśli odpowiadam na pytanie i chcę zmaksymalizować liczbę głosów, kiedy mam przesłać odpowiedź? Być może odpowiedzi na te dwa pytania są bardzo różne. Jak to się różni w zależności od tematu pytania (powiedzmy np. Jak zdefiniowano w powiązanych tagach)?
  3. Biclustering użytkowników i tematów : Którzy użytkownicy są najbardziej podobni pod względem swoich zainteresowań, ponownie, być może mierzonych za pomocą tagów? Jakie tematy są najbardziej podobne w zależności od użytkowników? Czy potrafisz wymyślić ładną wizualizację tych relacji? Wynika z tego próba przewidzenia, który użytkownik (użytkownicy) najprawdopodobniej prześle odpowiedź na dane pytanie. (Wyobraź sobie, że udostępniasz taką technologię SE, aby użytkownicy mogli otrzymywać powiadomienia o potencjalnie interesujących pytaniach, nie tylko na podstawie tagów).
  4. Grupowanie osób odpowiadających według zachowania : Wydaje się, że istnieje kilka różnych podstawowych wzorców behawioralnych dotyczących sposobu korzystania z tej strony przez osoby udzielające odpowiedzi. Czy możesz wymyślić funkcje i algorytm klastrowania do klastrowania użytkowników odpowiadających zgodnie z ich zachowaniem. Czy klastry są interpretowalne?
  5. Sugerowanie nowych tagów : Czy możesz zaproponować nowe tagi na podstawie wnioskowania tematów z pytań i odpowiedzi znajdujących się w bazie danych. Na przykład, uważam, że tag [model mieszanki] został niedawno dodany, ponieważ ktoś zauważył, że otrzymujemy mnóstwo powiązanych pytań. Wydaje się jednak, że podejście do wyszukiwania informacji powinno być w stanie bezpośrednio wyodrębnić takie tematy i potencjalnie zasugerować je moderatorom.
  6. Uczenie się lokalizacji geograficznych pod nadzorem : ( To może być nieco drażliwe z punktu widzenia prywatności. ) Niektórzy użytkownicy podają lokalizację, w której się znajdują. Inni nie. Korzystając z wzorców użytkowania i potencjalnie słownictwa itp., Czy możesz umieścić region pewności geograficznej w lokalizacji każdego użytkownika? Intuicyjnie wydaje się, że byłoby to (znacznie) dokładniejsze pod względem długości i szerokości geograficznej.
  7. Automatyczne oznaczanie możliwych duplikatów i wysoce powiązanych pytań : Witryna ma już podobny rodzaj funkcji z paskiem Powiązane na prawym marginesie. Znalezienie prawie dokładnych duplikatów i zasugerowanie ich może być przydatne dla moderatorów. Robienie tego w różnych witrynach społeczności SE wydaje się czymś nowym.
  8. Prognozowanie odejścia i zachowanie użytkowników : czy korzystając z funkcji z historii każdego użytkownika, możesz przewidzieć, kiedy następnym razem będziesz ich widzieć? Czy potrafisz przewidzieć prawdopodobieństwo, że wrócą na stronę, w zależności od tego, jak długo byli nieobecni i jakie były ich wcześniejsze zachowania? Można to wykorzystać np. Do zauważenia, kiedy użytkownicy są narażeni na ryzyko „odejścia” i zaangażowania ich (powiedzmy e-mailem) w celu ich zachowania. Typowe podejście polegałoby na wyrzuceniu wiadomości e-mail po pewnym ustalonym okresie bezczynności. Jednak każdy użytkownik jest inny i istnieje wiele informacji o wielu użytkownikach, dlatego można opracować bardziej dostosowane podejście.
kardynał
źródło
1
@ kardynał. To wspaniała odpowiedź, a biorąc pod uwagę dostępność wszystkich tych danych, byłby to fascynujący projekt.
richiemorrisroe
1
Większość twoich sugestii wydaje mi się praktyczna i związana z ML. W każdym razie niektóre z nich powinny poradzić sobie z błędnymi i niekompletnymi danymi. Niestety nie mam głębokiej wiedzy na temat eksploracji i czyszczenia danych ani wystarczająco dużo czasu, aby się tego nauczyć. Mam nadzieję, że inni członkowie statystyk popracują nad tymi pomysłami i wniosą wkład w społeczność SE i zrobią na nich wrażenie :)
Isaac
2
@Isaac, podana przeze mnie lista nie była przeznaczona do przytłoczenia. Miało to po prostu pomóc w burzy mózgów. W zależności od charakteru projektu, pomyślałbym, że obsłużenie 1-2 z nich byłoby tym, czego można się było spodziewać. Twoje zdrowie.
kardynał
1
wszystkie pomysły są dobre lub świetne, ale najbardziej podoba mi się „Biclustering użytkowników i tematów”… system rekomendacji dla potencjalnie interesujących pytań byłby niesamowity.
steffen
9

Myślałem też o przewidywaniu tagów, podoba mi się ten pomysł. Mam wrażenie, że jest to możliwe, ale może zajść potrzeba rozwiązania wielu problemów, zanim dotrzesz do ostatecznego zestawu danych. Spekuluję więc, że przewidywanie tagów może wymagać dużo czasu. Oprócz nieprawidłowych znaczników rolę może odgrywać limit maksymalnie 5 znaczników. Ponadto niektóre tagi są podkategoriami innych (np. „Wielokrotne porównania” można postrzegać jako podkategorię „testowania istotności”).

Nie sprawdzałem, czy czasy do głosowania są zawarte w bazie danych do pobrania, ale prostszym i wciąż interesującym projektem może być przewidywanie „ostatecznej” liczby głosów (może po 5 miesiącach) w kwestii zależnej od głosów początkowych, i czas przyjęcia odpowiedzi.

GaBorgulya
źródło
Z tego co pamiętam, dla każdego użytkownika masz swój głos z datą + identyfikator pytania.
chl
(+1) do przewidywania głosów. Świetny pomysł!
steffen
1
Ten projekt wydaje się świetny, zwłaszcza jeśli przewidujemy, że liczba użytkowników vpvote będzie wkrótce dostępna dla użytkownika. Dalszą pracą może być poinformowanie użytkownika, co powstrzymuje jego pytanie i jakie ulepszenia mogą uczynić jego pytanie popularnym. W każdym razie, jak zawsze, wybór funkcji jest naprawdę ważnym i trudnym zadaniem, a wydajność takich prognoz w dużej mierze zależy od tego wyboru. TL; DR Podoba mi się twój pomysł
Izaak,
2

To dobre pytanie. Ja również myślałem, że publicznie dostępne zestawy danych StackExchange będą dobrym przedmiotem do analizy. Są one na tyle niezwykłe, że mogą być również dobrym testem dla nowych metod statystycznych. Posiadanie tak dużej ilości dobrze ustrukturyzowanych danych jest w każdym razie niezwykłe.

kardynał zasugerował kilka rzeczy, które byłyby przydatne dla StackExchange. Nie ograniczę się do tego.

Oto jeden oczywisty kandydat do analizy, choć nie ma oczywistego zastosowania, które przychodzi mi na myśl. Jest to zauważalny efekt, że użytkownicy o wysokich powtórzeniach częściej zdobywają głosy poparcia, przy czym inne rzeczy są równe. Jednak efekt ten prawdopodobnie nie jest trywialny w modelowaniu. Ponieważ nie możemy bardzo łatwo porównać użyteczności między użytkownikami, oczywistym podejściem byłoby założenie, że odpowiedzi użytkowników były zawsze równie przydatne (ogólnie nieprawdziwe, ale trzeba gdzieś zacząć), a następnie dodać inflacyjny termin, aby uwzględnić jego rosnącą reputację . Można by wtedy (jak sądzę) dodać pewne terminy, które wyjaśniałyby jego odpowiedzi w miarę zwiększania doświadczenia. Być może można to rozwiązać za pomocą pewnego rodzaju szeregów czasowych. Nie jestem pewien, jak wpływałby na to interwał danych. To może być interesujące ćwiczenie.

Dodam więcej przykładów, jeśli / kiedy o nich pomyślę.

Czy ktoś wie o badaniach statystycznych opartych na danych SE? Izaak wspomniał również, że dane zawierają błędy. Czy ktoś wie coś więcej na ten temat?

Faheem Mitha
źródło
To jest rzeczywiście interesujące pytanie, które, jak sądzę, AndyW zaczęło analizować w poście na blogu i od czasu do czasu zadawało pytania. Ciekawe jest moje stwierdzenie, że istnieje „zauważalny” taki efekt, który nie do końca jestem przekonany, że rzeczywiście istnieje. Następnie sugerujesz sposób modelowania tego, ale czy zwykle nie obejmuje to próby odpowiedzi na dokładne pytanie, na które, jak mówisz, masz już odpowiedź twierdzącą?
kardynał
@cardinal: Czy masz link do postu na blogu? Nie jestem pewien, czy rozumiem twoje ostatnie zdanie. Tes, myślę, że efekt jest prawdziwy i zauważalny, przynajmniej jeśli nazwa użytkownika to Skeet, ale w tym momencie jest to tylko anegdotyczne wrażenie, choć mocne. Tak więc, jeśli wolisz, możesz zastąpić „zauważalny efekt” hipotezą. Analiza będzie oczywiście próbowała to potwierdzić lub zaprzeczyć, a także zmierzyć siłę efektu, jeśli istniał.
Faheem Mitha