2011年6月13日,星期一

更好的标签相似性可视化

好吧,我花了整个周末的大部分时间来改善自己的 标签相似度可视化,没有很好的理由,只是发痒时就必须挠痒。这就是最终看起来最好的东西。
  1. 计算每个哈希标签的词项频率向量。
    1. 对于每个推文X:
      1. 对于X $中的每个主题标签$ h:
        1. 对于X $中的每个非标签令牌$ t \:
          1. $(h,t)$的增量计数。
  2. 计算前1000个最常用的标签中的每个标签对的成对余弦$ \ cos \ theta(h,h ^ \ prime)$。
  3. 将相似度定义为$ s(h,h ^ \ prime)= \ arccos(\ cos \ theta(h,h ^ \ prime))$。
    1. 与$ 1.0-\ cos \ theta(h,h ^ \ prime)$相比,我得到的负特征值更少。这是在超球面上移动和跨越超弦之间的区别。
  4. 做60维 MDS 在$ s $。
    1. 60个特征值中有两个为负,因此我将其视为0。所以实际上是58维MDS。
    2. 我在这里得到任何负特征值时感到有些惊讶,因为我所有的项向量都占据了超球面的正超象限。显然,我的超直觉需要超调……或者我有一个错误。
  5. 将产生的60维表示输入 吨位 .
    1. 我使用困惑10。
我选择t-SNE是因为高维结构似乎是相对孤立的簇。我推断是因为我将邻域定义为$ \ epsilon \ theta $球并运行 弗洛伊德·沃歇尔 在邻域图中,我注意到我必须使用一个非常大的邻域($ \ cos \ theta \ geq 0.8 $),然后才能获得足够大的连接组件以变得有趣。

最终,当我绘制此标签时,我尝试将颜色随机化,以便在所有标签相互叠放时能够看到一些东西。真的png不能公正,您应该得到 pdf版本 并放大。

4条评论:

  1. 感谢您发布它,它'有趣的东西。您是否尝试仅将术语频率向量直接输入t-SNE?

    回复 删除
  2. 是。实际上,一旦加载了数据,C ++ 吨位 实现就可以完成出色的工作,但是它希望在继续操作之前将整个数据集作为密集矢量读取到内存中,因此在我尝试进行扩展时就成了问题。 MDS 中间人对此提供了帮助。

    我也可以尝试Matlab实现并提供距离,该距离只有1000x1000。但是到那时,我在C ++版本上有了不错的工作流程,所以我最终做了我所做的事情。

    回复 删除
  3. 您是否尝试过生成3-D图像?接下来的问题是:是否有一个简单的旋转/查看工具可以在某个地方使用3D矩阵-这似乎确实是t-SNE所需要的。

    回复 删除
  4. @doug:是的,我做到了。我使用了Mathematica,它可以让您在笔记本电脑界面中旋转和放大3D图(不完全简单:对不起)。它似乎正在使用第三维来改善彼此之间的聚类差异。但这没有'导致质的看法不同。 YMMV。

    我还尝试了使用颜色作为第三维的3D版本。原来这不是很可读,所以我没有't post it.

    回复 删除