Статьи

Графики для HR Analytics

Первоначально Написал Рик Ван Брюгген . Первоначально опубликовано в его блоге .

Недавно я имел удовольствие выступить с докладом на встрече по науке в Брюсселе . Там есть действительно классные люди, с интересными вещами. Я говорил о том, как графические базы данных, такие как Neo4j, могут внести вклад в HR Analytics. Вот слайды доклада:

Мои основные моменты, которые я хотел донести, где это:

    • функция HR могла бы действительно выиграть от более реального понимания того, как информация течет в ее организации. Информация течет через * реальную * социальную сеть людей в вашей организации — независимо от вашей «официальной» иерархической / матричной организационной структуры. Поэтому логически следует, что функция HR будет полезна для понимания и анализа этого информационного потока посредством анализа социальных сетей.
    • При наборе персонала можно много чего сказать о интеграции информации социальных сетей в ваш процесс найма. Это логично: социальная сеть расскажет нам что-то о социальных, дружеских связях между людьми — и это расскажет нам о том, насколько вероятно, что они сформируют хорошие, эффективные команды. Несколько платформ онлайн-найма начинают использовать это — например. Glassdoor использует Neo4j для хранения более 70% социограммы Facebook — чтобы действительно дифференцировать себя. Они хотят предлагать и рекомендовать работу, которую люди действительно хотят.
    • В управлении компетенциями крупные организации могут многого добиться, точно понимая различные компетенции, которыми обладают / хотят иметь люди. Собирая междисциплинарные, часто временные глобальные команды, это может значительно сэкономить время для офисов проектов, имеющих на это полномочия.

Для всех этих трех точек графическая база данных, такая как Neo4j, может действительно помочь. Поэтому я собрал образец набора данных, который должен это объяснить. Вообще говоря, эти запросы делятся на три категории:

  1. «Глубокие запросы»: это типы запросов, которые выполняют сложные сопоставления с образцом на графике. Например, это было бы что-то вроде: «Найдите мне друга Майка, который имеет те же компетенции, что и Майк, работал или работает в той же компании, что и Майк, но в настоящее время не работает вместе с Майком. «. В Neo4j Cypher, что-то вроде этого
 match (p1:Person {first_name:"Mike"})-[:HAS_COMPETENCY]->(c:Competency)<-[:HAS_COMPETENCY]-(p2:Person),  
 (p1)-[:WORKED_FOR|:WORKS_FOR]->(co:Company)<-[:WORKED_FOR]-(p2)  
 where not((p1)-[:WORKS_FOR]->(co)<-[:WORKS_FOR]-(p2))  
 with p1,p2,c,co  
 match (p1)-[:FRIEND_OF*2..2]-(p2)  
 return p1.first_name+' '+p1.last_name as Person1, p2.first_name+' '+p2.last_name as Person2, 

collect(distinct c.name), collect(distinct co.name) as Company;

  1. «Запросы поиска пути»: это позволяет вам исследовать пути от определенного человека к другим людям и видеть, как они связаны друг с другом. Например, если бы я хотел найти пути между двумя людьми, я мог бы сделать
 match p=AllShortestPaths((n:Person {first_name:"Mike"})-[*]-(m:Person {first_name:"Brandi"}))  
 return p;  


и получите это:


Что является действительно интересным и значимым представлением во многих случаях.

  1. Запросы по анализу графиков: это запросы, в которых рассматриваются некоторые действительно интересные метрики графиков, которые могут помочь нам лучше понять нашу HR-сеть. Есть некоторые действительно интересные меры, такие как, например, центральность степеней, центральность между промежуточностью , PageRank и триадические замыкания . Ниже приведены некоторые из запросов, которые реализуют их (обратите внимание, что я сделал некоторые из них также для социальной сети Dolphin ). Имейте в виду, что эти запросы часто являются «глобальными» запросами, которые могут занимать довольно много времени и ресурсов. Я бы не стал делать это на действительно больших наборах данных — но в области HR наборы данных часто бывают довольно ограниченными, и мы можем рассматривать их как достоверные примеры.
 //Degree centrality  
 match (n:Person)-[r:FRIEND_OF]-(m:Person)  
 return n.first_name, n.last_name, count(r) as DegreeScore  
 order by DegreeScore desc  
 limit 10;  
   
 //Betweenness centrality  
 MATCH p=allShortestPaths((source:Person)-[:FRIEND_OF*]-(target:Person))  
 WHERE id(source) < id(target) and length(p) > 1  
 UNWIND nodes(p)[1..-1] as n  
 RETURN n.first_name, n.last_name, count(*) as betweenness  
 ORDER BY betweenness DESC  
   
 //Missing triadic closures  
 MATCH path1=(p1:Person)-[:FRIEND_OF*2..2]-(p2:Person)  
 where not((p1)-[:FRIEND_OF]-(p2))  
 return path1  
 limit 50;  
   
 //Calculate the pagerank  
 UNWIND range(1,10) AS round  
 MATCH (n:Person)  
 WHERE rand() < 0.1 // 10% probability  
 MATCH (n:Person)-[:FRIEND_OF*..10]->(m:Person)  
 SET m.rank = coalesce(m.rank,0) + 1;  

Я уверен, что вы могли бы привести множество других примеров. Просто чтобы прояснить ситуацию, я также сделал небольшой фильм об этом:

Запросы для всей этой демонстрации находятся на Github . Надеюсь, вам понравится, и что все понимают, что базы данных Graph действительно могут повысить ценность в контексте HR Analytics.

Отзывы, как всегда, очень ценятся.

Rik