Statistiche per siti di incontri online


10

Sono curioso di sapere come un sistema di incontri online potrebbe utilizzare i dati del sondaggio per determinare le partite.

Supponiamo che abbiano dati sui risultati delle partite precedenti (ad es. 1 = felicemente sposato, 0 = nessuna seconda data).

Supponiamo quindi che abbiano avuto 2 domande sulle preferenze,

  • "Quanto ti piacciono le attività all'aria aperta? (1 = fortemente antipatia, 5 = fortemente simile)"
  • "Quanto sei ottimista riguardo alla vita? (1 = fortemente antipatia, 5 = fortemente simile)"

Supponi anche che per ogni domanda di preferenza abbiano un indicatore "Quanto è importante che il tuo coniuge condivida la tua preferenza? (1 = non importante, 3 = molto importante)"

Se hanno quelle 4 domande per ciascuna coppia e un risultato sul fatto che la partita sia stata un successo, qual è un modello di base che userebbe tali informazioni per prevedere le partite future?


2
Ho pensato che accadesse una partita di successo quando la ragazza è carina o il maschio è ricco. Tutto il resto è secondario.
user4951

4
Controlla blog.okcupid.com - da qualche parte parlano dei modelli di corrispondenza sottostanti.
Felix S,

Puoi dire su quale tipo di cose vorresti approfondire? La risposta di Michael è una panoramica piuttosto solida.
Dan

Se leggi il brevetto (brevetto 6.735.568 - google.com/… ) per EHarmony, il loro sistema utilizza una combinazione di Principle Component Analysis, Factor Analysis e utilizza una rete neurale. Come altri hanno già detto, metodi come K-NN, CARTS e GLM funzionerebbero bene.
Chris Simokat,

@ChrisSimokat - WOW! Grazie mille per il fantastico link. È interessante però. Non avrei mai pensato che potessi "copyright" metodi e algoritmi statistici.
d_a_c321

Risposte:


4

Una volta ho parlato con qualcuno che lavora per uno dei siti di incontri online che utilizza tecniche statistiche (probabilmente preferirebbero non dire chi). È stato piuttosto interessante - per cominciare hanno usato cose molto semplici, come i vicini più vicini con distanze euclidie o L_1 (blocco di città) tra i vettori di profilo, ma si è discusso se abbinare due persone troppo simili fosse un bene o un male cosa. Ha poi continuato a dire che ora hanno raccolto molti dati (chi era interessato a chi, chi ha frequentato chi, che si è sposato, ecc. Ecc.), Li stanno usando per riqualificare costantemente i modelli. Funzionano in un framework batch incrementale, in cui aggiornano periodicamente i loro modelli utilizzando batch di dati, quindi ricalcolano le probabilità di corrispondenza sul database. Roba abbastanza interessante, ma io '


3

Hai chiesto un modello semplice. Ecco come vorrei iniziare con il codice R:

 glm(match ~ outdoorDif*outdoorImport + optimistDif*optimistImport,
     family=binomial(link="logit"))

outdoorDif = la differenza delle risposte di due persone su quanto apprezzano le attività all'aperto. outdoorImport = la media delle due risposte sull'importanza di una partita per quanto riguarda le risposte sul godimento delle attività all'aperto.

* Indica che i termini precedenti e seguenti sono interagiti e inclusi anche separatamente.

Suggerisci che i dati delle partite siano binari con le uniche due opzioni, "felicemente sposati" e "senza una seconda data", quindi è quello che ho assunto nella scelta di un modello logit. Questo non sembra realistico. Se hai più di due possibili esiti, dovrai passare a un log multinomiale o ordinato o ad alcuni di questi modelli.

Se, come suggerisci, alcune persone hanno più tentativi di corrispondenze, probabilmente sarebbe una cosa molto importante provare a tenere conto del modello. Un modo per farlo potrebbe essere quello di avere variabili separate che indicano il numero di precedenti tentativi di corrispondenza per ogni persona, quindi interagire con i due.


Grazie per l'ottima risposta .. Ti sto dando la generosità! :) Sembra un buon approccio. Forse se avessi N domande che rientrano nelle categorie M (es., Domande di atletica leggera) potresti arricchire il modello usando una media dell'importanza e delle differenze all'interno di quella categoria e aggiungerlo come termine aggiuntivo. Non è perfetto, ma potrebbe essere un modo semplice per catturare l'interazione di diverse variabili correlate. Grazie ancora, sarei felice di sentire qualsiasi altro pensiero che non abbia dato la tua risposta;).
d_a_c321

Non dovresti prima normalizzare le risposte? Se a tutti piaceva la vita all'aria aperta, la risposta all'esterno dovrebbe diventare meno rilevante, perché sarebbe un cattivo predittore di compatibilità.
Sklivvz,

@Skliwz, non sono sicuro di come normalizzeresti una risposta a scelta multipla (ordinale). Inoltre, ricorda che le trasformazioni lineari di variabili predittive continue sono talvolta desiderabili per i motivi discussi qui: stats.stackexchange.com/q/7112/3748 e qui: stats.stackexchange.com/q/19216/3748 ma non cambieranno il previsioni di modelli che escludono alcuni problemi computazionali insoliti. Se a tutti piacciono le attività all'aperto, anche la risposta esterna è meno pertinente, ma non penso che sia davvero un problema per il modello, come ho specificato. (Non che il mio modello sia perfetto)
Michael Bishop il

1

Un approccio semplice sarebbe il seguente.

Per le due domande di preferenza, prendi la differenza assoluta tra le risposte dei due rispondenti, dando due variabili, diciamo z1 e z2, anziché quattro.

Per le domande importanti, potrei creare un punteggio che combini le due risposte. Se le risposte fossero, diciamo, (1,1), darei un 1, un (1,2) o (2,1) ottiene un 2, un (1,3) o (3,1) ottiene un 3, un (2,3) o (3,2) ottiene un 4 e un (3,3) ottiene un 5. Chiamiamo questo "punteggio di importanza". Un'alternativa sarebbe solo usare max (response), dando 3 categorie invece di 5, ma penso che la versione a 5 categorie sia migliore.

Ora creerei dieci variabili, x1 - x10 (per concretezza), tutte con valori predefiniti pari a zero. Per quelle osservazioni con un punteggio di importanza per la prima domanda = 1, x1 = z1. Se anche il punteggio di importanza per la seconda domanda = 1, x2 = z2. Per quelle osservazioni con un punteggio di importanza per la prima domanda = 2, x3 = z1 e se il punteggio di importanza per la seconda domanda = 2, x4 = z2 e così via. Per ogni osservazione, esattamente uno di x1, x3, x5, x7, x9! = 0, e allo stesso modo per x2, x4, x6, x8, x10.

Avendo fatto tutto ciò, avrei eseguito una regressione logistica con il risultato binario come variabile target e x1 - x10 come regressori.

Versioni più sofisticate di questo potrebbero creare punteggi di importanza maggiore consentendo di trattare in modo diverso l'importanza dell'intervistato maschile e femminile, ad esempio a (1,2)! = A (2,1), dove abbiamo ordinato le risposte per sesso.

Un difetto di questo modello è che potresti avere più osservazioni della stessa persona, il che significherebbe che gli "errori", parlando liberamente, non sono indipendenti tra le osservazioni. Tuttavia, con molte persone nel campione, probabilmente lo ignorerei, per un primo passaggio, o costruisco un campione in cui non c'erano duplicati.

Un altro difetto è che è plausibile che all'aumentare dell'importanza, aumenterebbe anche l'effetto di una data differenza tra le preferenze su p (fail), il che implica una relazione tra i coefficienti di (x1, x3, x5, x7, x9) e anche tra i coefficienti di (x2, x4, x6, x8, x10). (Probabilmente non è un ordinamento completo, poiché non è a priori chiaro per me come un punteggio di importanza (2,2) sia correlato a un punteggio di importanza (1,3)). Tuttavia, non lo abbiamo imposto nel modello. Probabilmente lo ignorerei all'inizio, e vedrei se sono sorpreso dai risultati.

Il vantaggio di questo approccio è che non impone alcuna ipotesi sulla forma funzionale della relazione tra "importanza" e la differenza tra le risposte di preferenza. Ciò contraddice il precedente commento sul deficit, ma ritengo che la mancanza di una forma funzionale imposta sia probabilmente più vantaggiosa della relativa incapacità di tenere conto delle relazioni attese tra i coefficienti.

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.