半监督学习入门——《机器学习》周志华—第十三章

13.1未标注样本

半监督学习描述
概念让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能在这里插入图片描述
分类纯半监督学习和直推学习在这里插入图片描述## 标题

Q:如何利用未标记样本?
A:做一些将未标记样本所揭示的数据分布信息与类别标记相联系的假设,如聚类假设和流式假设(相似的样本拥有相似的输出)

13.2生成式方法

生成式方法描述:用于具体的应用领域(需要充分可靠的领域知识)
概念直接基于生成式模型的方法
具体内容模型→所有数据;未标记数据的标记→模型的缺失参数;通常可基于EM算法进行极大似然估计求解;方法的关键:选取的模型假设必须正确,即假设的生成式模型必须与真实数据吻合(难做到)在这里插入图片描述1
区别生成式模型的假设——不同的模型假设将产生不同的方法
例子(高斯混合模型)在这里插入图片描述在这里插入图片描述在这里插入图片描述
缺点需要正确的假设模型

13.3半监督SVM

支持向量机 简称S3VM 低密度分离方法

对象划分描述:需要减轻非凸函数造成的不利影响
SVM不考虑未标记样本——试图找到最大间隔划分平面
S3VM考虑了未标记样本——找到将两类有标记样本分开,且穿过数据低密度区域的划分平面在这里插入图片描述
TSVM描述
思想label assignment,指派标记→上图的灰色点指派为“+”或“-”,所有样本→一个间隔最大化的划分超平面→未标记样本的最终指派就是其预测结果
具体内容在这里插入图片描述
缺点尝试未标记样本的各种标记指派是一个穷举过程,仅当未标记样本很少时才有可能直接求解。
研究重点更高效的优化策略
局部搜索求近似解①有标记样本→②SVM→③标记未标记样本,得“伪标记”→④新的划分平面和松弛向量,令有标记得重要程度大于未标记得重要程度→⑤找出两个标记指派为异类且很有可能发生错误得未标记样本,交换标记→⑥循环④⑤,逐步提高未标记样本得重要程度直到二者重要程度相等,结束循环
对应算法在这里插入图片描述
知识点描述
1在这里插入图片描述
2S.T. 是subject to 的缩写,作形容词用时,其基本含义是受限于…,服从于…,易受…;作副词用时,意思是在…条件下,依照…。

13.4图半监督学习

图半监督学习描述:还有K近邻图的方法
概念数据集→图,样本→图中结点,相似度→图的边(存在与否+强度大小),染色→已标记,半监督学习→颜色在图中的扩散(基于矩阵运算)
二分类问题的标记传播方法在这里插入图片描述在这里插入图片描述
多分类问题的标记传播方法在这里插入图片描述在这里插入图片描述在这里插入图片描述
缺点一是存储开销。问题规模O(m),算法涉及的矩阵规模为O(m^2),不利于处理大规模数据;二是新样本的加入需要①重构图,或者②引入额外的预测机制(另外训练一个学习器)。

13.5基于分歧的方法

基于分歧方法描述:将集成学习和半监督学习联系起来,可自然与主动学习结合
概念使用多学习器,基于学习器之间的分歧(disagreement;diversity)来利用未标记数据
协同训练multi-view learning多视图(multi-view)数据?一个数据对象同时拥有多个”属性集“(attribute set),每个属性集就构成一个”视图“(view)。(<x1,x2>,y)是多视图数据,x1、x2分别对应一个数据对象不同视图中的属性向量,y是标记。在这里插入图片描述
优点算法简单;在视图充分且条件独立(现实中很难满足),可将弱分类器的泛化性能提升到任意高;同时,后续研究表明,也可用于单视图数据,如使用不同的学习算法、使用不同的数据采样、使用不同的参数设置来产生不同的学习器,也可以提升性能。只要学习器之间又显著分歧即可。
缺点标记样本很少,或布局有多视图时,需要巧妙设计。

Q:标记样本少——在先使用了主动学习挑出有价值的样本进行标记后能否解决这个问题?
A:本来有疑问,读到13.7时才发现周志华老师已经想到了这点。故在描述的那栏加上了解释。

13.6半监督聚类

半监督聚类描述:流形正则化框架,预测函数具有局部光滑性
概念聚类是一种典型的无监督学习任务;利用额外的监督信息,可以实现半监督聚类
监督信息分类①“必连”+“勿连”:前者样本属于同一个簇;后者不属于同一个簇②少量的有标记样本
约束K均值算法①在这里插入图片描述在这里插入图片描述在这里插入图片描述
约束K均值算法②在这里插入图片描述

文中引用的外部图片

未标注的都为书中截图或者百度百科解释


  1. 图片来源 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答这个问题!本次我们将学习如何用 Python 实现《机器学习周志华教授第十四章中的概率图模型习题。在这里,我们将使用 Python 的 pgmpy 库来构建和分析概率图模型。 首先,我们需要安装 pgmpy。可以使用 pip 安装: ```python pip install pgmpy ``` 安装完成后,我们就可以开始实现习题了。 #### 习题 14.1 考虑一个三元组 $(X, Y, Z)$,其中 $X$ 是二元随机变量,$Y, Z$ 是一元随机变量,试构造一个无向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个无向图模型。代码如下: ```python from pgmpy.models import MarkovModel # 创建一个空的无向图模型 model = MarkovModel() # 添加变量节点 model.add_nodes_from(['X', 'Y', 'Z']) # 添加边 model.add_edges_from([('X', 'Y'), ('X', 'Z')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y', 'Z'], mean, covariance) # 将因子添加到模型中 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码中,我们首先创建了一个空的无向图模型,然后添加了三个变量节点 $X, Y, Z$ 和两条边 $(X, Y), (X, Z)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型中。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型中的所有因子。 #### 习题 14.2 考虑一个四元组 $(X_1, X_2, X_3, X_4)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image.png](attachment:image.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X3', 'X2'), ('X4', 'X2')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了四个变量节点 $X_1, X_2, X_3, X_4$ 和四条边 $(X_2, X_1), (X_3, X_1), (X_3, X_2), (X_4, X_2)$。最后,我们打印出了模型的边结构。 #### 习题 14.3 考虑一个五元组 $(X_1, X_2, X_3, X_4, X_5)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-2.png](attachment:image-2.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X2'), ('X5', 'X3')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了五个变量节点 $X_1, X_2, X_3, X_4, X_5$ 和五条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_2), (X_5, X_3)$。最后,我们打印出了模型的边结构。 #### 习题 14.4 考虑一个六元组 $(X_1, X_2, X_3, X_4, X_5, X_6)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-3.png](attachment:image-3.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5', 'X6']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X3'), ('X6', 'X4'), ('X6', 'X5')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了六个变量节点 $X_1, X_2, X_3, X_4, X_5, X_6$ 和六条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_3), (X_6, X_4), (X_6, X_5)$。最后,我们打印出了模型的边结构。 #### 习题 14.5 考虑一个二元组 $(X, Y)$,其中 $X$ 是一元随机变量,$Y$ 是二元随机变量,试构造一个有向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X', 'Y1', 'Y2']) # 添加边 model.add_edges_from([('X', 'Y1'), ('X', 'Y2')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y1', 'Y2'], mean, covariance) # 将因子添加到模型中 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了三个变量节点 $X, Y_1, Y_2$ 和两条边 $(X, Y_1), (X, Y_2)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型中。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型中的所有因子。 以上就是本次的答案,希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值