我必须基于列名中存在的令牌群集文档(实际上是数据库的列名)。例如: -
C1 = ["Date", "Birth"]
C2 = ["Order", "Date"]
C3 = ["Birth", "Day"]
C4 = ["CUSTOMER", "FIRST", "NAME"]
C5 = ["FIRST","NAME"]
.
.
,但所有这些令牌实际上都是编码的,所以我收到的是遵循数据集。
C1 = ["44749712dbec183e983dcd78a7736c41", "e8329d2530ca7d80bb28176883186dfd"]
C2 = ["a240fa27925a635b08dc28c9e4f9216d", "44749712dbec183e983dcd78a7736c41"]
C3 = ["e8329d2530ca7d80bb28176883186dfd", "03727ac48595a24daed975559c944a44"]
C4 = ["979ee13f032c02b4652a4e3c3928d90b", "2c2624a5059934a947d6e25fe8332ade", "ad32e604e17467fc435538334fbddf3e"]
C5 = ["2c2624a5059934a947d6e25fe8332ade","ad32e604e17467fc435538334fbddf3e"]
.
.
现在,我想通过消耗他编码值来集群C1,C2,C3->群集1
C4,C5->群集2
我目前对如何做到这一点。是否有可以解决我的问题的机器学习算法?
我目前正在使用Spark Mllib 1.6.0,但我找不到一种应用算法(例如Word2Vec)来解决我的问题的方法。
是否可以在未编码的数据集上使用Word2Vec或算法?
谢谢。
实际上编码不是一个问题,因为编码是统一的,例如,文档C1和C3中的'出生'关键字是相同的'e8329d2530ca7d80bb281768176883186dfd'。至于密钥工作的矢量空间映射,您可以收集所有关键词并以等效长度的向量,并将向量位置标记为" 1"(如果存在关键字)或" 0"(如果不是)。但是,有很多方法可以将文档映射到向量空间。请参阅Jurafsk&马丁。至于执行群集的确切模型,这里有太多的方法要在此处列出,从某个简单开始,例如K-Mean或K-Nearest邻居,ANN SPACE中也有许多选项。
尝试混合使用Word2Vec和Spark等最新炒作,这并不容易。仅使用您需要的东西,而不是花哨的。
首先,您需要一个相似之处。将每个列视为A set (无需编码),然后计算Jaccard索引或类似。然后做HAC进行聚类。