1.14. 半监督学习#

半监督学习是指在训练数据中,部分样本没有标签的情况。 sklearn.semi_supervised 中的半监督估计器能够利用这些额外的未标记数据来更好地捕捉底层数据分布的形状,并更好地泛化到新的样本。当我们只有少量标记点和大量未标记点时,这些算法可以表现良好。

注意

半监督算法需要对数据集的分布做出假设才能获得性能提升。参见 此处了解更多详情。

1.14.1. 自训练#

此自训练实现基于 Yarowsky 的 [1] 算法。使用此算法,给定的监督分类器可以充当半监督分类器,使其能够从未标记数据中学习。

SelfTrainingClassifier 可以调用任何实现 predict_proba 的分类器,并将其作为参数 base_classifier 传递。在每次迭代中,base_classifier 预测未标记样本的标签,并将这些标签的子集添加到标记数据集。

此子集的选择由选择标准决定。此选择可以使用预测概率的 threshold 进行,或者根据预测概率选择 k_best 个样本。

用于最终拟合的标签以及每个样本被标记的迭代次数可作为属性使用。可选的 max_iter 参数指定循环最多执行多少次。

max_iter 参数可以设置为 None,这将导致算法迭代,直到所有样本都有标签或在该迭代中没有选择新的样本。

注意

使用自训练分类器时,分类器的 校准 非常重要。

示例

参考文献

1.14.2. 标签传播#

标签传播表示几种半监督图推理算法的变体。

此模型中的一些可用功能
  • 用于分类任务

  • 内核方法将数据投影到替代维空间

scikit-learn 提供两种标签传播模型:LabelPropagationLabelSpreading。两者都通过在输入数据集中的所有项目上构建相似性图来工作。

../_images/sphx_glr_plot_label_propagation_structure_001.png

标签传播的示例:未标记观测值的结构与类别结构一致,因此可以将类别标签传播到训练集的未标记观测值。#

LabelPropagationLabelSpreading 在对相似性矩阵的修改以及对标签分布的钳位效应方面有所不同。钳位允许算法在一定程度上改变真实地面标记数据的权重。LabelPropagation 算法执行输入标签的硬钳位,这意味着 \(\alpha=0\)。可以放宽此钳位因子,例如 \(\alpha=0.2\),这意味着我们将始终保留 80% 的原始标签分布,但算法可以改变其在 20% 范围内的分布置信度。

LabelPropagation 使用从数据构建的原始相似性矩阵,无需任何修改。相反,LabelSpreading 最小化具有正则化属性的损失函数,因此它通常对噪声更稳健。该算法迭代原始图的修改版本,并通过计算归一化图拉普拉斯矩阵来归一化边权重。此过程也用于谱聚类

标签传播模型具有两种内置的核方法。核的选择会影响算法的可扩展性和性能。以下是可用的选项:

  • rbf (\(\exp(-\gamma |x-y|^2), \gamma > 0\))。 \(\gamma\) 由关键字 gamma 指定。

  • knn (\(1[x' \in kNN(x)]\))。 \(k\) 由关键字 n_neighbors 指定。

RBF 核将生成一个完全连接的图,该图在内存中由稠密矩阵表示。该矩阵可能非常大,并且结合为算法的每次迭代执行完全矩阵乘法计算的成本,可能导致运行时间过长。另一方面,KNN 核将生成更节省内存的稀疏矩阵,这可以大大减少运行时间。

示例

参考文献

[2] Yoshua Bengio, Olivier Delalleau, Nicolas Le Roux. In Semi-Supervised Learning (2006), pp. 193-216

[3] Olivier Delalleau, Yoshua Bengio, Nicolas Le Roux. Efficient Non-Parametric Function Induction in Semi-Supervised Learning. AISTAT 2005 https://www.gatsby.ucl.ac.uk/aistats/fullpapers/204.pdf