SlideShare une entreprise Scribd logo
1  sur  148
Télécharger pour lire hors ligne
1/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Vandy BERTEN
Section Recherche
6 juin 2017
Graph & Network Analytics
The power of relations
2/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Définir un réseau
Caractériser un réseau
Visualiser un réseau
Manipuler un réseau
Interroger un réseau
Table des matières
3/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
www.visualhunt.com
Définir un réseau
4/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
MOTIVATIONS
Définir un réseau
5/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Motivations
A
B
Works for
Runson
GraphDatabases,Robinson&all,O’Reilly2015
"Facebook […] was founded
on the idea that while there’s
value in discrete information
about people—their names,
what they do, etc.—there’s
even more value in the
relationships between them."
6/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Sociology
Social Network Analytics
(Data)
analytics
Graph
theory
Social Network Analytics :
Analyse des structures
sociales au travers de la
théorie des graphes
Social
7/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
(Social) Graph/Network Analytics is not…
8/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
7 ponts de Köningsberg (Euler, 1736)
9/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Graph Analytics
Real-time Analytics
Prescriptive Analytics
Predictive Analytics
Social Analytics
Big Data
Machine Learning
Text Analytics
Gartner : BI and Analytics/Data Science
HypeCycleforDataScience,2016
HypeCycleforBusinessIntelligenceandAnalytics,2016
10/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Gartner : applications
Route optimization
Load balancing
Epidemiology
Intelligence
Market basket
analysis
Genome
Supply chain
Fraud detection
Money laundering
11/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
EXEMPLES
Définir un réseau
12/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Spider construction
Chantier
?
13/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
e-commerce
IP1 IP2 IP3 IP4 IP5
CC5
ID5
CK5CK4
CC1 CC2 CC3 CC4
ID6
CK6
IP6
CC6
ID1 ID4ID2
CK3CK2CK1
ID3
“FraudDetection:DiscoveringConnectionswithGraphDatabases”,
Neo4j,Sodawksi&Rathle
14/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Mariages à Florence
PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
15/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Mariages à Florence
PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
16/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Mariages à Florence
PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
17/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Dépendance de librairies Python
18/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
DÉFINITIONS
Définir un réseau
19/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Nœuds, arcs
1 2
3 4
Nœud, sommet,
entité, vertex
Arc, relation,
lien, connexion,
edge
𝐺 = (𝑉, 𝐸)
20/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Label, attribut
Label, Type
Name: John
BD: 3/2/85
Name: Bob
BD: 5/6/85
People
Street: Av. de Mai
Number: 165
Address
Name: Smals
BCE: 0406.798.006
CompanyPeople
WORKS_FOR
Since:2002
Since: 3/4/12
Attribut, propriété
(nom + valeur)
Par. Com: XXX
LIVES_AT
FRIENDS_OF
21/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Réseau dirigé/non-dirigé
1 2
1 2
Non dirigé (undirected) :
collègue, ami Facebook
Dirigé (directed) :
travaille pour, dépend de,
follower Twitter
22/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Degré
1 2
3 4
5
3 2
0
52
in: 1
out: 2
in: 1
out: 1
in: 0
out: 0
in: 1
out: 1
5
1 2
3 4
in: 3
out: 2deg 𝑣 = 2 𝐸
𝑣∈𝑉
∀𝑣 ∈ 𝑉 deg 𝑣 = deg+ 𝑣 + deg− 𝑣
𝑑𝑒𝑔+
𝑣
𝑣∈𝑉
= 𝑑𝑒𝑔−
𝑣
𝑣∈𝑉
23/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Graphe biparti (bipartite graph)
1 5
2 6
3 7
4 8
X
24/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Exemple : Dimona
• Déclarations Dimona de 2007 à aujourd’hui
• 7 048 178 nœuds, 20 640 727 relations
• Graphe biparti
• Degré d’un nœud :
– EMPLOYER : nombre de ses employés
– WORKER : nombre de ses employeurs
WORKER_ID:
227205
EMPLOYER_ID:
10000835
EMPLOYERWORKER
BCW/EXT/IVT/OTH/STU
WORKER
EMPLOYER
25/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Exemple : BCE/KBO
• Fonctions BCE de 2007 à aujourd’hui
• 3 572 876 nœuds, 3 244 227 relations
• Graphe biparti
• Degré d’un nœud :
– EXECUTOR : nombre de compagnies où il officie
– COMPANY : nombre de ses « executors » (=mandataires)
INSS: 227…05 ENTITY_ID: 10…35
COMPANYEXECUTOR
ADM/MGR/FND
COMPANY
EXECUTOR
26/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Caractériser un réseau
27/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Caractériser un réseau
On peut caractériser :
Le réseau dans son ensemble
(Métriques générales)
Un nœud en particulier (Centralité)
La relation/distance/similarité
entre deux nœuds
Un groupe de nœuds (Clustering)
28/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
MÉTRIQUES GÉNÉRALES
Caractériser un réseau
29/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Densité
𝐷𝑒𝑛𝑠𝑖𝑡é =
𝑁𝑜𝑚𝑏𝑟𝑒 𝑑′ 𝑎𝑟𝑐𝑠
𝑁𝑜𝑚𝑏𝑟𝑒𝑠 𝑑′ 𝑎𝑟𝑐𝑠 𝑝𝑜𝑠𝑠𝑖𝑏𝑙𝑒𝑠
1
2
3
4
5
1
2
3 4
5
vs.
=
𝐸
𝑉 −1 + 𝑉 −2 +⋯+1
=
2 𝐸
𝑉 × 𝑉 −1
10
10
= 1
4
10
= 0,4
30/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Densité ≠ Densité !
1000 h/km²
1000 h/km²
A
B
D E
C
0,4
1
2
3 4
5
0,4
2 × (4 + 4)
10 × 9
= 0,177 …
Difficile de comparer 2
graphes de tailles
différentes !
Définition alternative :
𝑁𝑜𝑚𝑏𝑟𝑒 𝑑′ 𝑎𝑟𝑐𝑠
𝑁𝑜𝑚𝑏𝑟𝑒𝑠 𝑑𝑒 𝑛𝑜𝑒𝑢𝑑𝑠
31/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Densité
CODE # nœuds # arcs
ALL 6 474 928 13 722 678
BCW 332 705 476 003
IVT 209 166 163 105
OTH 5 587 049 9 950 130
STU 1 062 334 1 976 673
CODE # nœuds # arcs
ALL 3 572 876 2 933 450
ADM 923 485 1 055 779
MGR 1 087 647 781 269
FND 1 928 211 964 697
Dimona:
BCE:
32/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Densité alternative
CODE # nœuds # arcs
ALL 6 474 928 13 722 678
BCW 332 705 476 003
IVT 209 166 163 105
OTH 5 587 049 9 950 130
STU 1 062 334 1 976 673
CODE # nœuds # arcs
ALL 3 572 876 2 933 450
ADM 923 485 1 055 779
MGR 1 087 647 781 269
FND 1 928 211 964 697
Dimona:
BCE:
33/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Densité
• Peut se calculer sur une partie d’un graphe
(cluster, communauté, …)
• Donne une idée de l’intensité des
relations/contacts entre les nœuds
• Définition 2 : nombre moyen d’arcs par nœuds
34/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Diamètre
Diamètre = plus long « plus court chemin »
1
2
3
4
5
1
2
3
6
5
4  3
 1 1
2
3
6
5
4  ∞
35/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Diamètre
36/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distribution de degrés
1
2
3
4
5
0
1
2
3
4
1 2 3 4
Nombredenœuds Degré des nœuds
37/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distribution de degrés (IN vs OUT)
1
2
3
4
5
0
1
2
#denœuds 0
1
2
0 1 2 3 4
#denœuds
Degré
IN:
OUT:
38/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distribution de degrés : BCE (Adm)
609 041 nœuds de degré 1
Société avec un admin.
Admin. d’une seule société
1 nœud de degré 400
1 admin. de 400 sociétés ?
1 société avec 400 admin. ?
Sur une période de 10 ans
39/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distribution de degrés : BCE (Adm)
Suppression de 0,5% des nœuds les plus gros
Mode :
- 1 société par admin.
- 3 admin. par société
Nœuds « people » de degré 1
 Admin. d’une seule société
Nœuds « company » de degré 1
 Avec un seul admin.
40/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distribution de degrés : BCE (Adm)
Sociétés avec >250 admin.
1 admin. de 233 sociétés!
0,003 % des nœuds les plus gros (« outliers »)
41/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Métriques générales
• Densité : intensité des relations
• Diamètre : étalement du réseau
• Distribution de degré : « forme » du réseau
42/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
CENTRALITÉ
Caractériser un réseau
43/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Centralité
• Centralité d’un nœud = importance d’un nœud au
sein du réseau
• Peut se baser sur des caractéristiques :
– Du nœud isolé (Degree centrality)
– Du nœud et de son voisinage immédiat (K-core)
– De l’ensemble du réseau (Betweenness, Page-rank…)
44/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Centralité de degré
Centralité :
degré du
nœud
45/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Centralité d’intermédiarité (betweenness)
Centralité :
Nombre de
« plus courts
chemins »
passant par le
nœud
46/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Centralité de proximité (closeness)
Centralité :
Distance
moyenne de tous
les autres nœuds
47/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Page-rank
Page-rank (Google) :
Diffusion de son
importance vers ses
voisins
48/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Centralité
• Degré : nombre de voisins
• Betweenness : importance en tant que relai,
connecteur, intermédiaire
• Page-rank : importance par diffusion
• Quoi utiliser ? Dépend très fort du business case
• Hors présentation :
– K-coreness : nombre de voisins de même k-coreness
– Closeness : centralité « topologique »
49/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
DISTANCE/SIMILARITÉ
Caractériser un réseau
50/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Plus court chemin/Distance
• Dijkstra : Calcul du « plus court chemin » entre
deux nœuds
• Chaque lien possède un « poids » (longueur, coût…)
• Distance = ∑ poids (=nbr de liens si non pondéré)
• Variante « A* » : pour les réseaux géographiques
(utilisé par les GPS)
• Peut ne pas être unique. Le nombre de « plus
courts chemins » est aussi une métrique de
proximité
51/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Six degrees of separation
• Théorie : distance entre chaque personne sur
terre ≤ 6 (via 5 connaissances intermédiaires)
• « Degré de séparation » = plus petite distance
• Facebook : moyenne des moyennes : 4,57
https://research.fb.com/three-and-a-half-degrees-
of-separation/
52/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Similarité de Jaccard
Similarité de Jaccard :
# voisins communs
# voisins totaux
1 2
3
6
7
5
4
2/5 = 0.4
53/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Distance
• Plus court chemin
• Similarité de Jaccard
• Hors présentation :
– Connectivité
– Nombre de plus courts chemins
– Dépendance sociale (social neighbors)
54/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
CLUSTERING
Caractériser un réseau
55/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composantes connexes
CC 2 (30)
CC 3 (29)
CC 4 (27)
CC 5 (18)
Composante connexe :
ensemble (maximal) de
nœuds avec un chemin entre
chaque paire de nœuds
Composante géante (giant
component) : la plus grande CC
Beaucoup d’analyses peuvent
(doivent) se faire isolément
sur chaque composante
56/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composante connexe
Giant
2
3
4
Other
Taille de la CC Nbre de CC
1 2 25 929
2 3 5 638
3 4 1 584
4 5 614
… … …
35 48 1
36 55 1
37 96 1
38 6 965 132 1
Dimona (all)
* Dans la période considérée
25 929 situations avec :
- Un employé sans aucun autre* employeur
- Dans une entreprise sans autre* employé
Giant component :
6,53 millions d’employés
(99,3%) sont « collègues
de (ex-)collègues de … »
via 430K employeurs
(92%)
57/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composante géante
• Diamètre : 20
• Médiane : distance = 6
•  50 % des « couples » sont « collègue de
collègue de collègue »
• Percentile 95 : distance = 8 (+1 « de collègue »)
• Il y a des « super-connecteurs » : tous les
enseignants sont collègues !
P E E EP P P
58/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composante connexe : sub-giants
Employeur
Employé « BIS »
Employé « NISS »
59/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composante connexe : sub-giants
60/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Composante connexe : sub-giants
Employeur
Employé « BIS »
Employé « NISS »
61/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Cliques
Triangles
62/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Cliques
Entreprise
Ont des gérants en commun
?
?
Principe utilisé pour détecter les « spider
constructions » (avec une définition de
« clique » un peu plus souple)
63/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Communautés
Partition
Communauté
Groupe
Module
Cluster
Coefficient de modularité :
- Mesure de la qualité d’une partition
- [-1, 1], liens inter-cluster vs liens intra-
cluster
- Bonne partition (coef. ≈ 1 ):
liens intra-cluster >> liens inter-cluster
- Optimisation = NP-hard
- Basé sur les liens, pas sur les attributs Intra-cluster
Inter-cluster
64/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Communautés : intérêts
• Différentes communautés ont souvent des
propriétés différentes de l’ensemble
• Permet l’analyse des communautés une par une
• Permet l’identification des « missing links » et
des « fake links »
• Inférer des caractéristiques (attributs)
• Vue d’ensemble avec un « graphe de clusters »
(+drill-down)
65/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Algorithme de Louvain (UCL, 2008)
54
7
6
1
2
3
8
Améliore la « modularity »?
Si oui, migrer
54
7
6
1
2
3
8
Phase1Phase2
5,6,72, 41,3,8
Fastunfoldingofcommunitiesinlargenetworks,
V.Blondel,J.-L.Guillaume,R.Lambiotte,E.Lefebvre,2008
7
66/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Clustering
• Composantes connexes : groupes « déconnectés »
• Cliques : groupes « totalement connectés »
• Communautés : groupes « sociaux »
Hors présentation : notion de « fortement » ou « faiblement »
connecté si on tient compte des réseaux dirigés
67/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
HOMOPHILIE
Caractériser un réseau
68/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Homophilie / Assortativité
• Homophilie / Assortativité : formalisation du
« qui se ressemble s’assemble »
• Réseau « homophile » : les nœuds similaires sont
mieux liés que les nœuds différents
• En détection de fraude/criminalité : plus de
chances de trouver des fraudeurs dans le
voisinage d’un fraudeur que n’importe où
69/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Questions ?
70/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Pause !
71/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Visualiser un réseau
http://www.annmccranie.net/
72/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Visualiser
73/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SPATIALISATION (LAYOUT)
Visualiser un réseau
74/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Spatialisation
• Cas simple : graphe planaire = qui peut se
dessiner sans croisement
• En général :
– Minimiser les croisements
– Rapprocher les nœuds connectés
– Éloigner les nœuds non-connectés
54
7
6
1
2
3
8
75/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Spatialisation
• Force-directed :
– Force attractive (spring) entre deux nœuds liés
– Force répulsive entre tous les nœuds
• Spectral : Utilisation des vecteurs/valeurs propres
(eigenvectors/values)
• Autres : Hiérarchiques, circulaires, linéaires…
76/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Spatialisation
Yifan Hu
ForceAtlas2
OpenOrd Fruchterman Reingold
77/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SIMPLIFICATION
Visualiser un réseau
78/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Simplification
• Au-delà de quelques centaines de nœuds,
visualiser un graphe est illusoire
• Plusieurs méthodes permettent une approche
– Découper le graphe
– Supprimer des nœuds
– Fusionner des nœuds
79/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Découper le graphe
• Composantes connexes
 Méthode naturelle, pas de perte
• Communautés
 On perd les relations inter-communauté
80/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Filtrer des nœuds
• Supprimer les super-connecteurs (degré élevé)
 augmente le nombre de composantes connexes
• Supprimer les feuilles (degré/K-core faible)
 focus sur le « backbone/core »
81/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Fusionner des nœuds
• Contraction : fusionner des groupes
• Projection bipartite : conversion d’un graphe
biparti en 2 graphes unipartis.
82/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Contraction
83/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Contraction
84/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Contraction : BCE (Administrateurs)
• Administrateurs BCE :
 Composante géante = 655.158 nœuds (sur ~106)
• On applique Louvain :
 743 communautés (~10’’ en mono-thread)
85/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Contraction : BCE (Administrateurs)
Tree
Star
Other
Outgoing edges:
86/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Projection bipartite
1 5
2
6
3
4 7
1 2
3 4
5 6
7
Travailleur Employeurs
Collègues
Travailleurs communs
87/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
OUTIL DESKTOP : GEPHI
Visualiser un réseau
88/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Gephi
89/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
LIBRAIRIE JS: VIS.JS
Visualiser un réseau
90/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
vis.js
<div id="graph"></div>
<script type="text/javascript">
var nodes = new vis.DataSet([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
]);
var edges = new vis.DataSet([
{from: 1, to: 3},
{from: 1, to: 2},
{from: 3, to: 3}
]);
var container =
document.getElementById('graph');
var data = {
nodes: nodes,
edges: edges
};
var options = {};
var network =
new vis.Network(container,
data,
options);
</script>
http://visjs.org/examples/network/basicUsage.html
91/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
OUTIL WEB : LINKURIOUS
Visualiser un réseau
92/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Linkurio.us
93/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
AUTRES OUTILS
Visualiser un réseau
94/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Outils desktop
• Gephi https://gephi.org OS
• TouchGraph http://www.touchgraph.com €
• Cytoscape http://www.cytoscape.org OS
• Maltego https://www.paterva.com
• NodeXL https://nodexl.codeplex.com OS
• SAS Network Analytics €
• IBM i2 €
95/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Outils Cloud
• Linkurio.us https://linkurio.us €
• Keylines https://cambridge-intelligence.com/keylines €
96/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Librairies web
• Vis.js http://visjs.org OS
• Cytoscape.js http://js.cytoscape.org OS
• Sigma.js http://sigmajs.org OS
• D3.js https://d3js.org OS
• OGMA (Linkurio.us SDK) €
97/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
USE CASE : SOCDUMPV2
Visualiser un réseau
98/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2 : Contexte
• Pour différents services d’inspection, on veut
visualiser le réseau d’un groupe de personnes ou
entreprises (suspectées de dumping social ou autre
fraude)
• À partir de données de (principalement) :
– Dimona : relations employeurs – employés (en Belgique)
– BCE/KBO : relations sociétés – mandataires
– Limosa : Travailleurs étrangers travaillant en Belgique
– DDT : Sociétés – Chantiers – Sous-traitants
– CAW : Chantiers – Travailleurs – Sociétés
99/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2 : modules
Dimona
BCE/KBO
DDT
Limosa
CAW
100/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2 : modules
• Chaque module produit 2 types d’outputs :
– Des nœuds : personnes, entreprises, POW
– Des relations
• Les nœuds d’outputs de chaque module peuvent
servir d’input pour un autre
• Exemple :
NISS –[BCE]-> Entreprises –[Dimona]-> Employés
101/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2 : qualité
• La qualité n’est pas toujours au rendez-vous !
• Une entreprise peut être désignée soit par un
identifiant « source authentique » (numéro BCE,
matricule…), soit par une un numéro interne à
l’application (principalement DDT, Limosa)
• Idem pour les personnes : numéro NISS, ou
numéro interne
102/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2 : Flux
CBE
Dimona
BCE
Limosa
DDT
Seed
DDT
Limosa
BCE
Filter
[BCE]
103/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SocDumpv2
• Après la recherche des données, on va :
– Collecter les adresses des entreprises
– Enrichir les nœuds (nom des entreprises et des personnes,
dates de naissance)
– Détecter et (éventuellement) fusionner les doublons
– Calculer une série de métriques (distance, centralité…)
• On visualise ensuite le résultat : Gephi,
TouchGraph…
104/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Manipuler un réseau
105/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
IGRAPH (PYTHON/R)
Manipuler un réseau
106/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
iGraph
• iGraph : librairie C de création, manipulation et
analyse de graphes
• Interfacé avec R, Python, Mathematica
• Open Source, GNU GPL v2
• Très populaire dans la communauté scientifique
• + : standard, multi-langage, natif, très riche
• - : mono-cpu, installation pas toujours aisée
107/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
iGraph : fonctions
• Génération : de nombreux modèles
• Analyse : centralité, chemins, communauté,
recherche de pattern/motifs, comparaison
isomorphique…
• Modification : projection bipartite, extraction
• Visualisation : layout, génération d’image
• Import/Export
108/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
iGraph, Python vs R.
Python
g = ig.Graph()
g.add_vertices(["a","b","c"])
g.add_edges([("a", "b"),
("a", "c")])
g.vs["label"] = ["x","y","z"]
g.vs[2]["name"] = "C"
R
g <-graph(edges =
c("a", "b", "a", "c"))
V(g)$label = c("x", "y", "z")
V(g)$name[2] = "C"
109/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
BIG DATA: GIRAPH & GRAPHX
Manipuler un réseau
110/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphX
• Librairie de manipulation de graphes pour Spark
(framework open source de calcul distribué/Big Data)
• Spark :
– Souvent utilisé sur Hadoop (pour HDFS)
– En Scala, Java ou Python
– GraphX : Uniquement en Scala
• Basé sur les RDDs (non-modifiables)
• + : Permet la manipulation de très gros graphes
• - : Librairie très limitée (à ce stade)
http://spark.apache.org/graphx/
111/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphX
// Create an RDD for the vertices
val users: RDD[(VertexId, (String, String))] =
sc.parallelize(Array((3L, ("rxin", "student")),
(7L, ("jgonzal", "postdoc")),
(5L, ("franklin", "prof")))))
// Create an RDD for edges
val relationships: RDD[Edge[String]] =
sc.parallelize(Array(Edge(3L, 7L, "collab"),
Edge(5L, 3L, "advisor"),
Edge(5L, 7L, "pi")))
Graph val graph = Graph(users, relationships, defaultUser)
112/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Giraph
• "Apache Giraph is an iterative graph processing
system built for high scalability.“
• Extension de Pregel (Google)
• Utilisé par Facebook
• Basé sur MapReduce (Hadoop)
http://giraph.apache.org
113/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphX vs Giraph
• GraphX créé pour être plus performant que
Giraph (moins de passage par le disque)
• Benchmark par GraphX largement en sa faveur…
• Mais des benchmarks de Facebook montrent le
contraire
https://code.facebook.com/posts/319004238457019/
https://amplab.cs.berkeley.edu/wp-content/uploads/2014/09/graphx.pdf
114/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
www.neo4j.com
Interroger un réseau
115/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GRAPH DATABASES
Interroger un réseau
116/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
SELECT Workers.Name
FROM Workers
JOIN Companies
ON Workers.Employer_ID = Companies.ID
WHERE Companies.Name = 'Smals'
RDBMS et relations
Workers
ID
Name
Employer_ID
Companies
ID
Name
Ce qui intéresse
le développeur
Comment les relations
sont implémentées
Employés de Smals ?
RDBMS : Relational DataBase Management System
117/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
RDBMS et relations
Workers
ID
Name
Companies
ID
Name
SELECT Workers.Name
FROM Workers
JOIN Works_for
ON Workers.ID = Works_for.Worker_ID
JOIN Companies
ON Works_for.Company_ID = Companies.ID
WHERE Companies.Name = 'Smals'
Works_for
Worker_ID
Company_ID
From_date
Ce qui intéresse
le développeur
Comment les relations
sont implémentées
Employés de Smals ?
118/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
RDBMS et relations
ID Name
1 Alice
2 Bob
3 Camille
4 Zoé
1: Alice 2: Bob
3: Camille 4: Zoé
Liker_ID Liked_ID
1 3
2 1
2 3
3 2
3 4
SELECT p1.Name
FROM People p1
JOIN Likes
ON Likes.Liked_ID = p1.ID
JOIN People p2
ON Likes.Liker_ID = p2.ID
WHERE p2.Name = "Bob"
Qui Bob aime ?
119/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
RDBMS et relations
1: Alice 2: Bob
3: Camille 4: Zoé
Qui Bob (aime)² ?
ID Name
1 Alice
2 Bob
3 Camille
4 Zoé
Liker_ID Liked_ID
1 3
2 1
2 3
3 2
3 4SELECT p1.Name
FROM People p1
JOIN Likes l1
ON l1.Liked_ID = p1.ID
JOIN Likes l2
ON l1.Liker_ID = l2.Liked_ID
JOIN People p2
ON l2.Liker_ID = p2.ID
WHERE p2.Name = "Bob"
120/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
RDBMS et relations : limitations
Relations 1-n Relations m-n
(ou 1-n avec attributs)
• Détourne le rôle d’un attribut
• Pas de type « Key »
• Détourne le rôle d’une table
• Pas distinguable des autres
• Contrainte d’intégrité possible (externe à la table)
• Structure de la relation à préciser à chaque requête
• Join : Lourd en écriture et en exécution
Workers
ID
Name
Employer_ID
Companies
ID
NameForeign key:
Workers
ID
Name
Companies
ID
Name
Works_for
Worker_ID
Company_ID
From_date
Join table:
121/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Solutions NoSQL
Key-value Column
Document Graph
K V
122/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphDB : objectifs
Objectifs des bases de données orientées graphes :
SELECT p1.Name
FROM People p1
JOIN Likes l1
ON l1.Liked_ID = p1.ID
JOIN Likes l2
ON l1.Liker_ID = l2.Liked_ID
JOIN People p2
ON l2.Liker_ID = p2.ID
WHERE p2.Name = "Bob"
MATCH
(:People {Name:"Bob"})
-[:Likes*2]->
(p:People)
RETURN p.Name
Querying language qui
sépare la définition des
relations (à la création) et la
recherche de « matching »
Moteur efficace
pour le parcours
des relations
Cypher (Neo4j)
123/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphDB: moins de code
MATCH
(boss)-[:MANAGES*0..3]->(sub),
(sub)-[:MANAGES*1..3]->(report)
WHERE boss.name = "John Doe"
RETURN sub.name AS Subordinate,
count(report) AS Total
TutorialNeo4j:https://youtu.be/-dCeFEqDkUI?t=246
124/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphDB : moins de code
“We found Neo4j to be literally
thousands of times faster than
our prior MySQL solution, with
queries that require 10-100
times less code. Today, Neo4j
provides eBay with functionality
that was previously impossible.”
https://neo4j.com/news/graph-databases-provide-
crystal-ball-online-recommendations-wal-mart-ebay/
125/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
NEO4J
Interroger un réseau
126/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Requête Neo4j
Name: Vandy
BD: 15/09/80
Name: Smals
BCE: 0406.798.006
CompanyWorker
Par. Com: XXX
Start: 01/05/13
MATCH (w:Worker) -[r:WORKS_FOR]-> (c:Company)
WHERE c.Name = "Smals"
RETURN w.Name, w.BD, r.Start
Nœud de type « Worker »
Relation de type « WORKS_FOR »
Nœud de type « Company »
MATCH
(w:Worker)
-[r:WORKS_FOR]->
(c:Company {Name:"Smals"})
RETURN …
Variante :
Liste des employés de Smals
WORKS_FOR
127/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Requête Neo4j
Name: Vandy
BD: 15/09/80
Name: Smals
BCE: 0406.798.006
CompanyWorker
MATCH
(w1:Worker)-[:WORKS_FOR]->(c:Company {Name:”Smals”}),
(w2:Worker)-[:WORKS_FOR]->(c),
(w1)-[:RELATIVES]->(w2)
RETURN w1.Name, w2.Name
Name: Victor
BD: 30/03/85
Worker
Type: cousin
Liste des employés de
Smals apparentés
Par. Com: XXX
Start: 01/05/13
WORKS_FOR
Par. Com: YYY
Start: 15/09/10
WORKS_FOR
RELATIVES
128/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Requête Neo4j
MATCH
(w1:Worker)-[:WORKS_FOR]->(c:Company {Name:”Smals”})
<-[:WORKS_FOR]-(w2:Worker)-[:RELATIVES]->(w1)
RETURN w1.Name, w2.Name
Liste des employés de
Smals apparentés
Name: Vandy
BD: 15/09/80
Name: Smals
BCE: 0406.798.006
CompanyWorker
Name: Victor
BD: 30/03/85
Worker
Type: cousin
Par. Com: XXX
Start: 01/05/13
WORKS_FOR
Par. Com: YYY
Start: 15/09/10
WORKS_FOR
RELATIVES
129/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Fonctionnement
RDBMS Graph DB
schema
WHERE …
Search in Companies (with index):
O(log([Table size])
Search in nodes (with index) :
O(log([DB size])
Relation
JOIN :
- Search in Works_for :
O(log([Table size]))
- Search in Workers :
O(log([Table size]) x [nb res])
Follow pointers in node :
O([nb of employees])
Workers
ID
Name
Companies
ID
Name
Works_for
Worker_ID
Company_ID
From_date
Name: Vandy
BD: 15/09/80
Name: Smals
BCE: 0406.798.006
CompanyWorker
WORKS_FOR
Par. Com: XXX
Start: 01/05/13
130/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Performance
• Réseau social de 106 de nœuds
• ~50 voisins par nœuds
• Recherche des « amis d’amis »
Depth MySQL Neo4j # results
2 0,02 0,01 2 500
3 30,27 0,17 110 000
4 1543,51 1,36 600 000
5 Unfinished 2,13 800 000
Scénario très
favorable aux
graph DB !
GraphDatabases,I.Robinsonetal.
0
500
1000
1500
2000
2 3 4 5
131/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Neo4j : Création des données
Name: Vandy
BD: 15/09/80
Name: Smals
BCE: 0406.798.006
CompanyWorker
CREATE (:Person {Name:"Vandy", BD:"15/09/80"})
CREATE (:Company {Name:"Smals", BCE:"0406…"})
MATCH (p:Person {Name: "Vandy"}),
(c:Company {Name: "Smals"})
CREATE (p)-[:WORKS_FOR {Start:…}]->(c)
OU:
CREATE (:Person {Name:"Vandy", BD:"15/09/80"})
-[:WORKS_FOR {Start:…}]->(:Company {Name:"…", …})
Par. Com: XXX
Start: 01/05/13
WORKS_FOR
132/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Neo4j : importation de données
• Dans la pratique : importation de fichiers CSV (à
préparer !!)
• Via une commande Cypher (LOAD CSV FROM…)
– Facile pour des petits fichiers
– Lent à l’exécution
• En command line
– Beaucoup plus rapide
– Mal documenté
133/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GRAPHDB : LA SOLUTION ?
Interroger un réseau
134/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
0011010110
1110111010
1011101010
RDBMS ou GraphDB ?
1 SQL
2
0011010110
1110111010
1011101010
00110
11101
10111
10110
11010
01010
3
0011010110
1110111010
1011101010
0011010110
1110111010
1011101010
0011010110
1110111010
1011101010
et
SQL
SQL
135/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphDB : Avantages
• Langage plus proche du modèle
• Pas de clés à gérer, ni de contrainte d’intégrité
• Pas de structures de relations à chaque requête
• Très efficace pour le parcours de relations
• Beaucoup de champs d’application :
recommandation, fraude, infra, MDM, KM…
• Neo4J: ACID, schema-less
136/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
GraphDB : limitations
• Pas la maturité des RDBMS (robustesse, haute
dispo., communauté…)
• Pas de standard
• Survie à l’effet de mode ? (cf OO DB)
• Pas optimal pour des recherches, agrégation,
batch process, transactionnel
• Pas une alternative, plutôt un complément (ne
résout pas les mêmes problèmes)
137/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
USE CASE : SUPERBONUS
Interroger un réseau
138/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Superbonus : contexte
• Avec le TaxShift (2016), des avantages sont
donnés aux nouveaux employeurs
• Beaucoup d’employeurs existants se recréent
pour profiter de ces avantages
• Le « Network Analytics » permet d’identifier
beaucoup de ces cas
139/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Data collection
DmfA: SuperBonus requestors
11078 employers
SB
SB
SB
Dimona: Worker in Periods 2015-2016
27056 workers
W
W
W
W
Dimona: Employers in Periods 2015
15416 employers
Em
Em
Em
BCE: Addresses (3296 addr.) + cotenant
A
A
BCE: Executors + other companies
Ex
Ex
Ex
Em
Em
140/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Full transfert
SB
W
W
WEm
W
COUNT(W) > Em.Worker_Cnt_2015 * 80%
COUNT(W) > SB.Worker_Cnt_2016 * 80%
A
Ex
W Worker Em
Employer without SB SB Employer with SB A Address Ex Executor
MATCH (c_sb:SB)--(w:Worker)--(c_old:Company)
WHERE c_sb <> c_old
OPTIONAL MATCH (c_sb)--(e:Executor)--(c_old)
OPTIONAL MATCH (c_sb)--(a:Address)--(c_old)
WITH c_sb, c_old,
COUNT(DISTINCT w) AS w_count
WHERE
w_count > c_sb.WORKER_CNT_16 * 0.8 AND
w_count > c_old.WORKER_CNT_15 * 0.8
RETURN c_sb, c_old, w_cnt
141/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Shared admin and (worker or address)
SBWEm
COUNT(W) > 0 OR COUNT(A) > 0
A
Ex
MATCH (sb:SB)--(e:Executor)--(comp:Company)
WHERE sb <> comp
OPTIONAL MATCH (sb)--(w:Worker)--(comp)
OPTIONAL MATCH (sb)--(a:Address)--(comp)
WITH sb, comp,
COUNT(DISTINCT w) AS Workers_count,
COUNT(DISTINCT a) AS Addresses_count
WHERE (Workers_count>0 OR Addresses_count>0)
RETURN sb, comp, …
W Worker Em
Employer without SB SB Employer with SB A Address Ex Executor
142/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Conclusions
143/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
En résumé
Caractériser (théorie) : tout
un réseau, un nœud
(centralité), deux nœuds
(distance), un groupe de
nœuds (clustering)
Visualiser : Desktop, Javascript,
Cloud
Manipuler (coding) : Envir.
classiques ou Big Data
Interroger (graph DB) : focus sur
les relations
Application : fraude, gestion des infras/logicielle, recommandation,
intelligence, KM…
144/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
• De la place pour les graph analytics/graph DB
dans nos institutions
• Pas uniquement pour la fraude !
• Pour les data-scientists/BI :
 nouvelle façon de réfléchir, centré sur les relations
• Pour les DBA/développeurs :
 nouvelle famille de DB, complémentaires
• Pour les analystes/business :
 inspiration pour de nouveaux use cases
Conclusions
145/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
• Préparation des données :
– R/Python + igraph/graphx
• Première analyse :
– Gephi/TouchGraph
• Production :
– GraphDB (Neo4j…)
• Pour le client :
– Interactif (futur) : libraire JS / outils « à la » Linkurio.us
– Statique : Gephi/TouchGraph, igraph  Excel, PDF…
Conclusions : expérience personnelle
146/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
• Blogs :
– https://www.smalsresearch.be/un-fraudeur-ne-fraude-jamais-seul/
– https://www.smalsresearch.be/un-fraudeur-ne-fraude-jamais-seul-
partie-2/
– https://www.smalsresearch.be/bases-de-donnees-relationnelles-
adequates-pour-des-relations/
– https://www.smalsresearch.be/graph-db-vs-rdbms/
• Autres :
– NoSQL - Hype ou Innovation, Grégory Ogonowski,
https://www.smalsresearch.be/publications/document/?docid=59
Références : www.smalsresearch.be
147/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
• Graph Databases, Robinson & all, O’Reilly 2015
• Fraud Detection: Discovering Connections
with Graph Databases, Neo4j, Sodawksi &
Rathle
• Fraud Analytics Using Descriptive,
Predictive, and Social Network Techniques:
A Guide to Data Science for Fraud Detection,
Bart Baesens, Veronique Van Vlasselaer, Wouter
Verbeke, Willey, 2015
Références
148/149Définir – Caractériser – – Visualiser – Manipuler – Interroger
Vandy Berten
02/787.57.32
vandy.berten@smals.be
More on Smals Research :
Website : www.smalsresearch.be
Blog : www.smalsresearch.be/blog
Twitter : @SmalsResearch

Contenu connexe

Plus de Smals

Analyse predictive comment ca marche a quoi ca sert
Analyse predictive comment ca marche a quoi ca sertAnalyse predictive comment ca marche a quoi ca sert
Analyse predictive comment ca marche a quoi ca sertSmals
 
Traduction vocale quasi instantanee introduction
Traduction vocale quasi instantanee introductionTraduction vocale quasi instantanee introduction
Traduction vocale quasi instantanee introductionSmals
 
Automatisation des processus robotises introduction
Automatisation des processus robotises introductionAutomatisation des processus robotises introduction
Automatisation des processus robotises introductionSmals
 
Interfaces conversationnelle introduction
Interfaces conversationnelle introductionInterfaces conversationnelle introduction
Interfaces conversationnelle introductionSmals
 
Reconnaissance d'entites nommees introduction
Reconnaissance d'entites nommees introductionReconnaissance d'entites nommees introduction
Reconnaissance d'entites nommees introductionSmals
 
Generation automatique de textes
Generation automatique de textesGeneration automatique de textes
Generation automatique de textesSmals
 
Intelligence artificielle etroite introduction
Intelligence artificielle etroite introductionIntelligence artificielle etroite introduction
Intelligence artificielle etroite introductionSmals
 
Named entity recognition hoe werkt het wat kunnen we er mee doen
Named entity recognition hoe werkt het wat kunnen we er mee doenNamed entity recognition hoe werkt het wat kunnen we er mee doen
Named entity recognition hoe werkt het wat kunnen we er mee doenSmals
 
Real time voice translation handig maar hoe ver staat het
Real time voice translation   handig  maar hoe ver staat hetReal time voice translation   handig  maar hoe ver staat het
Real time voice translation handig maar hoe ver staat hetSmals
 
Wat is predictive analytics en waarvoor kun je het gebruiken
Wat is predictive analytics en waarvoor kun je het gebruikenWat is predictive analytics en waarvoor kun je het gebruiken
Wat is predictive analytics en waarvoor kun je het gebruikenSmals
 
Wat is robotic process automation en wat kun je er mee doen
Wat is robotic process automation en wat kun je er mee doenWat is robotic process automation en wat kun je er mee doen
Wat is robotic process automation en wat kun je er mee doenSmals
 
Exemples europeens comme source d inspiration
Exemples europeens comme source d inspirationExemples europeens comme source d inspiration
Exemples europeens comme source d inspirationSmals
 
Wat zijn conversational interfaces en waarvoor kun je ze gebruiken
Wat zijn conversational interfaces en waarvoor kun je ze gebruikenWat zijn conversational interfaces en waarvoor kun je ze gebruiken
Wat zijn conversational interfaces en waarvoor kun je ze gebruikenSmals
 
Wat is natural laguage generation
Wat is natural laguage generationWat is natural laguage generation
Wat is natural laguage generationSmals
 
Wat is het internet of things en waarvoor kunnen we het gebruiken
Wat is het internet of things en waarvoor kunnen we het gebruikenWat is het internet of things en waarvoor kunnen we het gebruiken
Wat is het internet of things en waarvoor kunnen we het gebruikenSmals
 
Europese egov voorbeelden
Europese egov voorbeeldenEuropese egov voorbeelden
Europese egov voorbeeldenSmals
 
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019Smals
 
Conversational interfaces & chatbots - 2018-09
Conversational interfaces & chatbots - 2018-09Conversational interfaces & chatbots - 2018-09
Conversational interfaces & chatbots - 2018-09Smals
 
From Blockchain to reality 2018-11-20
From Blockchain to reality 2018-11-20 From Blockchain to reality 2018-11-20
From Blockchain to reality 2018-11-20 Smals
 
7 Myths about Bitcoin - Infosecurity.be - March 2018
7 Myths about Bitcoin - Infosecurity.be - March 20187 Myths about Bitcoin - Infosecurity.be - March 2018
7 Myths about Bitcoin - Infosecurity.be - March 2018Smals
 

Plus de Smals (20)

Analyse predictive comment ca marche a quoi ca sert
Analyse predictive comment ca marche a quoi ca sertAnalyse predictive comment ca marche a quoi ca sert
Analyse predictive comment ca marche a quoi ca sert
 
Traduction vocale quasi instantanee introduction
Traduction vocale quasi instantanee introductionTraduction vocale quasi instantanee introduction
Traduction vocale quasi instantanee introduction
 
Automatisation des processus robotises introduction
Automatisation des processus robotises introductionAutomatisation des processus robotises introduction
Automatisation des processus robotises introduction
 
Interfaces conversationnelle introduction
Interfaces conversationnelle introductionInterfaces conversationnelle introduction
Interfaces conversationnelle introduction
 
Reconnaissance d'entites nommees introduction
Reconnaissance d'entites nommees introductionReconnaissance d'entites nommees introduction
Reconnaissance d'entites nommees introduction
 
Generation automatique de textes
Generation automatique de textesGeneration automatique de textes
Generation automatique de textes
 
Intelligence artificielle etroite introduction
Intelligence artificielle etroite introductionIntelligence artificielle etroite introduction
Intelligence artificielle etroite introduction
 
Named entity recognition hoe werkt het wat kunnen we er mee doen
Named entity recognition hoe werkt het wat kunnen we er mee doenNamed entity recognition hoe werkt het wat kunnen we er mee doen
Named entity recognition hoe werkt het wat kunnen we er mee doen
 
Real time voice translation handig maar hoe ver staat het
Real time voice translation   handig  maar hoe ver staat hetReal time voice translation   handig  maar hoe ver staat het
Real time voice translation handig maar hoe ver staat het
 
Wat is predictive analytics en waarvoor kun je het gebruiken
Wat is predictive analytics en waarvoor kun je het gebruikenWat is predictive analytics en waarvoor kun je het gebruiken
Wat is predictive analytics en waarvoor kun je het gebruiken
 
Wat is robotic process automation en wat kun je er mee doen
Wat is robotic process automation en wat kun je er mee doenWat is robotic process automation en wat kun je er mee doen
Wat is robotic process automation en wat kun je er mee doen
 
Exemples europeens comme source d inspiration
Exemples europeens comme source d inspirationExemples europeens comme source d inspiration
Exemples europeens comme source d inspiration
 
Wat zijn conversational interfaces en waarvoor kun je ze gebruiken
Wat zijn conversational interfaces en waarvoor kun je ze gebruikenWat zijn conversational interfaces en waarvoor kun je ze gebruiken
Wat zijn conversational interfaces en waarvoor kun je ze gebruiken
 
Wat is natural laguage generation
Wat is natural laguage generationWat is natural laguage generation
Wat is natural laguage generation
 
Wat is het internet of things en waarvoor kunnen we het gebruiken
Wat is het internet of things en waarvoor kunnen we het gebruikenWat is het internet of things en waarvoor kunnen we het gebruiken
Wat is het internet of things en waarvoor kunnen we het gebruiken
 
Europese egov voorbeelden
Europese egov voorbeeldenEuropese egov voorbeelden
Europese egov voorbeelden
 
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019
Joachim Ganseman - Pitfalls in AI - Infosecurity.be 2019
 
Conversational interfaces & chatbots - 2018-09
Conversational interfaces & chatbots - 2018-09Conversational interfaces & chatbots - 2018-09
Conversational interfaces & chatbots - 2018-09
 
From Blockchain to reality 2018-11-20
From Blockchain to reality 2018-11-20 From Blockchain to reality 2018-11-20
From Blockchain to reality 2018-11-20
 
7 Myths about Bitcoin - Infosecurity.be - March 2018
7 Myths about Bitcoin - Infosecurity.be - March 20187 Myths about Bitcoin - Infosecurity.be - March 2018
7 Myths about Bitcoin - Infosecurity.be - March 2018
 

20170606 Vandy Berten - Network analytics - Smals Research

  • 1. 1/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Vandy BERTEN Section Recherche 6 juin 2017 Graph & Network Analytics The power of relations
  • 2. 2/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Définir un réseau Caractériser un réseau Visualiser un réseau Manipuler un réseau Interroger un réseau Table des matières
  • 3. 3/149Définir – Caractériser – – Visualiser – Manipuler – Interroger www.visualhunt.com Définir un réseau
  • 4. 4/149Définir – Caractériser – – Visualiser – Manipuler – Interroger MOTIVATIONS Définir un réseau
  • 5. 5/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Motivations A B Works for Runson GraphDatabases,Robinson&all,O’Reilly2015 "Facebook […] was founded on the idea that while there’s value in discrete information about people—their names, what they do, etc.—there’s even more value in the relationships between them."
  • 6. 6/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Sociology Social Network Analytics (Data) analytics Graph theory Social Network Analytics : Analyse des structures sociales au travers de la théorie des graphes Social
  • 7. 7/149Définir – Caractériser – – Visualiser – Manipuler – Interroger (Social) Graph/Network Analytics is not…
  • 8. 8/149Définir – Caractériser – – Visualiser – Manipuler – Interroger 7 ponts de Köningsberg (Euler, 1736)
  • 9. 9/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Graph Analytics Real-time Analytics Prescriptive Analytics Predictive Analytics Social Analytics Big Data Machine Learning Text Analytics Gartner : BI and Analytics/Data Science HypeCycleforDataScience,2016 HypeCycleforBusinessIntelligenceandAnalytics,2016
  • 10. 10/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Gartner : applications Route optimization Load balancing Epidemiology Intelligence Market basket analysis Genome Supply chain Fraud detection Money laundering
  • 11. 11/149Définir – Caractériser – – Visualiser – Manipuler – Interroger EXEMPLES Définir un réseau
  • 12. 12/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Spider construction Chantier ?
  • 13. 13/149Définir – Caractériser – – Visualiser – Manipuler – Interroger e-commerce IP1 IP2 IP3 IP4 IP5 CC5 ID5 CK5CK4 CC1 CC2 CC3 CC4 ID6 CK6 IP6 CC6 ID1 ID4ID2 CK3CK2CK1 ID3 “FraudDetection:DiscoveringConnectionswithGraphDatabases”, Neo4j,Sodawksi&Rathle
  • 14. 14/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Mariages à Florence PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
  • 15. 15/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Mariages à Florence PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
  • 16. 16/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Mariages à Florence PadgettandAnsell,RobustActionandtheRiseoftheMedici,1993
  • 17. 17/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Dépendance de librairies Python
  • 18. 18/149Définir – Caractériser – – Visualiser – Manipuler – Interroger DÉFINITIONS Définir un réseau
  • 19. 19/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Nœuds, arcs 1 2 3 4 Nœud, sommet, entité, vertex Arc, relation, lien, connexion, edge 𝐺 = (𝑉, 𝐸)
  • 20. 20/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Label, attribut Label, Type Name: John BD: 3/2/85 Name: Bob BD: 5/6/85 People Street: Av. de Mai Number: 165 Address Name: Smals BCE: 0406.798.006 CompanyPeople WORKS_FOR Since:2002 Since: 3/4/12 Attribut, propriété (nom + valeur) Par. Com: XXX LIVES_AT FRIENDS_OF
  • 21. 21/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Réseau dirigé/non-dirigé 1 2 1 2 Non dirigé (undirected) : collègue, ami Facebook Dirigé (directed) : travaille pour, dépend de, follower Twitter
  • 22. 22/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Degré 1 2 3 4 5 3 2 0 52 in: 1 out: 2 in: 1 out: 1 in: 0 out: 0 in: 1 out: 1 5 1 2 3 4 in: 3 out: 2deg 𝑣 = 2 𝐸 𝑣∈𝑉 ∀𝑣 ∈ 𝑉 deg 𝑣 = deg+ 𝑣 + deg− 𝑣 𝑑𝑒𝑔+ 𝑣 𝑣∈𝑉 = 𝑑𝑒𝑔− 𝑣 𝑣∈𝑉
  • 23. 23/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Graphe biparti (bipartite graph) 1 5 2 6 3 7 4 8 X
  • 24. 24/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Exemple : Dimona • Déclarations Dimona de 2007 à aujourd’hui • 7 048 178 nœuds, 20 640 727 relations • Graphe biparti • Degré d’un nœud : – EMPLOYER : nombre de ses employés – WORKER : nombre de ses employeurs WORKER_ID: 227205 EMPLOYER_ID: 10000835 EMPLOYERWORKER BCW/EXT/IVT/OTH/STU WORKER EMPLOYER
  • 25. 25/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Exemple : BCE/KBO • Fonctions BCE de 2007 à aujourd’hui • 3 572 876 nœuds, 3 244 227 relations • Graphe biparti • Degré d’un nœud : – EXECUTOR : nombre de compagnies où il officie – COMPANY : nombre de ses « executors » (=mandataires) INSS: 227…05 ENTITY_ID: 10…35 COMPANYEXECUTOR ADM/MGR/FND COMPANY EXECUTOR
  • 26. 26/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Caractériser un réseau
  • 27. 27/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Caractériser un réseau On peut caractériser : Le réseau dans son ensemble (Métriques générales) Un nœud en particulier (Centralité) La relation/distance/similarité entre deux nœuds Un groupe de nœuds (Clustering)
  • 28. 28/149Définir – Caractériser – – Visualiser – Manipuler – Interroger MÉTRIQUES GÉNÉRALES Caractériser un réseau
  • 29. 29/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Densité 𝐷𝑒𝑛𝑠𝑖𝑡é = 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑′ 𝑎𝑟𝑐𝑠 𝑁𝑜𝑚𝑏𝑟𝑒𝑠 𝑑′ 𝑎𝑟𝑐𝑠 𝑝𝑜𝑠𝑠𝑖𝑏𝑙𝑒𝑠 1 2 3 4 5 1 2 3 4 5 vs. = 𝐸 𝑉 −1 + 𝑉 −2 +⋯+1 = 2 𝐸 𝑉 × 𝑉 −1 10 10 = 1 4 10 = 0,4
  • 30. 30/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Densité ≠ Densité ! 1000 h/km² 1000 h/km² A B D E C 0,4 1 2 3 4 5 0,4 2 × (4 + 4) 10 × 9 = 0,177 … Difficile de comparer 2 graphes de tailles différentes ! Définition alternative : 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑′ 𝑎𝑟𝑐𝑠 𝑁𝑜𝑚𝑏𝑟𝑒𝑠 𝑑𝑒 𝑛𝑜𝑒𝑢𝑑𝑠
  • 31. 31/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Densité CODE # nœuds # arcs ALL 6 474 928 13 722 678 BCW 332 705 476 003 IVT 209 166 163 105 OTH 5 587 049 9 950 130 STU 1 062 334 1 976 673 CODE # nœuds # arcs ALL 3 572 876 2 933 450 ADM 923 485 1 055 779 MGR 1 087 647 781 269 FND 1 928 211 964 697 Dimona: BCE:
  • 32. 32/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Densité alternative CODE # nœuds # arcs ALL 6 474 928 13 722 678 BCW 332 705 476 003 IVT 209 166 163 105 OTH 5 587 049 9 950 130 STU 1 062 334 1 976 673 CODE # nœuds # arcs ALL 3 572 876 2 933 450 ADM 923 485 1 055 779 MGR 1 087 647 781 269 FND 1 928 211 964 697 Dimona: BCE:
  • 33. 33/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Densité • Peut se calculer sur une partie d’un graphe (cluster, communauté, …) • Donne une idée de l’intensité des relations/contacts entre les nœuds • Définition 2 : nombre moyen d’arcs par nœuds
  • 34. 34/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Diamètre Diamètre = plus long « plus court chemin » 1 2 3 4 5 1 2 3 6 5 4  3  1 1 2 3 6 5 4  ∞
  • 35. 35/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Diamètre
  • 36. 36/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distribution de degrés 1 2 3 4 5 0 1 2 3 4 1 2 3 4 Nombredenœuds Degré des nœuds
  • 37. 37/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distribution de degrés (IN vs OUT) 1 2 3 4 5 0 1 2 #denœuds 0 1 2 0 1 2 3 4 #denœuds Degré IN: OUT:
  • 38. 38/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distribution de degrés : BCE (Adm) 609 041 nœuds de degré 1 Société avec un admin. Admin. d’une seule société 1 nœud de degré 400 1 admin. de 400 sociétés ? 1 société avec 400 admin. ? Sur une période de 10 ans
  • 39. 39/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distribution de degrés : BCE (Adm) Suppression de 0,5% des nœuds les plus gros Mode : - 1 société par admin. - 3 admin. par société Nœuds « people » de degré 1  Admin. d’une seule société Nœuds « company » de degré 1  Avec un seul admin.
  • 40. 40/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distribution de degrés : BCE (Adm) Sociétés avec >250 admin. 1 admin. de 233 sociétés! 0,003 % des nœuds les plus gros (« outliers »)
  • 41. 41/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Métriques générales • Densité : intensité des relations • Diamètre : étalement du réseau • Distribution de degré : « forme » du réseau
  • 42. 42/149Définir – Caractériser – – Visualiser – Manipuler – Interroger CENTRALITÉ Caractériser un réseau
  • 43. 43/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Centralité • Centralité d’un nœud = importance d’un nœud au sein du réseau • Peut se baser sur des caractéristiques : – Du nœud isolé (Degree centrality) – Du nœud et de son voisinage immédiat (K-core) – De l’ensemble du réseau (Betweenness, Page-rank…)
  • 44. 44/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Centralité de degré Centralité : degré du nœud
  • 45. 45/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Centralité d’intermédiarité (betweenness) Centralité : Nombre de « plus courts chemins » passant par le nœud
  • 46. 46/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Centralité de proximité (closeness) Centralité : Distance moyenne de tous les autres nœuds
  • 47. 47/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Page-rank Page-rank (Google) : Diffusion de son importance vers ses voisins
  • 48. 48/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Centralité • Degré : nombre de voisins • Betweenness : importance en tant que relai, connecteur, intermédiaire • Page-rank : importance par diffusion • Quoi utiliser ? Dépend très fort du business case • Hors présentation : – K-coreness : nombre de voisins de même k-coreness – Closeness : centralité « topologique »
  • 49. 49/149Définir – Caractériser – – Visualiser – Manipuler – Interroger DISTANCE/SIMILARITÉ Caractériser un réseau
  • 50. 50/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Plus court chemin/Distance • Dijkstra : Calcul du « plus court chemin » entre deux nœuds • Chaque lien possède un « poids » (longueur, coût…) • Distance = ∑ poids (=nbr de liens si non pondéré) • Variante « A* » : pour les réseaux géographiques (utilisé par les GPS) • Peut ne pas être unique. Le nombre de « plus courts chemins » est aussi une métrique de proximité
  • 51. 51/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Six degrees of separation • Théorie : distance entre chaque personne sur terre ≤ 6 (via 5 connaissances intermédiaires) • « Degré de séparation » = plus petite distance • Facebook : moyenne des moyennes : 4,57 https://research.fb.com/three-and-a-half-degrees- of-separation/
  • 52. 52/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Similarité de Jaccard Similarité de Jaccard : # voisins communs # voisins totaux 1 2 3 6 7 5 4 2/5 = 0.4
  • 53. 53/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Distance • Plus court chemin • Similarité de Jaccard • Hors présentation : – Connectivité – Nombre de plus courts chemins – Dépendance sociale (social neighbors)
  • 54. 54/149Définir – Caractériser – – Visualiser – Manipuler – Interroger CLUSTERING Caractériser un réseau
  • 55. 55/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composantes connexes CC 2 (30) CC 3 (29) CC 4 (27) CC 5 (18) Composante connexe : ensemble (maximal) de nœuds avec un chemin entre chaque paire de nœuds Composante géante (giant component) : la plus grande CC Beaucoup d’analyses peuvent (doivent) se faire isolément sur chaque composante
  • 56. 56/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composante connexe Giant 2 3 4 Other Taille de la CC Nbre de CC 1 2 25 929 2 3 5 638 3 4 1 584 4 5 614 … … … 35 48 1 36 55 1 37 96 1 38 6 965 132 1 Dimona (all) * Dans la période considérée 25 929 situations avec : - Un employé sans aucun autre* employeur - Dans une entreprise sans autre* employé Giant component : 6,53 millions d’employés (99,3%) sont « collègues de (ex-)collègues de … » via 430K employeurs (92%)
  • 57. 57/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composante géante • Diamètre : 20 • Médiane : distance = 6 •  50 % des « couples » sont « collègue de collègue de collègue » • Percentile 95 : distance = 8 (+1 « de collègue ») • Il y a des « super-connecteurs » : tous les enseignants sont collègues ! P E E EP P P
  • 58. 58/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composante connexe : sub-giants Employeur Employé « BIS » Employé « NISS »
  • 59. 59/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composante connexe : sub-giants
  • 60. 60/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Composante connexe : sub-giants Employeur Employé « BIS » Employé « NISS »
  • 61. 61/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Cliques Triangles
  • 62. 62/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Cliques Entreprise Ont des gérants en commun ? ? Principe utilisé pour détecter les « spider constructions » (avec une définition de « clique » un peu plus souple)
  • 63. 63/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Communautés Partition Communauté Groupe Module Cluster Coefficient de modularité : - Mesure de la qualité d’une partition - [-1, 1], liens inter-cluster vs liens intra- cluster - Bonne partition (coef. ≈ 1 ): liens intra-cluster >> liens inter-cluster - Optimisation = NP-hard - Basé sur les liens, pas sur les attributs Intra-cluster Inter-cluster
  • 64. 64/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Communautés : intérêts • Différentes communautés ont souvent des propriétés différentes de l’ensemble • Permet l’analyse des communautés une par une • Permet l’identification des « missing links » et des « fake links » • Inférer des caractéristiques (attributs) • Vue d’ensemble avec un « graphe de clusters » (+drill-down)
  • 65. 65/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Algorithme de Louvain (UCL, 2008) 54 7 6 1 2 3 8 Améliore la « modularity »? Si oui, migrer 54 7 6 1 2 3 8 Phase1Phase2 5,6,72, 41,3,8 Fastunfoldingofcommunitiesinlargenetworks, V.Blondel,J.-L.Guillaume,R.Lambiotte,E.Lefebvre,2008 7
  • 66. 66/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Clustering • Composantes connexes : groupes « déconnectés » • Cliques : groupes « totalement connectés » • Communautés : groupes « sociaux » Hors présentation : notion de « fortement » ou « faiblement » connecté si on tient compte des réseaux dirigés
  • 67. 67/149Définir – Caractériser – – Visualiser – Manipuler – Interroger HOMOPHILIE Caractériser un réseau
  • 68. 68/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Homophilie / Assortativité • Homophilie / Assortativité : formalisation du « qui se ressemble s’assemble » • Réseau « homophile » : les nœuds similaires sont mieux liés que les nœuds différents • En détection de fraude/criminalité : plus de chances de trouver des fraudeurs dans le voisinage d’un fraudeur que n’importe où
  • 69. 69/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Questions ?
  • 70. 70/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Pause !
  • 71. 71/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Visualiser un réseau http://www.annmccranie.net/
  • 72. 72/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Visualiser
  • 73. 73/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SPATIALISATION (LAYOUT) Visualiser un réseau
  • 74. 74/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Spatialisation • Cas simple : graphe planaire = qui peut se dessiner sans croisement • En général : – Minimiser les croisements – Rapprocher les nœuds connectés – Éloigner les nœuds non-connectés 54 7 6 1 2 3 8
  • 75. 75/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Spatialisation • Force-directed : – Force attractive (spring) entre deux nœuds liés – Force répulsive entre tous les nœuds • Spectral : Utilisation des vecteurs/valeurs propres (eigenvectors/values) • Autres : Hiérarchiques, circulaires, linéaires…
  • 76. 76/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Spatialisation Yifan Hu ForceAtlas2 OpenOrd Fruchterman Reingold
  • 77. 77/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SIMPLIFICATION Visualiser un réseau
  • 78. 78/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Simplification • Au-delà de quelques centaines de nœuds, visualiser un graphe est illusoire • Plusieurs méthodes permettent une approche – Découper le graphe – Supprimer des nœuds – Fusionner des nœuds
  • 79. 79/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Découper le graphe • Composantes connexes  Méthode naturelle, pas de perte • Communautés  On perd les relations inter-communauté
  • 80. 80/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Filtrer des nœuds • Supprimer les super-connecteurs (degré élevé)  augmente le nombre de composantes connexes • Supprimer les feuilles (degré/K-core faible)  focus sur le « backbone/core »
  • 81. 81/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Fusionner des nœuds • Contraction : fusionner des groupes • Projection bipartite : conversion d’un graphe biparti en 2 graphes unipartis.
  • 82. 82/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Contraction
  • 83. 83/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Contraction
  • 84. 84/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Contraction : BCE (Administrateurs) • Administrateurs BCE :  Composante géante = 655.158 nœuds (sur ~106) • On applique Louvain :  743 communautés (~10’’ en mono-thread)
  • 85. 85/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Contraction : BCE (Administrateurs) Tree Star Other Outgoing edges:
  • 86. 86/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Projection bipartite 1 5 2 6 3 4 7 1 2 3 4 5 6 7 Travailleur Employeurs Collègues Travailleurs communs
  • 87. 87/149Définir – Caractériser – – Visualiser – Manipuler – Interroger OUTIL DESKTOP : GEPHI Visualiser un réseau
  • 88. 88/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Gephi
  • 89. 89/149Définir – Caractériser – – Visualiser – Manipuler – Interroger LIBRAIRIE JS: VIS.JS Visualiser un réseau
  • 90. 90/149Définir – Caractériser – – Visualiser – Manipuler – Interroger vis.js <div id="graph"></div> <script type="text/javascript"> var nodes = new vis.DataSet([ {id: 1, label: 'Node 1'}, {id: 2, label: 'Node 2'}, {id: 3, label: 'Node 3'}, ]); var edges = new vis.DataSet([ {from: 1, to: 3}, {from: 1, to: 2}, {from: 3, to: 3} ]); var container = document.getElementById('graph'); var data = { nodes: nodes, edges: edges }; var options = {}; var network = new vis.Network(container, data, options); </script> http://visjs.org/examples/network/basicUsage.html
  • 91. 91/149Définir – Caractériser – – Visualiser – Manipuler – Interroger OUTIL WEB : LINKURIOUS Visualiser un réseau
  • 92. 92/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Linkurio.us
  • 93. 93/149Définir – Caractériser – – Visualiser – Manipuler – Interroger AUTRES OUTILS Visualiser un réseau
  • 94. 94/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Outils desktop • Gephi https://gephi.org OS • TouchGraph http://www.touchgraph.com € • Cytoscape http://www.cytoscape.org OS • Maltego https://www.paterva.com • NodeXL https://nodexl.codeplex.com OS • SAS Network Analytics € • IBM i2 €
  • 95. 95/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Outils Cloud • Linkurio.us https://linkurio.us € • Keylines https://cambridge-intelligence.com/keylines €
  • 96. 96/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Librairies web • Vis.js http://visjs.org OS • Cytoscape.js http://js.cytoscape.org OS • Sigma.js http://sigmajs.org OS • D3.js https://d3js.org OS • OGMA (Linkurio.us SDK) €
  • 97. 97/149Définir – Caractériser – – Visualiser – Manipuler – Interroger USE CASE : SOCDUMPV2 Visualiser un réseau
  • 98. 98/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 : Contexte • Pour différents services d’inspection, on veut visualiser le réseau d’un groupe de personnes ou entreprises (suspectées de dumping social ou autre fraude) • À partir de données de (principalement) : – Dimona : relations employeurs – employés (en Belgique) – BCE/KBO : relations sociétés – mandataires – Limosa : Travailleurs étrangers travaillant en Belgique – DDT : Sociétés – Chantiers – Sous-traitants – CAW : Chantiers – Travailleurs – Sociétés
  • 99. 99/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 : modules Dimona BCE/KBO DDT Limosa CAW
  • 100. 100/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 : modules • Chaque module produit 2 types d’outputs : – Des nœuds : personnes, entreprises, POW – Des relations • Les nœuds d’outputs de chaque module peuvent servir d’input pour un autre • Exemple : NISS –[BCE]-> Entreprises –[Dimona]-> Employés
  • 101. 101/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 : qualité • La qualité n’est pas toujours au rendez-vous ! • Une entreprise peut être désignée soit par un identifiant « source authentique » (numéro BCE, matricule…), soit par une un numéro interne à l’application (principalement DDT, Limosa) • Idem pour les personnes : numéro NISS, ou numéro interne
  • 102. 102/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 : Flux CBE Dimona BCE Limosa DDT Seed DDT Limosa BCE Filter [BCE]
  • 103. 103/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SocDumpv2 • Après la recherche des données, on va : – Collecter les adresses des entreprises – Enrichir les nœuds (nom des entreprises et des personnes, dates de naissance) – Détecter et (éventuellement) fusionner les doublons – Calculer une série de métriques (distance, centralité…) • On visualise ensuite le résultat : Gephi, TouchGraph…
  • 104. 104/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Manipuler un réseau
  • 105. 105/149Définir – Caractériser – – Visualiser – Manipuler – Interroger IGRAPH (PYTHON/R) Manipuler un réseau
  • 106. 106/149Définir – Caractériser – – Visualiser – Manipuler – Interroger iGraph • iGraph : librairie C de création, manipulation et analyse de graphes • Interfacé avec R, Python, Mathematica • Open Source, GNU GPL v2 • Très populaire dans la communauté scientifique • + : standard, multi-langage, natif, très riche • - : mono-cpu, installation pas toujours aisée
  • 107. 107/149Définir – Caractériser – – Visualiser – Manipuler – Interroger iGraph : fonctions • Génération : de nombreux modèles • Analyse : centralité, chemins, communauté, recherche de pattern/motifs, comparaison isomorphique… • Modification : projection bipartite, extraction • Visualisation : layout, génération d’image • Import/Export
  • 108. 108/149Définir – Caractériser – – Visualiser – Manipuler – Interroger iGraph, Python vs R. Python g = ig.Graph() g.add_vertices(["a","b","c"]) g.add_edges([("a", "b"), ("a", "c")]) g.vs["label"] = ["x","y","z"] g.vs[2]["name"] = "C" R g <-graph(edges = c("a", "b", "a", "c")) V(g)$label = c("x", "y", "z") V(g)$name[2] = "C"
  • 109. 109/149Définir – Caractériser – – Visualiser – Manipuler – Interroger BIG DATA: GIRAPH & GRAPHX Manipuler un réseau
  • 110. 110/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphX • Librairie de manipulation de graphes pour Spark (framework open source de calcul distribué/Big Data) • Spark : – Souvent utilisé sur Hadoop (pour HDFS) – En Scala, Java ou Python – GraphX : Uniquement en Scala • Basé sur les RDDs (non-modifiables) • + : Permet la manipulation de très gros graphes • - : Librairie très limitée (à ce stade) http://spark.apache.org/graphx/
  • 111. 111/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphX // Create an RDD for the vertices val users: RDD[(VertexId, (String, String))] = sc.parallelize(Array((3L, ("rxin", "student")), (7L, ("jgonzal", "postdoc")), (5L, ("franklin", "prof"))))) // Create an RDD for edges val relationships: RDD[Edge[String]] = sc.parallelize(Array(Edge(3L, 7L, "collab"), Edge(5L, 3L, "advisor"), Edge(5L, 7L, "pi"))) Graph val graph = Graph(users, relationships, defaultUser)
  • 112. 112/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Giraph • "Apache Giraph is an iterative graph processing system built for high scalability.“ • Extension de Pregel (Google) • Utilisé par Facebook • Basé sur MapReduce (Hadoop) http://giraph.apache.org
  • 113. 113/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphX vs Giraph • GraphX créé pour être plus performant que Giraph (moins de passage par le disque) • Benchmark par GraphX largement en sa faveur… • Mais des benchmarks de Facebook montrent le contraire https://code.facebook.com/posts/319004238457019/ https://amplab.cs.berkeley.edu/wp-content/uploads/2014/09/graphx.pdf
  • 114. 114/149Définir – Caractériser – – Visualiser – Manipuler – Interroger www.neo4j.com Interroger un réseau
  • 115. 115/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GRAPH DATABASES Interroger un réseau
  • 116. 116/149Définir – Caractériser – – Visualiser – Manipuler – Interroger SELECT Workers.Name FROM Workers JOIN Companies ON Workers.Employer_ID = Companies.ID WHERE Companies.Name = 'Smals' RDBMS et relations Workers ID Name Employer_ID Companies ID Name Ce qui intéresse le développeur Comment les relations sont implémentées Employés de Smals ? RDBMS : Relational DataBase Management System
  • 117. 117/149Définir – Caractériser – – Visualiser – Manipuler – Interroger RDBMS et relations Workers ID Name Companies ID Name SELECT Workers.Name FROM Workers JOIN Works_for ON Workers.ID = Works_for.Worker_ID JOIN Companies ON Works_for.Company_ID = Companies.ID WHERE Companies.Name = 'Smals' Works_for Worker_ID Company_ID From_date Ce qui intéresse le développeur Comment les relations sont implémentées Employés de Smals ?
  • 118. 118/149Définir – Caractériser – – Visualiser – Manipuler – Interroger RDBMS et relations ID Name 1 Alice 2 Bob 3 Camille 4 Zoé 1: Alice 2: Bob 3: Camille 4: Zoé Liker_ID Liked_ID 1 3 2 1 2 3 3 2 3 4 SELECT p1.Name FROM People p1 JOIN Likes ON Likes.Liked_ID = p1.ID JOIN People p2 ON Likes.Liker_ID = p2.ID WHERE p2.Name = "Bob" Qui Bob aime ?
  • 119. 119/149Définir – Caractériser – – Visualiser – Manipuler – Interroger RDBMS et relations 1: Alice 2: Bob 3: Camille 4: Zoé Qui Bob (aime)² ? ID Name 1 Alice 2 Bob 3 Camille 4 Zoé Liker_ID Liked_ID 1 3 2 1 2 3 3 2 3 4SELECT p1.Name FROM People p1 JOIN Likes l1 ON l1.Liked_ID = p1.ID JOIN Likes l2 ON l1.Liker_ID = l2.Liked_ID JOIN People p2 ON l2.Liker_ID = p2.ID WHERE p2.Name = "Bob"
  • 120. 120/149Définir – Caractériser – – Visualiser – Manipuler – Interroger RDBMS et relations : limitations Relations 1-n Relations m-n (ou 1-n avec attributs) • Détourne le rôle d’un attribut • Pas de type « Key » • Détourne le rôle d’une table • Pas distinguable des autres • Contrainte d’intégrité possible (externe à la table) • Structure de la relation à préciser à chaque requête • Join : Lourd en écriture et en exécution Workers ID Name Employer_ID Companies ID NameForeign key: Workers ID Name Companies ID Name Works_for Worker_ID Company_ID From_date Join table:
  • 121. 121/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Solutions NoSQL Key-value Column Document Graph K V
  • 122. 122/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphDB : objectifs Objectifs des bases de données orientées graphes : SELECT p1.Name FROM People p1 JOIN Likes l1 ON l1.Liked_ID = p1.ID JOIN Likes l2 ON l1.Liker_ID = l2.Liked_ID JOIN People p2 ON l2.Liker_ID = p2.ID WHERE p2.Name = "Bob" MATCH (:People {Name:"Bob"}) -[:Likes*2]-> (p:People) RETURN p.Name Querying language qui sépare la définition des relations (à la création) et la recherche de « matching » Moteur efficace pour le parcours des relations Cypher (Neo4j)
  • 123. 123/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphDB: moins de code MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report) WHERE boss.name = "John Doe" RETURN sub.name AS Subordinate, count(report) AS Total TutorialNeo4j:https://youtu.be/-dCeFEqDkUI?t=246
  • 124. 124/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphDB : moins de code “We found Neo4j to be literally thousands of times faster than our prior MySQL solution, with queries that require 10-100 times less code. Today, Neo4j provides eBay with functionality that was previously impossible.” https://neo4j.com/news/graph-databases-provide- crystal-ball-online-recommendations-wal-mart-ebay/
  • 125. 125/149Définir – Caractériser – – Visualiser – Manipuler – Interroger NEO4J Interroger un réseau
  • 126. 126/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Requête Neo4j Name: Vandy BD: 15/09/80 Name: Smals BCE: 0406.798.006 CompanyWorker Par. Com: XXX Start: 01/05/13 MATCH (w:Worker) -[r:WORKS_FOR]-> (c:Company) WHERE c.Name = "Smals" RETURN w.Name, w.BD, r.Start Nœud de type « Worker » Relation de type « WORKS_FOR » Nœud de type « Company » MATCH (w:Worker) -[r:WORKS_FOR]-> (c:Company {Name:"Smals"}) RETURN … Variante : Liste des employés de Smals WORKS_FOR
  • 127. 127/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Requête Neo4j Name: Vandy BD: 15/09/80 Name: Smals BCE: 0406.798.006 CompanyWorker MATCH (w1:Worker)-[:WORKS_FOR]->(c:Company {Name:”Smals”}), (w2:Worker)-[:WORKS_FOR]->(c), (w1)-[:RELATIVES]->(w2) RETURN w1.Name, w2.Name Name: Victor BD: 30/03/85 Worker Type: cousin Liste des employés de Smals apparentés Par. Com: XXX Start: 01/05/13 WORKS_FOR Par. Com: YYY Start: 15/09/10 WORKS_FOR RELATIVES
  • 128. 128/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Requête Neo4j MATCH (w1:Worker)-[:WORKS_FOR]->(c:Company {Name:”Smals”}) <-[:WORKS_FOR]-(w2:Worker)-[:RELATIVES]->(w1) RETURN w1.Name, w2.Name Liste des employés de Smals apparentés Name: Vandy BD: 15/09/80 Name: Smals BCE: 0406.798.006 CompanyWorker Name: Victor BD: 30/03/85 Worker Type: cousin Par. Com: XXX Start: 01/05/13 WORKS_FOR Par. Com: YYY Start: 15/09/10 WORKS_FOR RELATIVES
  • 129. 129/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Fonctionnement RDBMS Graph DB schema WHERE … Search in Companies (with index): O(log([Table size]) Search in nodes (with index) : O(log([DB size]) Relation JOIN : - Search in Works_for : O(log([Table size])) - Search in Workers : O(log([Table size]) x [nb res]) Follow pointers in node : O([nb of employees]) Workers ID Name Companies ID Name Works_for Worker_ID Company_ID From_date Name: Vandy BD: 15/09/80 Name: Smals BCE: 0406.798.006 CompanyWorker WORKS_FOR Par. Com: XXX Start: 01/05/13
  • 130. 130/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Performance • Réseau social de 106 de nœuds • ~50 voisins par nœuds • Recherche des « amis d’amis » Depth MySQL Neo4j # results 2 0,02 0,01 2 500 3 30,27 0,17 110 000 4 1543,51 1,36 600 000 5 Unfinished 2,13 800 000 Scénario très favorable aux graph DB ! GraphDatabases,I.Robinsonetal. 0 500 1000 1500 2000 2 3 4 5
  • 131. 131/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Neo4j : Création des données Name: Vandy BD: 15/09/80 Name: Smals BCE: 0406.798.006 CompanyWorker CREATE (:Person {Name:"Vandy", BD:"15/09/80"}) CREATE (:Company {Name:"Smals", BCE:"0406…"}) MATCH (p:Person {Name: "Vandy"}), (c:Company {Name: "Smals"}) CREATE (p)-[:WORKS_FOR {Start:…}]->(c) OU: CREATE (:Person {Name:"Vandy", BD:"15/09/80"}) -[:WORKS_FOR {Start:…}]->(:Company {Name:"…", …}) Par. Com: XXX Start: 01/05/13 WORKS_FOR
  • 132. 132/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Neo4j : importation de données • Dans la pratique : importation de fichiers CSV (à préparer !!) • Via une commande Cypher (LOAD CSV FROM…) – Facile pour des petits fichiers – Lent à l’exécution • En command line – Beaucoup plus rapide – Mal documenté
  • 133. 133/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GRAPHDB : LA SOLUTION ? Interroger un réseau
  • 134. 134/149Définir – Caractériser – – Visualiser – Manipuler – Interroger 0011010110 1110111010 1011101010 RDBMS ou GraphDB ? 1 SQL 2 0011010110 1110111010 1011101010 00110 11101 10111 10110 11010 01010 3 0011010110 1110111010 1011101010 0011010110 1110111010 1011101010 0011010110 1110111010 1011101010 et SQL SQL
  • 135. 135/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphDB : Avantages • Langage plus proche du modèle • Pas de clés à gérer, ni de contrainte d’intégrité • Pas de structures de relations à chaque requête • Très efficace pour le parcours de relations • Beaucoup de champs d’application : recommandation, fraude, infra, MDM, KM… • Neo4J: ACID, schema-less
  • 136. 136/149Définir – Caractériser – – Visualiser – Manipuler – Interroger GraphDB : limitations • Pas la maturité des RDBMS (robustesse, haute dispo., communauté…) • Pas de standard • Survie à l’effet de mode ? (cf OO DB) • Pas optimal pour des recherches, agrégation, batch process, transactionnel • Pas une alternative, plutôt un complément (ne résout pas les mêmes problèmes)
  • 137. 137/149Définir – Caractériser – – Visualiser – Manipuler – Interroger USE CASE : SUPERBONUS Interroger un réseau
  • 138. 138/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Superbonus : contexte • Avec le TaxShift (2016), des avantages sont donnés aux nouveaux employeurs • Beaucoup d’employeurs existants se recréent pour profiter de ces avantages • Le « Network Analytics » permet d’identifier beaucoup de ces cas
  • 139. 139/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Data collection DmfA: SuperBonus requestors 11078 employers SB SB SB Dimona: Worker in Periods 2015-2016 27056 workers W W W W Dimona: Employers in Periods 2015 15416 employers Em Em Em BCE: Addresses (3296 addr.) + cotenant A A BCE: Executors + other companies Ex Ex Ex Em Em
  • 140. 140/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Full transfert SB W W WEm W COUNT(W) > Em.Worker_Cnt_2015 * 80% COUNT(W) > SB.Worker_Cnt_2016 * 80% A Ex W Worker Em Employer without SB SB Employer with SB A Address Ex Executor MATCH (c_sb:SB)--(w:Worker)--(c_old:Company) WHERE c_sb <> c_old OPTIONAL MATCH (c_sb)--(e:Executor)--(c_old) OPTIONAL MATCH (c_sb)--(a:Address)--(c_old) WITH c_sb, c_old, COUNT(DISTINCT w) AS w_count WHERE w_count > c_sb.WORKER_CNT_16 * 0.8 AND w_count > c_old.WORKER_CNT_15 * 0.8 RETURN c_sb, c_old, w_cnt
  • 141. 141/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Shared admin and (worker or address) SBWEm COUNT(W) > 0 OR COUNT(A) > 0 A Ex MATCH (sb:SB)--(e:Executor)--(comp:Company) WHERE sb <> comp OPTIONAL MATCH (sb)--(w:Worker)--(comp) OPTIONAL MATCH (sb)--(a:Address)--(comp) WITH sb, comp, COUNT(DISTINCT w) AS Workers_count, COUNT(DISTINCT a) AS Addresses_count WHERE (Workers_count>0 OR Addresses_count>0) RETURN sb, comp, … W Worker Em Employer without SB SB Employer with SB A Address Ex Executor
  • 142. 142/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Conclusions
  • 143. 143/149Définir – Caractériser – – Visualiser – Manipuler – Interroger En résumé Caractériser (théorie) : tout un réseau, un nœud (centralité), deux nœuds (distance), un groupe de nœuds (clustering) Visualiser : Desktop, Javascript, Cloud Manipuler (coding) : Envir. classiques ou Big Data Interroger (graph DB) : focus sur les relations Application : fraude, gestion des infras/logicielle, recommandation, intelligence, KM…
  • 144. 144/149Définir – Caractériser – – Visualiser – Manipuler – Interroger • De la place pour les graph analytics/graph DB dans nos institutions • Pas uniquement pour la fraude ! • Pour les data-scientists/BI :  nouvelle façon de réfléchir, centré sur les relations • Pour les DBA/développeurs :  nouvelle famille de DB, complémentaires • Pour les analystes/business :  inspiration pour de nouveaux use cases Conclusions
  • 145. 145/149Définir – Caractériser – – Visualiser – Manipuler – Interroger • Préparation des données : – R/Python + igraph/graphx • Première analyse : – Gephi/TouchGraph • Production : – GraphDB (Neo4j…) • Pour le client : – Interactif (futur) : libraire JS / outils « à la » Linkurio.us – Statique : Gephi/TouchGraph, igraph  Excel, PDF… Conclusions : expérience personnelle
  • 146. 146/149Définir – Caractériser – – Visualiser – Manipuler – Interroger • Blogs : – https://www.smalsresearch.be/un-fraudeur-ne-fraude-jamais-seul/ – https://www.smalsresearch.be/un-fraudeur-ne-fraude-jamais-seul- partie-2/ – https://www.smalsresearch.be/bases-de-donnees-relationnelles- adequates-pour-des-relations/ – https://www.smalsresearch.be/graph-db-vs-rdbms/ • Autres : – NoSQL - Hype ou Innovation, Grégory Ogonowski, https://www.smalsresearch.be/publications/document/?docid=59 Références : www.smalsresearch.be
  • 147. 147/149Définir – Caractériser – – Visualiser – Manipuler – Interroger • Graph Databases, Robinson & all, O’Reilly 2015 • Fraud Detection: Discovering Connections with Graph Databases, Neo4j, Sodawksi & Rathle • Fraud Analytics Using Descriptive, Predictive, and Social Network Techniques: A Guide to Data Science for Fraud Detection, Bart Baesens, Veronique Van Vlasselaer, Wouter Verbeke, Willey, 2015 Références
  • 148. 148/149Définir – Caractériser – – Visualiser – Manipuler – Interroger Vandy Berten 02/787.57.32 vandy.berten@smals.be More on Smals Research : Website : www.smalsresearch.be Blog : www.smalsresearch.be/blog Twitter : @SmalsResearch