Como fornecer resultados mais relevantes com a Classificação Ponderada por Múltiplos Fatores

Preciso fornecer uma classificação ponderada em mais de 2 fatores, ordenados por "relevância". No entanto, os fatores não são completamente isolados, pois quero que um ou mais fatores afetem a "urgência" (peso) dos outro

Exemplo: conteúdo contribuído articles) pode ser votado para cima / para baixo e, portanto, possui uma classificação; eles têm uma data de postagem e também são marcados com categorias. Os usuários escrevem os artigos e podem votar, e podem ou não ter algum tipo de classificação (especialista, etc). Provavelmente semelhante ao StackOverflow, certo?

Quero fornecer a cada usuário uma lista de artigos agrupados por tag, mas classificados por "relevância", em querelevânci é calculado com base na classificação e na idade do artigo e possivelmente afetado pela classificação do autor. I.E. um artigo altamente classificado que foi escrito há vários anos pode não ser necessariamente tão relevante quanto um artigo médio classificado ontem. E talvez se um artigo fosse escrito por um especialista, ele seria tratado como mais relevante do que um artigo de "Joe Schmoe"

Outro bom exemplo seria atribuir aos hotéis uma "meta pontuação" composta por preço, classificação e atrações.

Minha pergunta é: qual é o melhor algoritmo para classificação de múltiplos fatores? Pode ser uma duplicata deaquela questã, mas estou interessado em um algoritmo genérico para qualquer número de fatores (uma expectativa mais razoável é de 2 a 4 fatores), de preferência uma função "totalmente automática" que não precise ajustar ou exigir a entrada do usuário, e Não consigo analisar a álgebra linear e a loucura do vetor própri

Possibilidades que encontrei até agora:

Nota:S é a "pontuação de classificação"

"Ponderado linearmente" - use uma função como:S = (w1 * F1) + (w2 * F2) + (w3 * F3), Ondewx são pesos arbitrariamente atribuídos eFx são os valores dos fatores. Você também gostaria de normalizarF (ou seja,Fx_n = Fx / Fmax). Eu acho que é assim que pesquisa @Lucene funciona. "Base-N ponderada" - mais como agrupar do que pesar, é apenas uma ponderação linear em que os pesos aumentam múltiplos da base 10 (um princípio semelhante ao Especificidade do seletor CSS), para que os fatores mais importantes sejam significativamente mais altos:S = 1000 * F1 + 100 * F2 + 10 * F3 .... Valor verdadeiro estimado (ETV) - aparentemente é isso queGoogle Analytics apresentado em seus relatórios, onde o valor de um fator influencia pesos) outro fator - a conseqüência é escolher valores mais "estatisticamente significativos". O link explica muito bem, então aqui está apenas a equação:S = (F2 / F2_max * F1) + ((1 - (F2 / F2_max)) * F1_avg), OndeF1 é o fator "mais importante" ("taxa de rejeição" no artigo) eF2 é o fator "modificação de significância" ("visitas" no artigoBayesian Estimate - parece realmente semelhante ao ETV, é assim que a IMDb calcula sua classificação. Vejoeste post StackOverflow para explicação; equação:S = (F2 / (F2+F2_lim)) * F1 + (F2_lim / (F2+F2_lim)) × F1_avg, OndeFx são iguais a # 3 eF2_lim é o limite mínimo para o fator "significância" (ou seja, qualquer valor menor que X não deve ser considerado

s opções 3 ou 4 parecem realmente promissoras, já que você realmente não precisa escolher um esquema de ponderação arbitrário como você faz nos itens 1 e 2, mas o problema é como você faz isso por mais de dois fatore

Eu também me deparei com omplementação SQL para um algoritmo de ponderação de dois fator, que é basicamente o que eu preciso escrever eventualment

questionAnswers(2)

yourAnswerToTheQuestion