ECOLE NATIONAL D’INGENIEURS DE SFAX
DEPARTEMENT DE GENIE INFORMATIQUE ET MATHÉMATIQUES APPLIQUÉES
ORGANISME
Laboratoire de recherche ReDCAD
PARCOURS
BIG DATA & MACHINE LEARNING FOR RANKING [E-HEALTH]
PROJET FIN D’ANNEE
RÉALISÉ PAR:
Dorra Chaari
Ghattassi Aycha
Salma Choura
Omrane Mariam
Aymen Ben Salem
ENCADRÉ PAR:
MOUNA TORJMEN
1. C
adre du projet:
Le sujet du projet de fin d’année vise à développer un algorithme de Ranking
qui permet de classifier des agences de tourisme médicale selon des critères
(features) collecté à partir de leur site web. Exemples des Features:
-Nombre d'interventions
-Prix moyen
-Nombre de Photos
-Nombre de médecins
-Nombre d’années d'expériences moyen
-Existence des avis
2. R
éalisation:
En raison du manque d'informations et des bases des données dans ce
sujet, nous sommes obligés d'utiliser une méthode de prédiction de score non
supervisé.
le score à prédire est un nombre continue dans une plage prédéterminée
(entre 0 et 100) donc on ne peut pas utiliser le clustering.
On a choisi d’appliquer les algorithmes du Logique Floue pour prédire le
score.
2.1 Architecture Logicielle Utilisé:
[Link] :
un algorithme en python qui génère une base de données de valeurs des
features aléatoires.
[Link]:
[Link]:
[Link]:
L’interface est Crée en utilisant le framework python Flask.
Flask est un framework open-source de
développement web en Python. Son but principal
est d'être léger, afin de garder la souplesse de la
programmation Python, associé à un système de
templates.
--Fig1:Forme pour sélectionner les caractéristiques
que l'algorithme prend en considération --
--Fig2: les top 4 agences --
--Fig3: List des Agences, leurs scores et bouton pour visiter le site web --
--Fig4: Diagramme pour afficher la variation des scores entre les agences --
[Link]:
● Explication de l’algorithme:
● Fuzzification:
Chaque Feature dans la phase de Fuzzification prend le maximum dans la
base et le minimum pour créer deux courbes : bad, good
● Règles floues:
Maintenant que l'on possède des variables linguistiques, on va pouvoir les passer
dans le moteur d'inférence. La première chose à faire pour cette seconde partie
est donc de lister toutes les règles que l'on connaît et qui s'applique au système.
Une règle doit être sous la forme Si condition, alors conclusion. Le principe
qu’on a choisi pour les règles est très simple. La classe de score pour une entrée
est tout simplement le nombre de features appartenant à la classe good cad si on
a 4 features dont 3 sont good alors le score appartient à la classe 3
IF (((NombreInterventions[bad] AND NombrePhotosBA[bad]) AND NombreMedecins[bad]) AND
MoyenneAnneesExperience[bad]) AND Temoignage[bad] THEN Score[0]
IF (((NombreInterventions[bad] AND NombrePhotosBA[bad]) AND NombreMedecins[bad]) AND
MoyenneAnneesExperience[bad]) AND Temoignage[good] THEN Score[1]
IF (((NombreInterventions[good] AND NombrePhotosBA[good]) AND NombreMedecins[good]) AND
MoyenneAnneesExperience[good]) AND Temoignage[good] THEN Score[2]
● Défuzzification:
La défuzzification consiste à interpréter les degrés d'appartenance des ensembles
flous et les règles floues dans une décision spécifique ou une valeur réelle. Dans
notre cas c’est la valeur du score .
● Exemple de tournage à la main avec deux critères
d’évaluations :
Etape 1 : fuzzification
· C
hoix des entrées/sorties et leurs univers de discours :
o 2
entrées :
1- Number_of_Doctors : [0 .. 10]
2- Experience_Years_Average : [0 .. 14]
o U
ne sortie :
1- Score : [0 .. 100]
· C
lasses d’appartenance :
o Number_of_Doctors : triangulaire ; bad [0 0 10] good [0 10 10]
o Experience_Years_Average : triangulaire ; bad [0 0 14] good [0 14 14]
o Score: triangulaire ; classe_0 [0 0 1/3] classe_1 [0 33 66] classe_2 [33 66
100]
Etape2 : Moteur d’inférences
· L es critères choisis : Number_of_Doctors et Experience_Years_Average
o On choisie une agence qui a :
- Number_of_Doctors =7
- Experience_Years_Average=9
o Les règles à appliquer :
1- Number_of_Doctors good and Experience_Years_Average good Alors Score classe_2
2- Number_of_Doctors good and Experience_Years_Average bad Alors Score classe_1
3- Number_of_Doctors bad and Experience_Years_Average good Alors Score classe_1
4- Number_of_Doctors bad and Experience_Years_Average bad Alors Score classe_0
AND aggregation function : fmin
OR aggregation function : fmax
● exemple: règle 3
● après appliquer les différentes règles,l'étape de moteur d'interférence
donne à la fin cette courbe des conclusions:
Etape 3 : Défuzzification
calcule de score manuel:
La méthode moyenne des maxima (MM) : la moyenne des abscisses des
maxima de l'ensemble flou issu de l'agrégation des conclusions.
score=(36+71)/2=53.5
calcule de score par l’algorithme:
score=56.62612985878171
3. W
ebCrawler:
On a développé un algorithme de web crawling qui permet de parcourir les
sites afin d’extraire les critères dynamiquement.
Vu que la réalisation d’un algorithme standard pour tous les sites est presque
impossible on a juste extraire ces 5 critères: Nom de l’agence, Url de site,
Nombre d’interventions, Moyenne des prix, Témoignage.