recherche
MaisonPériphériques technologiquesIAMéthodes d'ensemble pour l'apprentissage non supervisé : clustering de matrices de similarité

En machine learning, le terme ensemble fait référence à la combinaison de plusieurs modèles en parallèle, l'idée est d'utiliser la sagesse de la foule pour former un meilleur consensus sur la réponse finale donnée.

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Dans le domaine de l'apprentissage supervisé, cette méthode a été largement étudiée et appliquée, notamment dans les problèmes de classification avec des algorithmes très performants comme RandomForest. Un système de vote/pondération est souvent utilisé pour combiner les résultats de chaque modèle individuel en un résultat final plus robuste et cohérent.

Dans le monde de l'apprentissage non supervisé, cette tâche devient plus difficile. Premièrement, parce que cela englobe les défis du domaine lui-même, nous n’avons aucune connaissance préalable des données pour nous comparer à une cible. Deuxièmement, parce que trouver un moyen approprié de combiner les informations de tous les modèles reste un problème, et il n’existe pas de consensus sur la manière d’y parvenir.

Dans cet article, nous discutons de la meilleure approche sur ce sujet, à savoir le clustering de matrices de similarité.

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

L'idée principale de cette méthode est la suivante : étant donné un ensemble de données X, créer une matrice S telle que Si représente la similarité entre xi et xj. Cette matrice est construite sur la base des résultats de clustering de plusieurs modèles différents.

Matrice de cooccurrence binaire

Créer une matrice de cooccurrence binaire entre les entrées est la première étape de la construction d'un modèle

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Elle est utilisée pour indiquer si deux entrées i et j appartiennent au même cluster.

 import numpy as np from scipy import sparse  def build_binary_matrix( clabels ): data_len = len(clabels) matrix=np.zeros((data_len,data_len))for i in range(data_len):matrix[i,:] = clabels == clabels[i]return matrix  labels = np.array( [1,1,1,2,3,3,2,4] ) build_binary_matrix(labels)

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Utilisez KMeans pour construire une matrice de similarité

Nous avons construit une fonction pour binariser nos clusters, et nous pouvons maintenant entrer dans l'étape de construction de la matrice de similarité.

Nous introduisons ici une méthode courante, qui consiste uniquement à calculer la valeur moyenne entre M matrices de cooccurrence générées par M modèles différents. Nous le définissons comme :

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Lorsque les éléments appartiennent au même cluster, leur valeur de similarité sera proche de 1, et lorsque les éléments appartiennent à des groupes différents, leur valeur de similarité sera proche de 0

Nous construirons une similarité matrice basée sur les étiquettes créées par le modèle K-Means. Réalisé à l’aide de l’ensemble de données MNIST. Pour des raisons de simplicité et d'efficacité, nous n'utiliserons que 10 000 images réduites en PCA.

 from sklearn.datasets import fetch_openml from sklearn.decomposition import PCA from sklearn.cluster import MiniBatchKMeans, KMeans from sklearn.model_selection import train_test_split  mnist = fetch_openml('mnist_784') X = mnist.data y = mnist.target  X, _, y, _ = train_test_split(X,y, train_size=10000, stratify=y, random_state=42 )  pca = PCA(n_components=0.99) X_pca = pca.fit_transform(X)

Pour permettre la diversité entre les modèles, chaque modèle est instancié avec un nombre aléatoire de clusters.

 NUM_MODELS = 500 MIN_N_CLUSTERS = 2 MAX_N_CLUSTERS = 300  np.random.seed(214) model_sizes = np.random.randint(MIN_N_CLUSTERS, MAX_N_CLUSTERS+1, size=NUM_MODELS) clt_models = [KMeans(n_clusters=i, n_init=4, random_state=214) for i in model_sizes]  for i, model in enumerate(clt_models):print( f"Fitting - {i+1}/{NUM_MODELS}" )model.fit(X_pca)

La fonction suivante consiste à créer une matrice de similarité

def build_similarity_matrix( models_labels ):n_runs, n_data = models_labels.shape[0], models_labels.shape[1] sim_matrix = np.zeros( (n_data, n_data) ) for i in range(n_runs):sim_matrix += build_binary_matrix( models_labels[i,:] ) sim_matrix = sim_matrix/n_runs return sim_matrix

Appelez cette fonction :

 models_labels = np.array([ model.labels_ for model in clt_models ]) sim_matrix = build_similarity_matrix(models_labels)

Le résultat final est le suivant :

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Les informations de la matrice de similarité peuvent toujours être post-traitées avant la dernière étape , comme l'application de logarithmes, de polynômes Attendez la transformation.

Dans notre cas, nous garderons le sens original inchangé et réécrirons

Pos_sim_matrix = sim_matrix

Regrouper la matrice de similarité

La matrice de similarité est un moyen de représenter les connaissances construites par la collaboration de tous les modèles de clustering.

Nous pouvons l'utiliser pour voir visuellement quelles entrées sont les plus susceptibles d'appartenir au même cluster et lesquelles ne le sont pas. Cependant, ces informations doivent encore être converties en clusters réels

Cela se fait en utilisant un algorithme de clustering qui peut recevoir une matrice de similarité en tant que paramètre. Ici, nous utilisons SpectralClustering.

 from sklearn.cluster import SpectralClustering spec_clt = SpectralClustering(n_clusters=10, affinity='precomputed',n_init=5, random_state=214) final_labels = spec_clt.fit_predict(pos_sim_matrix)

Comparaison avec le modèle KMeans standard

Comparons-le avec KMeans pour confirmer si notre méthode est efficace.

Nous utiliserons les indicateurs NMI, ARI, de pureté de cluster et de pureté de classe pour évaluer le modèle KMeans standard et comparer avec notre modèle d'ensemble. De plus, nous tracerons la matrice de contingence pour visualiser quelles catégories appartiennent à chaque cluster

from seaborn import heatmap import matplotlib.pyplot as plt  def data_contingency_matrix(true_labels, pred_labels): fig, (ax) = plt.subplots(1, 1, figsize=(8,8)) n_clusters = len(np.unique(pred_labels))n_classes = len(np.unique(true_labels))label_names = np.unique(true_labels)label_names.sort() contingency_matrix = np.zeros( (n_classes, n_clusters) ) for i, true_label in enumerate(label_names):for j in range(n_clusters):contingency_matrix[i, j] = np.sum(np.logical_and(pred_labels==j, true_labels==true_label)) heatmap(contingency_matrix.astype(int), ax=ax,annot=True, annot_kws={"fontsize":14}, fmt='d') ax.set_xlabel("Clusters", fontsize=18)ax.set_xticks( [i+0.5 for i in range(n_clusters)] )ax.set_xticklabels([i for i in range(n_clusters)], fontsize=14) ax.set_ylabel("Original classes", fontsize=18)ax.set_yticks( [i+0.5 for i in range(n_classes)] )ax.set_yticklabels(label_names, fontsize=14, va="center") ax.set_title("Contingency Matrix\n", ha='center', fontsize=20)

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

from sklearn.metrics import normalized_mutual_info_score, adjusted_rand_score  def purity( true_labels, pred_labels ): n_clusters = len(np.unique(pred_labels))n_classes = len(np.unique(true_labels))label_names = np.unique(true_labels) purity_vector = np.zeros( (n_classes) )contingency_matrix = np.zeros( (n_classes, n_clusters) ) for i, true_label in enumerate(label_names):for j in range(n_clusters):contingency_matrix[i, j] = np.sum(np.logical_and(pred_labels==j, true_labels==true_label)) purity_vector = np.max(contingency_matrix, axis=1)/np.sum(contingency_matrix, axis=1) print( f"Mean Class Purity - {np.mean(purity_vector):.2f}" ) for i, true_label in enumerate(label_names):print( f" {true_label} - {purity_vector[i]:.2f}" )   cluster_purity_vector = np.zeros( (n_clusters) )cluster_purity_vector = np.max(contingency_matrix, axis=0)/np.sum(contingency_matrix, axis=0) print( f"Mean Cluster Purity - {np.mean(cluster_purity_vector):.2f}" ) for i in range(n_clusters):print( f" {i} - {cluster_purity_vector[i]:.2f}" )   kmeans_model = KMeans(10, n_init=50, random_state=214) km_labels = kmeans_model.fit_predict(X_pca)  data_contingency_matrix(y, km_labels)  print( "Single KMeans NMI - ", normalized_mutual_info_score(y, km_labels) ) print( "Single KMeans ARI - ", adjusted_rand_score(y, km_labels) ) purity(y, km_labels)

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

 data_contingency_matrix(y, final_labels)  print( "Ensamble NMI - ", normalized_mutual_info_score(y, final_labels) ) print( "Ensamble ARI - ", adjusted_rand_score(y, final_labels) ) purity(y, final_labels)

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

Méthodes densemble pour lapprentissage non supervisé : clustering de matrices de similarité

En observant les valeurs ci-dessus, il apparaît clairement que la méthode Ensemble peut améliorer efficacement la qualité du clustering. Dans le même temps, un comportement plus cohérent peut également être observé dans la matrice de contingence, avec de meilleures catégories de répartition et moins de « bruit »

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
Comment construire votre assistant d'IA personnel avec HuggingFace SmollmComment construire votre assistant d'IA personnel avec HuggingFace SmollmApr 18, 2025 am 11:52 AM

Exploiter la puissance de l'IA sur disvise: construire une CLI de chatbot personnelle Dans un passé récent, le concept d'un assistant d'IA personnel semblait être une science-fiction. Imaginez Alex, un passionné de technologie, rêvant d'un compagnon d'IA intelligent et local - celui qui ne dépend pas

L'IA pour la santé mentale est attentivement analysée via une nouvelle initiative passionnante à l'Université de StanfordL'IA pour la santé mentale est attentivement analysée via une nouvelle initiative passionnante à l'Université de StanfordApr 18, 2025 am 11:49 AM

Leur lancement inaugural de l'AI4MH a eu lieu le 15 avril 2025, et le Dr Tom Insel, M.D., célèbre psychiatre et neuroscientifique, a été le conférencier de lancement. Le Dr Insel est réputé pour son travail exceptionnel dans la recherche en santé mentale et la techno

La classe de draft de la WNBA 2025 entre dans une ligue qui grandit et luttant sur le harcèlement en ligneLa classe de draft de la WNBA 2025 entre dans une ligue qui grandit et luttant sur le harcèlement en ligneApr 18, 2025 am 11:44 AM

"Nous voulons nous assurer que la WNBA reste un espace où tout le monde, les joueurs, les fans et les partenaires d'entreprise, se sentent en sécurité, appréciés et autonomes", a déclaré Engelbert, abordé ce qui est devenu l'un des défis les plus dommageables des sports féminins. L'anno

Guide complet des structures de données intégrées Python - Analytics VidhyaGuide complet des structures de données intégrées Python - Analytics VidhyaApr 18, 2025 am 11:43 AM

Introduction Python excelle comme un langage de programmation, en particulier dans la science des données et l'IA générative. La manipulation efficace des données (stockage, gestion et accès) est cruciale lorsqu'il s'agit de grands ensembles de données. Nous avons déjà couvert les nombres et ST

Premières impressions des nouveaux modèles d'Openai par rapport aux alternativesPremières impressions des nouveaux modèles d'Openai par rapport aux alternativesApr 18, 2025 am 11:41 AM

Avant de plonger, une mise en garde importante: les performances de l'IA sont non déterministes et très usagées. En termes plus simples, votre kilométrage peut varier. Ne prenez pas cet article (ou aucun autre) article comme le dernier mot - au lieu, testez ces modèles sur votre propre scénario

Portfolio AI | Comment construire un portefeuille pour une carrière en IA?Portfolio AI | Comment construire un portefeuille pour une carrière en IA?Apr 18, 2025 am 11:40 AM

Construire un portefeuille AI / ML hors concours: un guide pour les débutants et les professionnels La création d'un portefeuille convaincant est cruciale pour sécuriser les rôles dans l'intelligence artificielle (IA) et l'apprentissage automatique (ML). Ce guide fournit des conseils pour construire un portefeuille

Ce que l'IA agentique pourrait signifier pour les opérations de sécuritéCe que l'IA agentique pourrait signifier pour les opérations de sécuritéApr 18, 2025 am 11:36 AM

Le résultat? L'épuisement professionnel, l'inefficacité et un écart d'élargissement entre la détection et l'action. Rien de tout cela ne devrait être un choc pour quiconque travaille en cybersécurité. La promesse d'une IA agentique est devenue un tournant potentiel, cependant. Cette nouvelle classe

Google contre Openai: la lutte contre l'IA pour les étudiantsGoogle contre Openai: la lutte contre l'IA pour les étudiantsApr 18, 2025 am 11:31 AM

Impact immédiat contre partenariat à long terme? Il y a deux semaines, Openai s'est avancé avec une puissante offre à court terme, accordant aux étudiants des États-Unis et canadiens d'accès gratuit à Chatgpt Plus jusqu'à la fin mai 2025. Cet outil comprend GPT - 4O, un A

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP