1.14. 半监督学习#

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

注意

半监督算法需要对数据集的分布做出假设才能获得性能提升。 有关更多详细信息,请参阅此处

示例

1.14.1. 自训练#

这个自训练实现基于 Yarowsky 的[1]算法。 使用此算法,给定的有监督分类器可以作为半监督分类器发挥作用,使其能够从无标签数据中学习。

SelfTrainingClassifier 可以与任何实现 predict_proba 的分类器一起调用,作为参数 estimator 传入。 在每次迭代中,estimator 预测无标签样本的标签,并将这些标签的一个子集添加到有标签数据集中。

此子集的选择由选择标准决定。 这种选择可以通过对预测概率设置 threshold,或者根据预测概率选择 k_best 样本来完成。

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

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

注意

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

示例

References

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 核将生成一个更节省内存的稀疏矩阵,这可以大大减少运行时间。

示例

References

[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