Personalized PageRank
Índice
O que é
O PageRank é um algoritmo de análise de grafos originalmente desenvolvido pelo Google para ranquear páginas web. Ele modela um "caminhante aleatório" que navega pelo grafo: a cada passo, o caminhante segue uma aresta aleatória com probabilidade d (damping factor) ou "teletransporta" para um nó aleatório do grafo com probabilidade 1 - d. A cada vez que o caminhante visita um nó, ele acumula um score, então nós que receberem mais visitas terão scores maiores, o que costuma acontecer com nós que possuem muitas conexões em sua direção.
Na abordagem do Google, isso serve para identificar páginas web com mais referências nos outros sites, trazendo ao usuário páginas mais confiáveis e relevantes.
O Personalized PageRank (PPR) é uma variante onde o vetor de teletransporte não é uniforme — em vez de se teletransportar para qualquer nó com igual probabilidade, o caminhante se teletransporta apenas para um conjunto-semente de nós de interesse. Isso concentra a propagação de scores na vizinhança topológica desse conjunto.
PageRank padrão: teletransporte → qualquer nó (distribuição uniforme)
Personalized PR: teletransporte → nós-semente (distribuição personalizada)
Como Funciona
Objetivo no Kairos
O PPR é o segundo estágio do "Diamante de Convergência" dentro do algoritmo de Entity Linking. Após o KNN retornar candidatos semanticamente próximos (via similaridade vetorial), o PPR valida esses candidatos usando a estrutura hierárquica da ontologia ESCO persistida no Neo4j.
A intuição é: se uma competência candidata é semanticamente correta para o contexto, ela deve também ser topologicamente coerente com as demais competências do conjunto-semente. competências que recebem votos de múltiplos vizinhos da ontologia (via [:BROADER], [:NARROWER], [:ESSENTIAL]) são mais confiáveis do que competências que aparecem no Top-K apenas por coocorrência semântica.
Dessa forma, enquanto o KNN é uma heurística de recall (focando-se em não descartar candidatos corretos), o PPR é uma heurística de precisão (focando-se em filtrar os candidatos considerados erroneamente como corretos).
O Grafo ESCO como Essência do PPR
O PPR opera sobre o grafo de habilidades ESCO persistido no Neo4j:
| Aresta | Semântica |
|---|---|
[:BROADER] | Skill → conceito pai (mais genérico) |
[:NARROWER] | Skill → especialização (mais específica) |
[:ESSENTIAL] | Skill → outra Skill essencial para ela (relacionamento entre habilidades) |
O PPR inicia com pesos não-nulos de teleporte apenas nos nós Top-K retornados pelo KNN, os quais recebem o mesmo peso de 1/K de chance de teleporte, sendo denominados conjunto-semente. A propagação flui pelas arestas do grafo, e competências que estão em regiões densamente conectadas ao conjunto-semente acumulam score mais alto.
A escolha de pesos uniformes 1/K para os nós-semente, em vez de pesos proporcionais à similaridade de cosseno, foi uma decisão tomada após experimentação. Pesos proporcionais ao score de similaridade tendiam a criar uma diferenciação muito pequena entre os candidatos, resultando em pouca influência topológica no PPR. Então se mostrou mais relevante apenas garantir que os candidatos que passam pelo threshold no KNN influenciem mais o algoritmo que os demais, mesmo que, entre eles, a influência seja a mesma. Por outro lado, para o cálculo da pontuação final de cada candidato, o score de similaridade de cosseno é aplicado.
Parâmetros do PPR
| Parâmetro | Papel | Impacto de aumentar |
|---|---|---|
damping_factor | Probabilidade de seguir uma aresta vs. teletransportar | Maior exploração do grafo, mais influência de nós distantes |
max_iterations | Número de iterações até convergência | Melhor convergência, maior custo computacional |
knn_threshold | Score mínimo de cosseno para entrar no PPR | Menos falsos positivos, menor recall |
top_k | Número de candidatos enviados como semente | Mais cobertura, maior risco de contaminar o PPR com irrelevantes |
O PPR é utilizado apenas para soft skills e knowledge — e como fallback para hard skills cujo fuzzy match ficou abaixo do threshold 0.9. Para hard skills com nomes canônicos curtos ("Python", "Docker"), o fuzzy matching é mais preciso por evitar a assimetria de template de embedding. Ver Entity Linker.
Como é calculada a pontuação final de um candidato?
PageRank Global ()
Na etapa de construção inicial do grafo de conhecimento onde as competências ESCO são indexadas, cada nó recebe um score de PageRank global. Esse score ajuda a identificar hubs de conexões que tendem a ter pontuações mais altas tanto no PageRank padrão como no PPR.
Personalized PageRank ()
Durante a execução do PPR, cada candidato recebe um score de PPR que reflete sua relevância topológica em relação ao conjunto-semente.
Normalização PPR/PR: Por que ela Importa
Sem normalização, nós com alto grau de conectividade na ontologia (hubs) acumulam PageRank alto naturalmente e tendem a dominar o resultado do PPR mesmo quando não são os melhores matches semânticos. Com essa normalização, são priorizados os nós que pertençam ao top-K e que sejam habilidades mais específicas e não hubs genéricos de conexões, o que auxilia a destacar competências mais relevantes e específicas para o contexto, em vez de competências genéricas que aparecem em muitos contextos.
| Cenário | Sem PPR/PR | Com PPR/PR |
|---|---|---|
| Hub genérico | Score inflacionado por centralidade | Score deflacionado pelo PR global |
| Competência específica com poucas conexões | Score baixo por isolamento | Score corrigido, sem penalizar especialização |
Similaridade por cosseno
Por mais que a normalização PPR/PR possua maior influência, são ambos algoritmos não determinísticos e, portanto, as competências finais tendem a variar, porém o top-K vai ser sempre o mesmo. Então isso ajudou na definição do threshold de score final, de 0.59, ajudando a manter uma certa consistência nos resultados e com uma margem mais evidente de diferenciação entre positivos e falsos positivos.
Demonstração / Exemplos
Parâmetros
| Parâmetro | Valor | Papel |
|---|---|---|
damping | 0.6 | Número máximo de candidatos retornados pelo índice HNSW |
iterations | 25 | Número de iterações do algoritmo |
threshold | 0.59 | Score final mínimo para um candidato ser considerado como associação com a competência extraída |
No artigo original, o Google utilizava damping = 0.85. Para o Kairos, optou-se por um damping mais baixo de 0.6 para aumentar a influência do conjunto-semente de candidatos retornados pelo KNN.
A quantidade de iterações foi definida de forma empírica: aumentava a quantidade de iterações e reduzia o damping para aumentar a influência topológica do conjunto-semente, mas isso também aumentava o custo computacional. O valor de 25 iterações foi um ponto de equilíbrio onde os scores já estavam razoavelmente estabilizados sem exigir um tempo de execução muito alto.
Quando ao threshold, também foi definido de forma empírica, com validação humana e não automatizada, buscando-se um ponto de corte que trouxesse candidatos mais relevantes pensando do ponto de vista do usuário.
PPR Inverte a Ordem do KNN
| Posição KNN | Label | Score KNN | Score Final | Posição Final |
|---|---|---|---|---|
| 1 | "dirigir, supervisionar e coordenar projetos" | 0.821 | 0.702 | 3 |
| 2 | "gestão de projetos informáticos" | 0.818 | 0.591 | 4 |
| 3 | "gestão ágil de projetos" | 0.816 | — | eliminado |
| 4 | "gestão de projetos lean" | 0.815 | — | eliminado |
| 5 | "metodologias de gestão de projetos de informática" | 0.797 | — | eliminado |
| 6 | "gestão de projetos Prince2" | 0.792 | — | eliminado |
| 7 | "gestão de processos" | 0.791 | — | eliminado |
| 8 | "gerir projetos de desenvolvimento de conteúdos" | 0.787 | 0.918 | 1 |
"Gerir projetos de desenvolvimento de conteúdos" estava em 8ª posição no KNN e alcançou score PPR de 0.918, o maior de todos, enquanto "gestão de projetos lean", em 4ª posição no KNN, foi eliminado por não receber visitas suficientes na propagação do PPR, sendo, provavelmente, um nó mais isolado ou menos conectado à região do grafo onde os demais candidatos estão.
PPR Elimina Candidatos Hub
- Competência Extraída: Comunicação
- Hub Genérico: "operar equipamento de comunicação"
- Competência Específica: "comunicar com colegas e clientes"
| Cenário | Nome | Top-K KNN | PR_global | score_PPR(aprox.) | score_PPR/score_PR |
|---|---|---|---|---|---|
| Hub genérico | operar equipamento de comunicação | 9 | 8.90 | 0.90 | 0.10 |
| Competência específica | comunicar com colegas e clientes | 1 | 0.49 | 0.44 | 0.89 |
Para habilidades de comunicação, a normalização deu maior relevância a "comunicar com colegas e clientes", que é uma habilidade mais específica e relevante, do que "operar equipamento de comunicação", que é um hub genérico.
ADR's Relacionadas
| ADR | Data | Decisão |
|---|---|---|
| ADR-034 | Abr 2026 | Introdução do PPR como segundo estágio do Duplo Diamante de Collective Entity Linking |
| ADR-044 | Jun 2026 | Refinamento com pesos uniformes 1/K e normalização PPR/PR global, substituindo pesos proporcionais ao cosine similarity que produziam baixa diferenciação entre candidatos |