Anwendung maschineller Lernmethoden auf StackExchange-Websites

37

Ich habe in diesem Semester einen Kurs zum maschinellen Lernen, und der Professor hat uns gebeten, ein reales Problem zu finden und es mit einer der in der Klasse eingeführten Methoden des maschinellen Lernens zu lösen:

Ich bin einer der Fans von Stackoverflow und Stackexchange und weiß, dass Datenbank-Dumps dieser Websites der Öffentlichkeit zur Verfügung gestellt werden, weil sie fantastisch sind! Ich hoffe, ich konnte eine gute maschinelle Lernaufgabe für diese Datenbanken finden und lösen.

Meine Idee

Eine Idee, die mir in den Sinn kam, ist die Vorhersage von Tags für Fragen basierend auf den eingegebenen Wörtern im Fragekörper. Ich denke, das Bayesianische Netzwerk ist das richtige Werkzeug, um Tags für eine Frage zu lernen, muss aber genauer untersucht werden. Auf jeden Fall sollten ihm nach der Lernphase, in der der Benutzer die Frage eingegeben hat, einige Tags vorgeschlagen werden.

Bitte sag mir :

Ich möchte der Statistik-Community als erfahrenen Leuten zwei Fragen zu ML stellen:

  1. Denken Sie, dass Tag-Vorschläge zumindest ein Problem sind, das zu lösen ist? Hast du irgendwelche Ratschläge dazu? Ich bin ein wenig besorgt, weil stackexchange eine solche Funktion noch nicht implementiert.

  2. Haben Sie eine andere / bessere Idee für das ML-Projekt, das auf der StackExchange-Datenbank basiert? Ich finde es sehr schwierig, etwas aus StackExchange-Datenbanken zu lernen .


Überlegungen zu Datenbankfehlern: Ich möchte darauf hinweisen, dass die Datenbanken zwar riesig sind und viele Instanzen aufweisen, aber nicht perfekt und fehleranfällig sind. Das offensichtliche ist das Alter der Benutzer, das unzuverlässig ist. Selbst ausgewählte Tags für die Frage sind nicht 100% korrekt. Wie auch immer, wir sollten den Prozentsatz der Richtigkeit der Daten bei der Auswahl eines Problems berücksichtigen.

Überlegungen zum Problem selbst: Mein Projekt sollte sich nicht darum handeln data-miningoder so ähnlich. Es sollte nur eine Anwendung von ML-Methoden in der realen Welt sein.

Isaac
quelle

Antworten:

28

Ja , ich denke, dass die Tag-Vorhersage interessant ist und für die Sie eine gute Chance auf "Erfolg" haben.

Im Folgenden finden Sie einige Gedanken, die möglicherweise beim Brainstorming und der weiteren Erforschung dieses Themas hilfreich sein können. Ich denke, es gibt viele potenziell interessante Richtungen, die ein solches Projekt einschlagen könnte. Ich würde vermuten, dass ein ernsthafter Versuch, nur eines oder zwei der folgenden Punkte zu versuchen, zu einem mehr als adäquaten Projekt führen würde und dass Sie wahrscheinlich interessantere Fragen haben als die, die ich gestellt habe.

Ich werde einen sehr weiten Blick auf das werfen, was als maschinelles Lernen angesehen wird . Zweifellos wären einige meiner Vorschläge besser als explorative Datenanalyse und traditionellere statistische Analyse einzustufen . Aber vielleicht hilft es Ihnen, wenn Sie Ihre eigenen interessanten Fragen formulieren. Sie werden bemerken, dass ich versuche, Fragen anzusprechen, die meiner Meinung nach interessant sind, um die Funktionalität der Site zu verbessern. Natürlich gibt es auch viele andere interessante Fragen, die sich möglicherweise nicht auf die Freundlichkeit der Website beziehen.

  1. Grundlegende deskriptive Analyse des Benutzerverhaltens : Ich vermute, es gibt ein sehr klares zyklisches wöchentliches Muster für die Teilnahme von Benutzern an dieser Site. Wann hat die Site den meisten Traffic? Wie sieht das Diagramm der Benutzerbeteiligung auf der Website aus, beispielsweise nach Stunden über die Woche verteilt? Sie sollten sich auf mögliche Änderungen der allgemeinen Beliebtheit der Website im Laufe der Zeit einstellen. Dies führt zu der Frage, wie sich die Popularität der Website seit ihrer Einführung verändert hat. Wie ändert sich die Teilnahme eines "typischen" Benutzers mit der Zeit seit dem Beitritt? Ich vermute, dass es am Anfang ziemlich schnell ansteigt, dann ein Hochplateau erreicht und wahrscheinlich nach ein paar Wochen nach Süden geht.
  2. Optimale Einreichung von Fragen und Antworten : Der Einblick in die erste Frage scheint natürlich zu interessanteren (im ML-Sinne) Fragen zu führen. Sagen Sie, ich habe eine Frage, auf die ich eine Antwort brauche. Wenn ich meine Wahrscheinlichkeit, eine Antwort zu erhalten, maximieren möchte, wann sollte ich sie einreichen? Wenn ich auf eine Frage antworte und meine Stimmenzahl maximieren möchte, wann sollte ich meine Antwort einreichen? Vielleicht sind die Antworten auf diese beiden sehr unterschiedlich. Wie variiert dies je nach Thema der Frage (z. B. wie durch die zugehörigen Tags definiert)?
  3. Biclustering von Benutzern und Themen : Welche Benutzer sind sich in Bezug auf ihre Interessen am ähnlichsten , vielleicht gemessen an Tags? Welche Themen sind den teilnehmenden Nutzern am ähnlichsten? Können Sie sich eine schöne Visualisierung dieser Beziehungen einfallen lassen? Ableger davon wären der Versuch, vorherzusagen, welche Benutzer am wahrscheinlichsten eine Antwort auf eine bestimmte Frage senden. (Stellen Sie sich vor, Sie stellen SE eine solche Technologie zur Verfügung, damit Benutzer über potenziell interessante Fragen informiert werden können, und nicht nur über Tags.)
  4. Gruppierung von Antwortenden nach Verhalten : Es scheint, dass es einige unterschiedliche grundlegende Verhaltensmuster gibt, wie die Antwortenden diese Website nutzen. Können Sie sich Funktionen und einen Clustering-Algorithmus einfallen lassen, um die Antwortenden nach ihrem Verhalten zu gruppieren? Sind die Cluster interpretierbar?
  5. Vorschlagen neuer Tags : Können Sie Vorschläge für neue Tags einbringen, indem Sie Themen aus den aktuell in der Datenbank vorhandenen Fragen und Antworten ableiten. Ich glaube zum Beispiel, dass das Tag [Mischungsmodell] kürzlich hinzugefügt wurde, weil jemand bemerkt hat, dass wir eine Reihe verwandter Fragen bekommen haben. Es scheint jedoch, dass ein Ansatz zum Abrufen von Informationen in der Lage sein sollte, solche Themen direkt zu extrahieren und sie möglicherweise Moderatoren vorzuschlagen.
  6. Teilüberwachtes Lernen von geografischen Standorten : ( Dieser kann aus Sicht des Datenschutzes etwas heikel sein. ) Einige Benutzer listen auf, wo sie sich befinden. Andere nicht. Können Sie mithilfe von Verwendungsmustern, potenziellem Vokabular usw. einen geografischen Vertrauensbereich für den Standort jedes Benutzers festlegen? Intuitiv scheint dies (viel) genauer in Bezug auf Länge als Breite zu sein.
  7. Automatisierte das Markieren von möglichen Duplikaten und sehr ähnlichen Fragen : Die Seite hat bereits eine ähnliche Art Feature mit dem Related bar am rechten Rand. Es kann für die Moderatoren nützlich sein, nahezu exakte Duplikate zu finden und diese vorzuschlagen. Dies über Standorte in der SE-Community hinweg zu tun, scheint neu zu sein.
  8. Abwanderungsvorhersage und Benutzerbindung : Können Sie anhand der Funktionen aus dem Verlauf der einzelnen Benutzer vorhersagen, wann Sie sie das nächste Mal sehen werden? Können Sie vorhersagen, mit welcher Wahrscheinlichkeit sie auf die Website zurückkehren, abhängig davon, wie lange sie abwesend sind und welche Merkmale ihr früheres Verhalten aufweist? Dies könnte beispielsweise dazu verwendet werden, um zu bemerken, wenn die Gefahr besteht, dass Benutzer "abwandern", und um sie (beispielsweise per E-Mail) dazu zu bewegen, sie zurückzuhalten. Ein typischer Ansatz würde eine E-Mail nach einer festgelegten Zeit der Inaktivität versenden. Jeder Benutzer ist jedoch sehr unterschiedlich und es gibt viele Informationen über viele Benutzer, sodass ein maßgeschneiderter Ansatz entwickelt werden könnte.
Kardinal
quelle
1
@ Kardinal. Das ist eine wunderbare Antwort, und angesichts der Verfügbarkeit all dieser Daten wäre es ein faszinierendes Projekt.
Richiemorrisroe
1
Die meisten Ihrer Vorschläge scheinen mir praktisch und ML-bezogen zu sein. Auf jeden Fall sollten einige von ihnen mit fehlerhaften und unvollständigen Daten umgehen. Leider verfüge ich weder über fundierte Kenntnisse im Bereich Data Mining und Bereinigung noch über ausreichend Zeit, um diese zu erlernen. Ich hoffe, andere Mitglieder der Statistik arbeiten an diesen Ideen und leisten einen Beitrag zur SE-Community und beeindrucken sie :)
Isaac
2
@Isaac, die Liste, die ich zur Verfügung gestellt habe, sollte nicht überwältigen. Es sollte lediglich potenziell beim Brainstorming helfen. Abhängig von der Art des Projekts würde ich denken, dass der Umgang mit 1-2 von ihnen das Beste ist, was zu erwarten wäre. Prost.
Kardinal
1
Alle Ideen sind gut oder großartig, aber ich mag "Biclustering von Benutzern und Themen" am liebsten ... ein Empfehlungssystem für potenziell interessante Fragen wäre großartig.
Steffen
9

Ich habe auch über die Tag-Vorhersage nachgedacht, die Idee gefällt mir. Ich habe das Gefühl, dass es möglich ist, aber Sie müssen möglicherweise viele Probleme überwinden, bevor Sie zu Ihrem endgültigen Datensatz gelangen. Daher spekuliere ich, dass die Tag-Vorhersage möglicherweise viel Zeit in Anspruch nimmt. Neben falschen Tags kann auch das Limit von maximal 5 Tags eine Rolle spielen. Außerdem, dass einige Tags Unterkategorien von anderen sind (z. B. können "Mehrfachvergleiche" als Unterkategorie von "Signifikanztests" angesehen werden).

Ich habe nicht überprüft, ob in der herunterladbaren Datenbank Abstimmungszeiten enthalten sind, aber ein einfacheres und immer noch interessanteres Projekt könnte darin bestehen, die „endgültige“ Anzahl von Stimmen (möglicherweise nach 5 Monaten) auf einer Frage in Abhängigkeit von den Anfangsstimmen vorherzusagen. und den Zeitpunkt der Annahme einer Antwort.

GaBorgulya
quelle
Soweit ich mich erinnere, haben Sie für jeden Benutzer eine Stimme mit Datum und Fragen-ID.
Chl
(+1) für die Stimmabgabe. Großartige Idee!
Steffen
1
Dieses Projekt scheint großartig zu sein, besonders wenn wir die Anzahl der vpvotes für den Benutzer sehr bald vorhersagen. Eine weitere Arbeit kann darin bestehen, dem Benutzer zu sagen, was seine Frage zurückhält und welche Verbesserung seine Frage populär machen kann. Wie auch immer, die Auswahl eines Features ist wirklich eine wichtige und herausfordernde Aufgabe, und die Leistung solcher Vorhersagen hängt stark von dieser Auswahl ab. TL; DR Ich mag Ihre Idee
Isaac
2

Das ist eine gute Frage. Ich habe auch gedacht, dass die öffentlich verfügbaren StackExchange-Datasets gute Themen für die Analyse sind. Diese sind so ungewöhnlich, dass sie auch gute Testbedingungen für neue statistische Methoden sein könnten. Eine so große Menge gut strukturierter Daten zu haben, ist auf jeden Fall ungewöhnlich.

Kardinal schlug eine Reihe von Dingen vor, die für StackExchange tatsächlich nützlich wären. Ich werde mich nicht darauf beschränken.

Hier ist ein offensichtlicher Kandidat für die Analyse, obwohl ihm keine offensichtliche Verwendung in den Sinn kommt. Es ist ein bemerkenswerter Effekt, dass Benutzer mit hohen Wiederholungszahlen eher positive Bewertungen erhalten, wenn andere Dinge gleich sind. Dieser Effekt ist jedoch wahrscheinlich nicht einfach zu modellieren. Da es nicht einfach ist, die Nützlichkeit zwischen Benutzern zu vergleichen, ist es naheliegend, anzunehmen, dass die Antworten eines Benutzers immer gleich nützlich sind (im Allgemeinen nicht wahr, aber man muss irgendwo anfangen) und dann einen inflationären Ausdruck hinzuzufügen, um seine zunehmende Reputation zu erklären . Man könnte dann (ich nehme an) in einigen Begriffen hinzufügen, dass seine Antworten mit zunehmender Erfahrung besser würden. Vielleicht könnte dies durch eine Art Zeitreihe gehandhabt werden. Ich bin nicht sicher, wie sich das Datenintervall darauf auswirken würde. Es könnte eine interessante Übung sein.

Ich werde weitere Beispiele hinzufügen, wenn ich an sie denke.

Kennt jemand statistische Forschungsberichte, die auf SE-Daten basieren? Auch Isaac erwähnt , dass die Datenfehler hat. Weiß jemand mehr darüber?

Faheem Mitha
quelle
Dies ist in der Tat eine interessante Frage, die AndyW meines Erachtens vor einiger Zeit in einem Blogbeitrag zu analysieren begann. Ich finde Ihre Aussage, dass es einen "spürbaren" solchen Effekt gibt, der meines Erachtens nicht wirklich existiert, wirklich merkwürdig. Anschließend schlagen Sie einen Weg vor, dies zu modellieren. Umfasst dies normalerweise nicht den Versuch, die genaue Frage zu beantworten, die Sie sagen, und die bereits eine positive Antwort hat?
Kardinal
@ Cardinal: Hast du einen Link zum Blog-Post? Ich bin mir nicht sicher, ob ich deinen letzten Satz verstehe. Tes, ich denke, der Effekt ist real und spürbar, zumindest wenn der Name des Benutzers Skeet ist, aber zu diesem Zeitpunkt ist dies nur ein anekdotischer, wenn auch starker Eindruck. Wenn Sie möchten, können Sie den "spürbaren Effekt" durch eine Hypothese ersetzen. Die Analyse würde natürlich versuchen, dies zu bestätigen oder zu leugnen sowie die Stärke des Effekts zu messen, falls vorhanden.
Faheem Mitha