Maison >Périphériques technologiques >IA >Deux algorithmes de propagation d'étiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Deux algorithmes de propagation d'étiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

王林
王林avant
2023-04-12 19:28:041137parcourir

L'algorithme de propagation d'étiquettes est un algorithme d'apprentissage automatique semi-supervisé qui attribue des étiquettes à des points de données précédemment non étiquetés. Pour utiliser cet algorithme en apprentissage automatique, seule une petite fraction des exemples comporte des étiquettes ou des classifications. Ces étiquettes sont propagées aux points de données non étiquetés pendant les processus de modélisation, d'ajustement et de prédiction de l'algorithme.

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading


LabelPropagation

LabelPropagation est un algorithme rapide pour trouver des communautés dans des graphiques. Il utilise uniquement la structure du réseau comme guide pour détecter ces connexions et ne nécessite pas de fonction objectif prédéfinie ni d'informations a priori sur la population. La propagation des balises est obtenue en propageant des balises dans le réseau et en formant des connexions basées sur le processus de propagation des balises.

Les balises fermées reçoivent généralement la même balise. Un seul label peut dominer dans des groupes de nœuds densément connectés, mais aura des difficultés dans les régions peu connectées. Les étiquettes seront limitées à un groupe de nœuds étroitement connectés, et lorsque l'algorithme sera terminé, les nœuds qui se retrouveront avec la même étiquette pourront être considérés comme faisant partie de la même connexion. L'algorithme utilise la théorie des graphes comme suit :-

Deux algorithmes de propagation d'étiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

L'algorithme LabelPropagation fonctionne de la manière suivante :-

  • Chaque nœud est initialisé avec une étiquette unique.
  • Ces tags se propagent sur Internet.
  • À chaque itération de propagation, chaque nœud met à jour son étiquette avec l'étiquette à laquelle appartient le nombre maximum de voisins.
  • L'algorithme de propagation des étiquettes atteint la convergence lorsque chaque nœud possède une majorité d'étiquettes de ses voisins.
  • L'algorithme de propagation d'étiquettes s'arrête si la convergence est atteinte ou si un nombre maximum d'itérations défini par l'utilisateur est atteint.

Pour démontrer le fonctionnement de l'algorithme LabelPropagation, nous utilisons l'ensemble de données Pima Indians Lors de la création du programme, j'ai importé les bibliothèques nécessaires à son exécution

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Copiez une copie des données et utilisez la colonne d'étiquette comme colonne. cible de formation

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Visualisation à l'aide de matplotlib :

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Randomisez 70 % des étiquettes de l'ensemble de données à l'aide d'un générateur de nombres aléatoires. Ensuite, des étiquettes aléatoires se voient attribuer -1 :-

Deux algorithmes de propagation d'étiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Après le prétraitement des données, définissez les variables dépendantes et indépendantes, qui sont respectivement y et X. La variable y est la dernière colonne et la

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Jetons un coup d'œil à un autre algorithme LabelSpreading.

LabelSpreadingDeux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

LabelSpreading est également une méthode d'apprentissage semi-supervisée populaire. Créez un graphique reliant les exemples de l'ensemble de données d'entraînement et propagez les étiquettes connues à travers les bords du graphique pour étiqueter les exemples non étiquetés.

LabelSpreading a été proposé par Dengyong Zhou et al. dans leur article de 2003 intitulé « Apprendre avec une cohérence locale et mondiale ». La clé de l’apprentissage semi-supervisé est l’hypothèse a priori de cohérence, ce qui signifie : les points proches sont susceptibles d’avoir la même étiquette, et les points sur la même structure (souvent appelée variété cluster) sont très susceptibles d’avoir la même étiquette.

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreadingLabelSpreading peut être considérée comme la forme régularisée de LabelPropagation. En théorie des graphes, la matrice laplacienne est la représentation matricielle du graphe. La formule de la matrice laplacienne est :

.

L est la matrice laplacienne, D est la matrice des degrés et A est la matrice de contiguïté.

Ce qui suit est un exemple simple d'étiquetage de graphe non orienté et le résultat de sa matrice laplacienne

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Cet article utilisera l'ensemble de données du sonar pour démontrer comment utiliser la fonction LabelSpreading de sklearn.

Il y a plus de bibliothèques ici que ci-dessus, alors expliquez brièvement :

  • Numpy effectue des calculs numériques et crée des tableaux Numpy
  • Pandas traite les données
  • Sklearn effectue des opérations d'apprentissage automatique
  • Matplotlib et seaborn pour visualiser les données, pour visualiser les données Fournir informations statistiques
  • Avertissement, utilisé pour ignorer les avertissements qui apparaissent lors de l'exécution du programme

Une fois l'importation terminée, utilisez pandas pour lire l'ensemble de données :

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

J'ai créé la carte thermique en utilisant seaborn :-

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Effectuez d'abord un prétraitement simple et supprimez les colonnes hautement corrélées, réduisant ainsi le nombre de colonnes de 61 à 58 :

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Ensuite, mélangez et réorganisez les données, de sorte que les prédictions dans l'ensemble de données brouillées soient généralement meilleures. Pour être exact, faites une copie de l'ensemble de données et définissez y_orig comme cible d'entraînement :

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Utilisez matplotlib pour dessiner un nuage de points 2D des points de données :-

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Utilisez un générateur de nombres aléatoires pour randomiser 60 % de la balise de l'ensemble de données . Ensuite, des étiquettes aléatoires se voient attribuer -1 :-

Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Après le prétraitement des données, définissez les variables dépendantes et indépendantes, qui sont respectivement y et X. La variable y est la dernière colonne et la

En utilisant cette méthode, nous pouvons atteindre une précision de 87,98 % :-Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

Comparaison simple

1. Labelspreading contient alpha=0,2, alpha est appelé coefficient de serrage, qui fait référence à l'utilisation des informations de ses voisins. Ce n'est pas la quantité relative de son étiquette initiale. S'il est 0, cela signifie conserver les informations de l'étiquette initiale. S'il est 1, cela signifie remplacer toutes les informations initiales ; informations ; Deux algorithmes de propagation détiquettes semi-supervisés dans sklearn : LabelPropagation et LabelSpreading

2. Utiliser labelpropagation La matrice de similarité originale construite à partir des données sans modification ; labelspreading minimise une fonction de perte avec des propriétés de régularisation, qui est plus robuste au bruit, itère une version modifiée du graphique original et la normalise en calculant le Matrice laplacienne normalisée Poids de bord.

3. En même temps, LabelSpreading occupe beaucoup de CPU et le taux d'occupation de la mémoire physique n'est pas mauvais ; le taux d'occupation du CPU de LabelPropagation n'est pas mauvais, mais il occupe beaucoup de mémoire physique, et il peut y avoir quelques problèmes avec données à haute latitude.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer