我用谱聚类法对一些词的特征向量进行聚类。在谱聚类算法中,采用词向量的余弦相似矩阵作为预计算的亲和矩阵。这就是我得到的三个星团。我使用集群分配作为标记来给点上色。
dist=1-cosimilarity.
并利用多维尺度算法对三维空间中的点进行可视化。这就是我从中得到的。我用那个实际的点标签给点上色。
如果你看到MDS分组,那些没有显示任何明显的集群分组,而光谱一似乎显示了三个相当不错的集群。
1)。你认为原因可能是什么?。因为MDS仅仅是利用点之间的距离在较低的维度上绘制点(MDS减少点之间的距离的比例与减少点之间的距离的比例相同,因此,保持点间距离的比例不变),而不使用某种距离标准对它们进行聚类?。我希望看到光谱结果有点类似于MDS,因为两者都在使用距离测量。只是聚类将附近的点融合成一个点。而MDS正在按原样绘制。但在MDS中,我使用了点的实际标签。所以这表明了事实的真相?。
(第二章)。有什么建议可以改进使用其他算法的聚类,或者这看起来不错?。
编辑:
看起来有三个组,但是红色组和蓝色组和绿色组重叠。但如果我说它在我们看来是重叠的,因为我们无法看到三维以外的东西(无论如何,在电脑屏幕上是二维的)。如果红色的点远远高于蓝色和绿色,如果我们碰巧在三维甚至更多的维度中看到它们呢。
举个例子:
假设你在看三个点。
想象一下,如果你寻找1D,上面看到的点会出现在你面前,也许就在上面。
现在,如果你能在2D中看到这些点,它会显示如下。
如果你现在看到,这三个点看起来是分开的。只是我们能够在2D中看到点,实际上我们能够看到点之间的关系,当我们从顶部和1D中看到时,这些点看起来是直线
那么,你认为像上面这样的聚类结果实际上可能是一组明显分离的点,并且与现实中的每一组都相距很远,如果我们能够在3D中看到它们,而在我们看来,它们目前似乎没有很好的分离?。这是否意味着可能会有像上面这样的情况,聚类结果的可视化可能不是正确的方法,因为它可能导致上述结论?。
编辑二:
使用以下代码运行DBSCAN算法:使用先前计算的距离矩阵作为DBSCAN的预计算矩阵
from sklearn.cluster import DBSCAN
dbscan=DBSCAN(metric='precomputed')
cluster_labels=dbscan.fit_predict(dist)
请记住在所有光谱和数据库扫描中,我正在绘制的点是多维缩放算法到三维的结果。
编辑三:
相似度和距离矩阵的计算:
from sklearn.metrics.pairwise import cosine_similarity
cossim= cosine_similarity(X)
dist=1-cossim
dist=np.round(dist, 2)
编辑四:
由于Anony Mousse建议余弦相似性可能不是正确的度量标准,所以现在我所做的只是使用了DBSCAN algo中的原始单词包设计矩阵,没有提供任何距离矩阵作为预先计算的选项。把它留给sklearn来计算右亲合矩阵。这就是我得到的。只有一个集群。就这样。它一点也不分开。 请记住,这是与上面使用的距离矩阵相同的一包数据点的单词矩阵。底层数据点是相同的。
编辑V:
字袋计数数据的转换s到tf idf数据。
1)。在tf-idf包字数据的预计算距离矩阵上运行DBSCAN。 在所有早期的方法中,我只是简单地使用了count bag of words matrix作为基础。现在我使用tf-idf矩阵作为余弦相似距离的基础。
它给出了两种类型的点,但又没有分离。
DBSCAN在原来的Tf idf单词包矩阵上:
只有一个红点。
tf-idf数据余弦相似矩阵的谱:
看看吧。这甚至比我在数包词数据的相似矩阵上使用谱的结果还要糟糕。使用tf-idf只是为了光谱而把事情搞砸。
计数数据相似矩阵的谱:
如果你看到光谱时,只做计数数据是给一些局部分组,而做了tf-idf的数据,这一切都是混为一谈。
其次我有4000个特征。为了形象化,我需要在三维空间中做最大值。为此,我使用MDS的结果。MDS就像PCA,所以如果有人需要可视化点,MDS或PCA都需要完成。
编辑VI:
所以根据摩丝的评论,MDS正在搞砸事情,我想为什么不试试PCA。所以我从DBSCAN或Spectral获取集群,然后从PC a绘制前三个PC。这是我为PCA写的代码。这里的docs_bow可以是tf idf,甚至可以是正常计数的docs_bow。
def PCA(docs_bow):
""" This function carries out PCA of the dataset
"""
#Doing PCA (SVD)
U,S,Vt=np.linalg.svd(docs_bow,full_matrices=False)
# Projection matrix with Principal Component Loading vectors. Transpose of Vt.(Right singular vectors)
W=Vt.T
# Keep only the top 3 Dimensions
W=W[:,0:3]
# Finding our Projected datapoints on those two PC's
PC=np.dot(docs_bow,W)
return PC
MDS的可视化效果似乎比PCA好。我不是其他人可以用来减少维度的可视化高维数据。
目前没有回答
相关问题 更多 >
编程相关推荐