Domanda

ho alcune pagine di un sito web e devo creare un ordinamento sulla base di "popolarità" / "attività"

I parametri che devo usare sono:

  • viste alla pagina
  • commenti fatti sulla pagina (c'è un modulo in fondo quando le utilizzazioni possono fare commenti)
  • click fatto per il "Mi Piace" icona

Esistono norme per quello che sarebbe una formula per la popolarità? (Se non opinioni sono troppo buono)

(inizialmente ho pensato di opinioni + 10 * Commenti + 10 likeit *)

È stato utile?

Soluzione

Non esiste una formula standard per questo (come potrebbe esserci?)

Quello che hai appare come una soluzione abbastanza normale, e probabilmente funzionerebbe bene. Naturalmente, si dovrebbe giocare con i 10 di trovare valori che soddisfa le tue esigenze.

A seconda delle esigenze, si potrebbe anche voler aggiungere in un fattore tempo (vale a dire -X punti a settimana), in modo che i vecchi pagine diventano meno popolare. In alternativa, è possibile cambiare le "pagine viste" a "pagine viste nel mese scorso". Ancora una volta, questo dipende dalle vostre esigenze, potrebbe non essere rilevante.

Altri suggerimenti

Si potrebbe fare qualcosa di simile a ciò che YouTube fa - appena lo hanno allineati secondo più grande contare per categoria. Per esempio - I più visti, I più commentati, più è piaciuto. In ogni categoria una pagina diversa potrebbe venire in primo luogo, anche se la classifica potrebbe probabilmente essere correlati. Se avete solo bisogno di un posto singolo, quindi si dovrà trovare una formula di qualche tipo, preferibilmente derivate empiricamente analizzando una serie di dati che già avete e decidere che cosa dovrebbe essere calcolato come buono / cattivo, e lavorando a ritroso per adattarsi un'equazione che misura il vostro decisione.

Si potrebbe anche tentare una macchina di apprendimento approccio a "imparare" quello che un buon ponderazione è per la combinazione di ciascuno di questi numeri come nel tuo esempio formula. Farlo manualmente, non potrebbe anche essere troppo difficile.

Io uso,

(C*comments + L*likeit)*100/views

dove è necessario utilizzare C e L a seconda di quanto apprezzi ogni attributo. Io uso C = 1 e L = 1.

Questo vi dà la percentuale di punti di vista che hanno generato un'azione positiva, rendendo gli elementi con percentuale più alta è la più "popolare". Mi piace questo perché rende possibile per gli elementi più recenti di essere molto popolare in un primo momento, mostrando per primo e ottenere più punti di vista e diventando così meno popolare (o più) fino stabilizzante.

In ogni caso, spero possa essere d'aiuto. PS:. Di avrebbe funzionato lo stesso senza il "* 100", ma mi piace percentuali

In realtà c'è un modo migliore accettato per calcolare questo:
http://www.evanmiller.org/how- non-a-sort-by-media-rating.html

Potrebbe essere necessario combinare 'ama' e 'commenti' in un unico punteggio, assegnando il proprio fattore di ponderazione di ciascuno, prima di inserirlo nella formula come valore 'positiva voto'.

dal link qui sopra:

  

Punteggio = limite inferiore di un intervallo di confidenza Wilson punteggio per un   parametro di Bernoulli

     

Abbiamo bisogno di bilanciare la percentuale di valutazioni positive con   l'incertezza di un piccolo numero di osservazioni. Fortunatamente, il   matematica per questo è stato elaborato nel 1927 da Edwin B. Wilson. Ciò che vogliamo   da porsi è: Dati i feedback che ho, v'è una probabilità del 95% che il   "Reale" frazione del feedback positivi è almeno quello che? Wilson dà la   risposta. Considerando valutazioni solo positivi e negativi (cioè non un   scala a 5 stelle), il limite inferiore per la percentuale di rating positivi   è dato da:    entrare descrizione dell'immagine qui

     

(Usa meno dove si dice più / meno per calcolare il limite inferiore.)   Qui è il osservato frazione del feedback positivi, è la zα/2   (1-α/2) quantile della distribuzione normale standard, ed è il n   numero totale dei rating. La stessa formula implementata in Ruby:

require 'statistics2'

def ci_lower_bound(pos, n, confidence)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-(1-confidence)/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
  

pos è il numero di valutazioni positive, n è il numero totale di   giudizi, e la fiducia si riferisce al livello di confidenza statistica:   scegliere 0.95 di avere una probabilità del 95% che il limite inferiore è corretto, 0,975   avere una probabilità del 97,5%, ecc La Z-score in questa funzione non   cambia, quindi se non si dispone di una statistica comodo pacchetto o se   prestazione è un problema è sempre possibile codificare un valore qui per z.   (Usa 1.96 per un livello di confidenza del 0,95.)

La stessa formula come una query SQL:

SELECT widget_id, ((positive + 1.9208) / (positive + negative) - 
                   1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / 
                          (positive + negative)) / (1 + 3.8416 / (positive + negative)) 
       AS ci_lower_bound FROM widgets WHERE positive + negative > 0 
       ORDER BY ci_lower_bound DESC;

Darei valore commenti più che 'come se fosse se gli inviti contenuti una discussione. Se è solo affermando i fatti, una razione uguale per i commenti e simili conteggio sembra ok (anche se 10 è un po 'troppo, credo ...)

La visita prendere in considerazione il tempo che l'utente ha passato in qualche modo? Si potrebbe utilizzare tale, così, come un 2 seconda vista mezzi meno di 3 minuti a uno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top