Applicazione di metodi di apprendimento automatico nei siti Web StackExchange


37

Ho un corso di Machine Learning questo semestre e il professore ci ha chiesto di trovare un problema del mondo reale e risolverlo con uno dei metodi di machine learning introdotti in classe, come:

Sono uno dei fan di StackOverflow e StackExchange e so che i dump del database di questi siti Web sono forniti al pubblico perché sono fantastici! Spero di poter trovare una buona sfida di apprendimento automatico su questi database e risolverlo.

La mia idea

Mi è venuta in mente un'idea di prevedere i tag per le domande in base alle parole inserite nel corpo della domanda. Penso che la rete bayesiana sia lo strumento giusto per l'apprendimento dei tag per una domanda, ma necessita di ulteriori ricerche. Ad ogni modo, dopo la fase di apprendimento quando l'utente termina di inserire la domanda, è necessario suggerirgli alcuni tag.

Per favore dimmi :

Voglio porre alla comunità delle statistiche come persone esperte le domande ML due:

  1. Pensi che il suggerimento del tag sia almeno un problema che ha qualche possibilità di risolvere? Hai qualche consiglio a riguardo? Sono un po 'preoccupato perché stackexchange non implementa ancora tale funzionalità.

  2. Hai qualche altra idea migliore per il progetto ML basato sul database stackexchange? Trovo davvero difficile trovare qualcosa da imparare dai database di stackexchange.


Considerazione sugli errori del database: vorrei sottolineare che sebbene i database siano enormi e abbiano molti casi, non sono perfetti e sono privi di errori. Quello ovvio è l'età degli utenti che non è affidabile. Anche i tag selezionati per la domanda non sono corretti al 100%. Comunque, dovremmo considerare la percentuale di correttezza dei dati nella selezione di un problema.

Considerazione del problema stesso: il mio progetto non dovrebbe riguardare data-miningo qualcosa del genere. Dovrebbe essere un'applicazione dei metodi ML nel mondo reale.

Risposte:


28

, penso che la previsione dei tag sia interessante e per la quale hai una buona possibilità di "successo".

Di seguito sono riportati alcuni pensieri che potrebbero potenzialmente aiutare nel brainstorming e nella successiva esplorazione di questo argomento. Penso che ci siano molte direzioni potenzialmente interessanti che un simile progetto potrebbe prendere. Immagino che un serio tentativo solo di uno o due dei sotto renderebbe un progetto più che adeguato e probabilmente ti verranno in mente domande più interessanti di quelle che ho posto.

Ho intenzione di avere una visione molto ampia di ciò che è considerato l'apprendimento automatico . Indubbiamente alcuni dei miei suggerimenti sarebbero meglio classificati come analisi dei dati esplorativi e analisi statistiche più tradizionali . Ma, forse, ti aiuterà in qualche modo a formulare le tue interessanti domande. Noterai che provo a rispondere a domande che ritengo interessanti in termini di miglioramento della funzionalità del sito. Naturalmente, ci sono anche molte altre domande interessanti che potrebbero non essere legate alla cordialità del sito.

  1. Analisi descrittiva di base del comportamento degli utenti : suppongo che ci sia un chiaro schema ciclico settimanale per la partecipazione degli utenti su questo sito. Quando il sito riceve più traffico? Come appare, ad esempio, il grafico della partecipazione degli utenti sul sito stratificato per ora durante la settimana? Vorresti adeguarti ai potenziali cambiamenti nel tempo della popolarità complessiva del sito. Questo porta alla domanda: come è cambiata la popolarità del sito dall'inizio? In che modo la partecipazione di un utente "tipico" varia nel tempo dall'adesione? Immagino che si avvii abbastanza rapidamente all'inizio, quindi sugli altipiani, e probabilmente si dirige a sud dopo qualche settimana o giù di lì.
  2. Presentazione ottimale di domande e risposte : ottenere informazioni sulla prima domanda sembra naturalmente portare ad alcune domande più interessanti (in senso ML). Di 'che ho una domanda a cui ho bisogno di una risposta. Se voglio massimizzare la mia probabilità di ottenere una risposta, quando devo inviarla? Se rispondo a una domanda e desidero massimizzare il conteggio dei voti, quando devo inviare la mia risposta? Forse le risposte a questi due sono molto diverse. In che modo varia in base all'argomento della domanda (ad esempio, come definito dai tag associati)?
  3. Biclustering di utenti e argomenti : quali utenti sono più simili in termini di interessi, di nuovo, forse come misurato dai tag? Quali argomenti sono più simili in base a quali utenti partecipano? Puoi trovare una bella visualizzazione di queste relazioni? Gli spunti di questo sarebbero tentare di prevedere quale utente (i) ha più probabilità di inviare una risposta a una domanda particolare. (Immagina di fornire tale tecnologia a SE in modo che gli utenti possano essere informati di domande potenzialmente interessanti, non semplicemente sulla base di tag.)
  4. Clustering dei responder per comportamento : sembra che ci siano alcuni diversi modelli comportamentali di base riguardo al modo in cui i responder utilizzano questo sito. Puoi inventare funzionalità e un algoritmo di clustering per rispondere ai cluster in base al loro comportamento. I cluster sono interpretabili?
  5. Suggerimenti di nuovi tag : è possibile fornire suggerimenti per nuovi tag basati sull'in deduzione di argomenti dalle domande e risposte attualmente nel database. Ad esempio, credo che il tag [miscela-modello] sia stato recentemente aggiunto perché qualcuno ha notato che stavamo ricevendo un sacco di domande correlate. Tuttavia, sembra che un approccio di recupero delle informazioni dovrebbe essere in grado di estrarre tali argomenti direttamente e potenzialmente suggerirli ai moderatori.
  6. Apprendimento semi-supervisionato delle posizioni geografiche : ( Questo potrebbe essere un po 'permaloso dal punto di vista della privacy. ) Alcuni utenti elencano dove si trovano. Altri no. Usando modelli di utilizzo e potenzialmente vocabolario, ecc., Puoi mettere una regione di confidenza geografica nella posizione di ciascun utente? Intuitivamente, sembrerebbe che questo sarebbe (molto) più accurato in termini di longitudine rispetto alla latitudine.
  7. Segnalazione automatica di possibili duplicati e domande altamente correlate : il sito ha già un tipo simile di funzionalità con la barra correlata sul margine destro. Trovare duplicati quasi esatti e suggerirli potrebbe essere utile per i moderatori. Farlo su tutti i siti della comunità SE sembrerebbe nuovo.
  8. Previsione di Churn e fidelizzazione degli utenti : utilizzando le funzionalità della cronologia di ciascun utente, puoi prevedere la prossima volta che ti aspetti di vederli? Puoi prevedere la probabilità che tornino al sito in base a quanto tempo sono stati assenti e le caratteristiche del loro comportamento passato? Questo potrebbe essere usato, ad esempio, per cercare di notare quando gli utenti sono a rischio di "abbandono" e coinvolgerli (per esempio via e-mail) nel tentativo di mantenerli. Un approccio tipico è quello di inviare un'e-mail dopo un determinato periodo di inattività. Ma ogni utente è molto diverso e ci sono molte informazioni su molti utenti, quindi potrebbe essere sviluppato un approccio più personalizzato.

1
@ cardinale. Questa è una risposta meravigliosa, e data la disponibilità di tutti questi dati, sarebbe un progetto affascinante.
richiemorrisroe,

1
La maggior parte dei tuoi suggerimenti mi sembra pratica e legata alla ML. Ad ogni modo, alcuni di essi dovrebbero trattare dati errati e incompleti. Purtroppo non ho una profonda conoscenza del data mining e della pulizia né abbastanza tempo per impararlo. Spero che altri membri delle statistiche lavorino su queste idee e facciano un contributo alla comunità SE e le colpiscano :)
Isaac

2
@Isaac, l'elenco che ho fornito non era destinato a sopraffare. Doveva semplicemente aiutare potenzialmente con il brainstorming. A seconda della natura del progetto, riterrei che gestirne 1-2 sarebbe il massimo che ci si potrebbe aspettare. Saluti.
cardinale il

1
tutte le idee sono buone o fantastiche, ma mi piace il "Biclustering di utenti e argomenti" ... un sistema di raccomandazione per domande potenzialmente interessanti sarebbe fantastico.
Steffen,

9

Stavo pensando anche alla previsione dei tag, mi piace l'idea. Ho la sensazione che sia possibile, ma potresti dover superare molti problemi prima di arrivare al tuo set di dati finale. Quindi suppongo che la previsione del tag potrebbe richiedere molto tempo. Oltre ai tag errati, il limite di massimo 5 tag può avere un ruolo. Inoltre, alcuni tag sono sottocategorie di altri (ad es. "Confronti multipli" possono essere visualizzati come sottocategoria di "test di significatività").

Non ho verificato se i tempi di votazione sono inclusi nel database scaricabile, ma un progetto più semplice e comunque interessante potrebbe essere la previsione del numero "finale" di voti (forse dopo 5 mesi) su una domanda a seconda dei voti iniziali, e i tempi di accettazione di una risposta.


Da quello che mi sembra di ricordare, per ogni utente hai il suo voto con data + ID domanda.
chl

(+1) per la previsione del voto. Grande idea!
Steffen,

1
Questo progetto sembra eccezionale, soprattutto se prevediamo molto presto il conteggio di vpvote per l'utente. Un ulteriore lavoro può essere quello di dire all'utente cosa trattiene la sua domanda e quale miglioramento può rendere popolare la sua domanda. Comunque, come sempre la scelta della funzione è davvero un compito importante e stimolante e le prestazioni di tali previsioni dipendono fortemente da questa selezione. TL; DR Mi piace la tua idea
Isaac

2

Questa è una buona domanda Anch'io ho pensato che i set di dati StackExchange disponibili pubblicamente sarebbero stati ottimi argomenti per l'analisi. Questi sono sufficientemente insoliti da poter essere anche buoni banchi di prova per nuovi metodi statistici. Avere una così grande quantità di dati ben strutturati è insolito, in ogni caso.

il cardinale ha suggerito un mucchio di cose che sarebbero effettivamente utili per StackExchange. Non mi limiterò a questo.

Ecco un candidato ovvio per l'analisi, anche se non ha un uso ovvio che mi viene in mente. È evidente che gli utenti con un alto livello di reputazione hanno maggiori probabilità di ottenere voti positivi, a parità di altre condizioni. Tuttavia, questo effetto è probabilmente non banale da modellare. Dal momento che non possiamo confrontare l'utilità tra gli utenti molto facilmente, un approccio ovvio sarebbe quello di supporre che le risposte degli utenti siano sempre ugualmente utili (non vere in generale ma si deve iniziare da qualche parte) e quindi aggiungere un termine inflazionistico per spiegare la sua crescente reputazione . Si potrebbe quindi (suppongo) aggiungere alcuni termini che spiegherebbero che le sue risposte migliorano con l'aumentare dell'esperienza. Forse questo potrebbe essere gestito da una sorta di serie temporale. Non sono sicuro di come l'intervallo di dati potrebbe influire su questo. Potrebbe essere un esercizio interessante.

Aggiungerò altri esempi se / quando ci penso.

Qualcuno è a conoscenza di articoli di ricerca statistica basati su dati SE? Inoltre, Isaac ha affermato che i dati contengono errori. Qualcuno sa qualcosa di più su questo?


Questa è, in effetti, una domanda interessante e che credo che AndyW abbia iniziato ad analizzare in un post sul blog e una domanda qualche tempo fa. Trovo curiosa la tua affermazione che esiste un effetto "evidente", che non sono del tutto convinto che esista effettivamente. Quindi continui a suggerire un modo per modellarlo, ma di solito questo non include il tentativo di rispondere alla domanda precisa che dici ha già una risposta affermativa?
cardinale il

@cardinal: hai un link al post del blog? Non sono sicuro di aver capito la tua ultima frase. Tes, penso che l'effetto sia reale e evidente, almeno se il nome dell'utente è Skeet, ma a questo punto questa è solo un'impressione aneddotica, sebbene forte. Quindi, se preferisci, puoi sostituire "l'effetto evidente" con l'ipotesi. L'analisi tenterebbe ovviamente di confermarlo o negarlo, oltre a misurare la forza dell'effetto se esistesse.
Faheem Mitha,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.