Cómo proporcionar los resultados más relevantes con la Clasificación ponderada de múltiples factores

Necesito proporcionar una clasificación ponderada de más de 2 factores, ordenados por "relevancia". Sin embargo, los factores no están completamente aislados, ya que quiero que uno o más factores afecten la "urgencia" (peso) de los demás.

Ejemplo: contenido contribuido artículo) puede ser votado arriba / abajo y, por lo tanto, tener una calificación; tienen una fecha de publicación y también están etiquetados con categorías. Los usuarios escriben los artículos y pueden votar, y pueden o no tener algún tipo de clasificación (expertos, etc.). Probablemente similar a StackOverflow, ¿verdad?

Quiero proporcionar a cada usuario una lista de artículos agrupados por etiqueta pero ordenados por "relevancia", dondepertinenci se calcula en función de la calificación y la antigüedad del artículo, y posiblemente se vea afectado por la clasificación del autor. ES DECIR. un artículo altamente calificado que fue escrito hace varios años puede no ser necesariamente tan relevante como un artículo de mediano rango escrito ayer. Y tal vez si un artículo fue escrito por un experto, se consideraría más relevante que uno escrito por "Joe Schmoe".

Otro buen ejemplo seríaasignar a los hoteles una "meta puntuación" compuesta por precio, calificación y atracciones.

Mi pregunta es, ¿cuál es el mejor algoritmo para la clasificación de múltiples factores? Esto puede ser un duplicado deesa pregunt, pero estoy interesado en un algoritmo genérico para cualquier número de factores (una expectativa más razonable es de 2 a 4 factores), preferiblemente una función "completamente automática" que no tengo que ajustar o requerir la entrada del usuario, y No puedo analizar el álgebra lineal y la locura del vector propio.

Posibilidades que he encontrado hasta ahora:

Nota:S es el "puntaje de clasificación"

"Ponderado linealmente" - usa una función como:S = (w1 * F1) + (w2 * F2) + (w3 * F3), dóndewx son pesos asignados arbitrariamente yFx son los valores de los factores. También querrás normalizarF (es decir,Fx_n = Fx / Fmax). Creo que así es comoLucene search funciona. "Base-N ponderada": más bien agrupar que ponderar, es solo una ponderación lineal donde los pesos aumentan los múltiplos de la base 10 (un principio similar aCSS selector especificidad), para que los factores más importantes sean significativamente más altos:S = 1000 * F1 + 100 * F2 + 10 * F3 .... Valor verdadero estimado (ETV) - esto es aparentemente lo queGoogle Analytics introducido en sus informes, donde el valor de un factor influye pesos) otro factor: la consecuencia es ordenar valores más "estadísticamente significativos". El enlace lo explica bastante bien, así que aquí está la ecuación:S = (F2 / F2_max * F1) + ((1 - (F2 / F2_max)) * F1_avg), dóndeF1 es el factor "más importante" ("tasa de rebote" en el artículo) yF2 es el factor de "modificación de importancia" ("visitas" en el artículo). Estimación Bayesiana: se parece mucho a ETV, así es como IMDb calcula su calificación. Veresta publicación de StackOverflow para explicación; ecuación:S = (F2 / (F2+F2_lim)) * F1 + (F2_lim / (F2+F2_lim)) × F1_avg, dóndeFx son lo mismo que # 3, yF2_lim es el límite de umbral mínimo para el factor de "importancia" (es decir, no se debe considerar ningún valor menor que X).

Las opciones n. ° 3 o n. ° 4 parecen realmente prometedoras, ya que realmente no tiene que elegir un esquema de ponderación arbitraria como lo hace en los n. ° 1 y n. ° 2, pero el problema es cómo hacer esto por más de dos factore

También encontré elmplementación de @SQL para un algoritmo de ponderación de dos factores, que es básicamente lo que necesitaré para escribir eventualmente.

Respuestas a la pregunta(4)

Su respuesta a la pregunta