我们已学习了半监督学习算法python实现 半监督聚类算法实例_初始化均值算法,在此基础上若加上一些监督信息,则得到半监督聚类。

半监督聚类

对照半监督学习算法python实现 半监督聚类算法实例_均值算法_02均值算法【西瓜书图9.2】算法学习【西瓜书图13.7】和【西瓜书图13.9】算法。

(1)约束半监督学习算法python实现 半监督聚类算法实例_均值算法_02均值算法【西瓜书图13.7】

将“必连”和“勿连”的约束,作为监督信息,其基本要点是在【西瓜书图9.2】的半监督学习算法python实现 半监督聚类算法实例_均值算法_02均值算法程序中,将半监督学习算法python实现 半监督聚类算法实例_聚类_05划入聚类簇时,需要判断是否有违背约束(算法的第10句),这里补充检验算法。

考虑一个样本出发有多个“必连”和多个“勿连”约束。 设实线为“必连”,虚线为“勿连”。

初始化时,对既有“必连”又有“勿连”形成的三角形进行检查,图13.4 中的(a)产生矛盾,报错;(b)为合法情况。

半监督学习算法python实现 半监督聚类算法实例_均值算法_06


图13.4 约束

算法的第10句,需要对半监督学习算法python实现 半监督聚类算法实例_聚类_05半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08中样本的情况进行讨论:

(i)半监督学习算法python实现 半监督聚类算法实例_聚类_05半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08中样本半监督学习算法python实现 半监督聚类算法实例_均值算法_11既无“必连”又无“勿连”,即半监督学习算法python实现 半监督聚类算法实例_聚类_05可根据其他条件确定是否划入半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08
半监督学习算法python实现 半监督聚类算法实例_初始化_14

(ii)半监督学习算法python实现 半监督聚类算法实例_聚类_05半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08中样本半监督学习算法python实现 半监督聚类算法实例_均值算法_11有“必连”无“勿连”,即半监督学习算法python实现 半监督聚类算法实例_聚类_05可划入半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08
半监督学习算法python实现 半监督聚类算法实例_初始化_14

(iii)半监督学习算法python实现 半监督聚类算法实例_聚类_05半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08中样本半监督学习算法python实现 半监督聚类算法实例_均值算法_11无“必连”有“勿连”,即半监督学习算法python实现 半监督聚类算法实例_聚类_05不可划入半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08
半监督学习算法python实现 半监督聚类算法实例_学习_26

(iv)半监督学习算法python实现 半监督聚类算法实例_聚类_05半监督学习算法python实现 半监督聚类算法实例_半监督学习算法python实现_08中样本半监督学习算法python实现 半监督聚类算法实例_均值算法_11既有“必连”也有“勿连”,出现如下图13.5 矛盾情况,这时报错。

半监督学习算法python实现 半监督聚类算法实例_初始化_30


图13.5 矛盾

(2)约束种子半监督学习算法python实现 半监督聚类算法实例_均值算法_02均值算法【西瓜书图13.9】

监督信息是少量有标记样本,基本要点是:

(i) 将有标记样本作为“种子”,以此来初始化聚类中心半监督学习算法python实现 半监督聚类算法实例_均值算法_32,第1至3句;

(ii) 不改变“种子”的簇隶属关系,以此来初始化各簇,第6至10句。

(iii) 对非种子样本,按半监督学习算法python实现 半监督聚类算法实例_均值算法_02均值算法【西瓜书图9.2】中的方法归入各簇,第11至15句。

(iv) 调整簇中心,第16至18句,进入下一轮循环(第4句),直至停机条件满足(第19句)。