Après toutes ces années, nous sommes tous convaincus que le ML peut, sinon mieux fonctionner, du moins égaler les solutions pré-ML presque partout. Par exemple, pour certaines contraintes de règles, nous réfléchirons tous à la question de savoir si elles peuvent être remplacées par un modèle ML basé sur une arborescence. Mais le monde n’est pas toujours noir et blanc, et même si l’apprentissage automatique a certainement sa place dans la résolution des problèmes, il n’est pas toujours la meilleure solution. Les systèmes basés sur des règles peuvent même surpasser l'apprentissage automatique, en particulier dans les domaines où l'explicabilité, la robustesse et la transparence sont essentielles.
Dans cet article, je présenterai quelques cas pratiques et comment la combinaison de règles manuelles et de ML améliore notre solution.
Un système basé sur des règles fournit une aide à la prise de décision grâce à des règles prédéfinies. Le système évalue les données en fonction de règles stockées et effectue des opérations spécifiques basées sur des mappages.
Voici quelques exemples :
Détection de fraude : dans la détection de fraude, des systèmes basés sur des règles peuvent être utilisés pour signaler et enquêter rapidement sur les transactions suspectes en fonction de règles prédéfinies.
Par exemple, les tricheurs d'échecs, leur méthode de base consiste à installer une application d'échecs informatique dans une autre fenêtre et à utiliser le programme pour jouer aux échecs. Quelle que soit la complexité du programme, chaque étape prend 4 à 5 secondes. Par conséquent, un « seuil » est ajouté pour calculer le temps de chaque pas du joueur. Si la fluctuation n'est pas importante, il peut être jugé comme tricheur, comme le montre la figure ci-dessous :
Industrie de la santé. : Des systèmes basés sur des règles peuvent être utilisés. Gérez les prescriptions et évitez les erreurs de médication. Ils peuvent également être très utiles pour aider les médecins à prescrire des analyses supplémentaires aux patients en fonction des résultats antérieurs.
Gestion de la chaîne d'approvisionnement : dans la gestion de la chaîne d'approvisionnement, des systèmes basés sur des règles peuvent être utilisés pour générer des alertes de faible stock, aider à gérer les dates d'expiration ou les lancements de nouveaux produits.
Les systèmes d'apprentissage automatique (ML) utilisent des algorithmes pour apprendre à partir des données et faire des prédictions ou entreprendre des actions sans avoir à être explicitement programmés. Les systèmes d’apprentissage automatique utilisent les connaissances acquises grâce à la formation sur de grandes quantités de données pour faire des prédictions et prendre des décisions concernant de nouvelles données. Les algorithmes de ML peuvent améliorer leurs performances à mesure que davantage de données sont utilisées pour la formation. Les systèmes d'apprentissage automatique incluent le traitement du langage naturel, la reconnaissance d'images et de parole, l'analyse prédictive, etc.
Détection de fraude : les banques peuvent utiliser des systèmes d'apprentissage automatique pour tirer des enseignements des transactions frauduleuses passées et identifier les activités frauduleuses potentielles en temps réel. Ou bien, il pourrait effectuer une ingénierie inverse du système et rechercher des transactions qui semblent très « anormales ».
Soins de santé : les hôpitaux peuvent utiliser des systèmes ML pour analyser les données des patients et prédire la probabilité qu'un patient développe une certaine maladie sur la base de certaines radiographies.
Les systèmes basés sur des règles et les systèmes ML ont leurs propres avantages et inconvénients
Les avantages des systèmes basés sur des règles sont évidents :
Inconvénients :
Les avantages des systèmes basés sur le ML sont également évidents
Inconvénients :
Grâce à la comparaison, nous avons constaté que les avantages et les inconvénients des deux systèmes ne sont pas contradictoires et sont complémentaires. Existe-t-il donc un moyen. les combiner ? Comment combiner leurs avantages ?
Les systèmes hybrides, qui combinent des systèmes basés sur des règles et des algorithmes d'apprentissage automatique, sont devenus de plus en plus populaires récemment. Ils peuvent fournir des résultats plus robustes, précis et efficaces, en particulier lorsqu’il s’agit de problèmes complexes.
Jetons un coup d'œil à un système hybride qui peut être mis en œuvre à l'aide de l'ensemble de données de location :
Ingénierie des fonctionnalités : convertissez les étages en l'une des trois catégories suivantes : élevé, moyen ou faible, en fonction de l'étage du bâtiment. nombre. Cela peut améliorer l'efficacité des modèles ML
Des règles codées en dur peuvent être utilisées dans le cadre du processus d'ingénierie des fonctionnalités pour identifier et extraire les fonctionnalités importantes dans les données d'entrée. Par exemple, si le domaine problématique est clair et sans ambiguïté, les règles peuvent être définies facilement et avec précision, et des règles codées en dur peuvent être utilisées pour créer de nouvelles fonctionnalités ou modifier des fonctionnalités existantes afin d'améliorer les performances du modèle d'apprentissage automatique. Bien que les règles de codage en dur et l’ingénierie des fonctionnalités soient deux techniques différentes, elles peuvent être utilisées ensemble pour améliorer les performances des modèles d’apprentissage automatique. Les règles codées en dur peuvent être utilisées pour créer de nouvelles fonctionnalités ou modifier des fonctionnalités existantes, tandis que l'ingénierie des fonctionnalités peut être utilisée pour extraire des fonctionnalités qui ne sont pas facilement capturées par des règles codées en dur.
Post-traitement : arrondissez ou normalisez le résultat final.
Des règles codées en dur peuvent être utilisées dans le cadre de l'étape de post-traitement pour modifier la sortie du modèle d'apprentissage automatique. Par exemple, si un modèle d'apprentissage automatique génère un ensemble de prédictions incompatibles avec certaines règles ou contraintes connues, des règles codées en dur peuvent être utilisées pour modifier les prédictions afin qu'elles soient conformes aux règles ou contraintes. Les techniques de post-traitement telles que le filtrage ou le lissage peuvent affiner le résultat d'un modèle d'apprentissage automatique en supprimant le bruit ou les erreurs, ou en améliorant la précision globale des prédictions. Ces techniques sont particulièrement efficaces lorsqu'il existe une incertitude dans les prédictions probabilistes de sortie du modèle d'apprentissage automatique ou dans les données d'entrée. Dans certains cas, des techniques de post-traitement peuvent également être utilisées pour améliorer les données d'entrée avec des informations supplémentaires. Par exemple, si un modèle d'apprentissage automatique est formé sur un ensemble de données limité, des techniques de post-traitement peuvent être utilisées pour extraire des fonctionnalités supplémentaires de sources externes (telles que les réseaux sociaux ou les flux d'actualités) afin d'améliorer la précision des prédictions.
Jetons un coup d'œil aux données sur les maladies cardiaques :
Si nous utilisons une forêt aléatoire pour prédire la classe cible :
clf = RandomForestClassifier(n_estimators=100, random_state=random_seed X_train, X_test, y_train, y_test = train_test_split( df.iloc[:, :-1], df.iloc[:, -1], test_size=0.30, random_state=random_seed ) clf.fit(X_train, y_train))
L'une des raisons du choix de la forêt aléatoire ici est ses capacités d’importance des fonctionnalités de construction. L'importance des fonctionnalités utilisées pour l'entraînement est visible ci-dessous :
Regardez les résultats :
y_pred = pd.Series(clf.predict(X_test), index=y_test.index cm = confusion_matrix(y_test, y_pred, labels=clf.classes_) conf_matrix = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=clf.classes_) conf_matrix.plot())
f1_score(y_test, y_pred): 0.74 recall_score(y_test, y_pred): 0.747
C'est à ce moment-là qu'un cardiologue voit votre modèle. Sur la base de son expérience et de ses connaissances du domaine, il estime que la caractéristique de la thalassémie (thal) est bien plus importante que ce qui est indiqué ci-dessus. Nous avons donc décidé de créer un histogramme et de voir les résultats.
Spécifiez ensuite une règle obligatoire
y_pred[X_test[X_test["thal"] == 2].index] = 1
La matrice de confusion résultante devient comme ceci :
f1_score(y_test, y_pred): 0.818 recall_score(y_test, y_pred): 0.9
Le résultat a été grandement amélioré. C’est là que la connaissance du domaine joue un rôle important dans l’évaluation des scores des patients.
L'ensemble de données ci-dessous concerne les transactions frauduleuses bancaires.
L'ensemble de données est fortement déséquilibré :
df["Class"].value_counts() 0 28431 1 4925
Pour créer les règles, nous examinons le diagramme de distribution des fonctionnalités :
Nous allons écrire notre propre classe HybridEstimator qui servira de prédicteur pour les règles manuelles :
from hulearn.classification import FunctionClassifier rules = { "V3": ("<=", -2), "V12": ("<=", -3), "V17": ("<=", -2), } def create_rules(data: pd.DataFrame, rules): filtered_data = data.copy() for col in rules: filtered_data[col] = eval(f"filtered_data[col] {rules[col][0]} {rules[col][1]}") result = np.array(filtered_data[list(rules.keys())].min(axis=1)).astype(int) return result hybrid_classifier = FunctionClassifier(create_rules, rules=rules)
Nous pouvons comparer les résultats d'un système purement basé sur des règles et de la méthode kNN. La raison d'utiliser kNN ici est qu'il peut gérer des données déséquilibrées :
. Comme nous pouvons le voir, avec seulement 3 règles écrites, il fonctionne mieux que le modèle KNN
Notre exemple ici n'est peut-être pas très précis, mais il suffit d'illustrer que le modèle hybride offre des avantages pratiques, tels qu'une rapidité mise en œuvre, bonne réponse aux valeurs aberrantes, robustesse et transparence accrue. Ils sont utiles lorsqu’il s’agit de combiner la logique métier avec l’apprentissage automatique. Par exemple, les systèmes hybrides règles-ML dans le domaine de la santé peuvent diagnostiquer des maladies en combinant des règles cliniques avec des algorithmes d'apprentissage automatique qui analysent les données des patients. L'apprentissage automatique peut obtenir d'excellents résultats sur de nombreuses tâches, mais il nécessite également des connaissances supplémentaires dans un domaine. La connaissance du domaine peut aider les modèles d'apprentissage automatique à mieux comprendre les données, ainsi qu'à prédire et classer avec plus de précision.
Les modèles hybrides peuvent nous aider à combiner la connaissance du domaine et les modèles d'apprentissage automatique. Les modèles hybrides sont généralement composés de plusieurs sous-modèles, chacun étant optimisé pour une connaissance d'un domaine spécifique. Ces sous-modèles peuvent être des modèles basés sur des règles codées en dur, des modèles basés sur des méthodes statistiques, ou encore des modèles basés sur le deep learning.
Les modèles hybrides peuvent utiliser les connaissances du domaine pour guider le processus d'apprentissage des modèles d'apprentissage automatique, améliorant ainsi la précision et la fiabilité du modèle. Par exemple, dans le domaine médical, les modèles hybrides peuvent combiner l’expertise d’un médecin avec la puissance d’un modèle d’apprentissage automatique pour diagnostiquer la maladie d’un patient. Dans le domaine du traitement du langage naturel, les modèles hybrides peuvent combiner les connaissances linguistiques et les capacités des modèles d’apprentissage automatique pour mieux comprendre et générer du langage naturel.
En bref, les modèles hybrides peuvent nous aider à combiner la connaissance du domaine et les modèles d'apprentissage automatique, améliorant ainsi la précision et la fiabilité du modèle, et ayant un large éventail d'applications dans diverses tâches.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!