我正试着用亲切感把一些词聚在一起。利用Word2Vec,用一种普通的无监督聚类方法得到了每个词的向量表示。
但在这些词中,我知道其中一些词的分类,例如我知道:
Colors集团==> red,blue,yellow
Gender集团==> man,woman
UNKNOWN ==> shoes,brown,beautiful.
如示例所示,brown应该被归类为Color,但是shoes和beautiful应该是不同的集群。
我如何利用这些信息创建一个半监督的模型,以便对每个单词进行聚类?
虽然这个问题是通用的,但实际上我尝试用Python创建一个程序,我尝试了sklearn.semi_supervised.LabelSpreading和sklearn.semi_supervised.LabelSpreading方法。
但是,这些并不是我所需要的,因为它们只将已知的标签分配给其余的对象,这意味着我将只使用我的Colors和Gender组。
发布于 2018-08-07 14:55:29
这里似乎很好的一种策略是实例级受限聚类。这些方法是半监督的算法,在已知标签的实例之间具有“必须链接”和“不能链接”约束。所以在你的例子中,你会将4对(红色,蓝色),(红色,黄色),(蓝色,黄色)和(男性,女性)绑定为“必须链接”,而6对(红色,男性),(红色,女性),…,(黄色,女性)绑定为“不能链接”。
结果与无监督聚类相似。例如,如果要使用DBSCAN (忽略标签/约束),则不需要指定要实现的集群/组数,算法甚至会找到“异常值”。
事实上,有一个DBSCAN版本支持实例级约束,称为called。Ruiz等人(2010年)的工作“基于密度的半监督聚类”对此作了描述。
我不知道任何开箱即用的实现,但我有一个工作版本的C我实现了一个实验。然而,它没有被记录下来,也没有表现/生产水平。如果您感兴趣,可以在我的实验室储存库上找到它(还包含contains,这是它的数据流版本,但它似乎不适合您的问题)。
https://datascience.stackexchange.com/questions/36588
复制相似问题