Problème manquant d'étiquette et exemple de code dans l'apprentissage faiblement supervisé
Introduction :
Dans le domaine de l'apprentissage automatique, l'apprentissage supervisé est une méthode d'apprentissage couramment utilisée. Cependant, lors de l’apprentissage supervisé sur des ensembles de données à grande échelle, le temps et les efforts nécessaires pour étiqueter manuellement les données sont énormes. C’est ainsi qu’un apprentissage faiblement supervisé est né. Un apprentissage faiblement supervisé signifie que seuls certains échantillons des données d’entraînement portent des étiquettes précises, tandis que la plupart des échantillons n’ont que des étiquettes vagues ou incomplètement précises. Cependant, le problème des étiquettes manquantes constitue un défi important dans l’apprentissage faiblement supervisé.
1. Contexte du problème des étiquettes manquantes
Dans les applications pratiques, le coût de l'étiquetage d'ensembles de données à grande échelle est généralement très élevé. Dans des domaines tels que la reconnaissance d’images médicales, le traitement du langage naturel et la vision par ordinateur, il est irréaliste d’étiqueter toutes les données en raison de l’énorme quantité de données, du besoin de connaissances dans le domaine et des limites des ressources humaines. Par conséquent, des méthodes d’apprentissage faiblement supervisées sont nécessaires pour résoudre le problème des étiquettes manquantes.
2. Solution au problème des étiquettes manquantes
L'apprentissage multi-instance est une méthode d'apprentissage faiblement supervisée couramment utilisée. Elle suppose que chaque échantillon est constitué de plusieurs instances, dont seulement. certains cas ont des étiquettes précises. MIL se compose principalement de deux étapes : la sélection des instances et la formation du classificateur. La sélection d'instance résout le problème des étiquettes manquantes en sélectionnant les instances qui représentent le mieux les échantillons à étiqueter.
Exemple de code :
import numpy as np from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 数据准备 X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) # 输入数据 Y_weak = np.array([0, 1, 1, 0]) # 弱标签,只有部分样本有标签 # 实例选择 Y_strong = np.zeros_like(Y_weak) # 强标签 for i, label in enumerate(np.unique(Y_weak)): indices = np.where(Y_weak == label)[0] # 找到标签为label的样本 X_sub = X[indices, :] # 获取对应样本的特征 Y_sub = Y_weak[indices] # 获取对应样本的弱标签 # 训练分类器 clf = SVC(probability=True) clf.fit(X_sub, Y_sub) # 预测所有样本 Y_pred = clf.predict_proba(X)[:, 1] # 更新强标签 Y_strong = np.where(Y_pred > 0.5, 1, Y_strong) # 计算准确率 accuracy = accuracy_score(Y_weak, Y_strong) print("准确率:", accuracy)
L'algorithme de clustering résout le problème des étiquettes manquantes en divisant l'ensemble de données en différentes catégories. Les méthodes d'apprentissage faiblement supervisées basées sur des idées de clustering comprennent généralement deux étapes : le clustering et la propagation des étiquettes.
Exemple de code :
import numpy as np from sklearn.cluster import KMeans from sklearn.metrics import accuracy_score # 数据准备 X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) # 输入数据 Y_weak = np.array([0, 1, 1, 0]) # 弱标签,只有部分样本有标签 # 聚类 kmeans = KMeans(n_clusters=2) kmeans.fit(X) # 标签传播 Y_strong = kmeans.predict(X) # 计算准确率 accuracy = accuracy_score(Y_weak, Y_strong) print("准确率:", accuracy)
3. Résumé
Le problème des étiquettes manquantes est un défi important dans l'apprentissage faiblement supervisé. Cet article présente deux méthodes pour résoudre le problème des étiquettes manquantes : l'apprentissage multi-instance et les méthodes basées sur des idées de clustering, et donne des exemples de codes correspondants. Différents scénarios d'application peuvent appliquer différentes méthodes, et il est nécessaire de choisir la méthode appropriée pour résoudre le problème des balises manquantes en fonction de la situation spécifique. Le développement de l’apprentissage faiblement supervisé offre des solutions plus flexibles et plus efficaces pour appliquer des ensembles de données à grande échelle.
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!