• 另一种降维算法:UMAP(主要是和t-SNE进行对比)


    1. 前置知识:对于t-SNE的理解可参考:tsne 学习使用_Wsyoneself的博客-CSDN博客
    2. 算法的不同:
      1. 把距离之间度量换成了指数分布,并没有考虑归一化。同时用交叉熵代替了KL散度。
      2. 运行速度比t-SNE快,因为采用的是随机梯度下降。
      3. 用平面或立体空间内的点的疏密远近表现其在原本多维度状态下的疏密远近。
    3. 降维过程(t-sne和UMAP的算法共性):
      1. 计算各点之间的高维距离拟合分布函数
      2. 初始化各点的低维分布
      3. 计算各点的低维距离
      4. 计算降维的信息损失,优化低维分布,保留高维特征,直至达到预设条件。
    4. 区别:
      1. 计算高维距离时:
        1. tSNE会计算所有点之间的距离,通过Perplexity(困惑度)参数调整全局结构与局部结构间的软边界
        2. UMAP则只计算各点与最近k个点之间的距离,严格限制局部的范围
      2. 对信息损失的计算方法不同
        1. tSNE使用KL散度衡量信息损失,在全局结构上存在失真的可能
        2. UMAP使用二元交叉熵,全局和局部结构均有保留
      3. 降维效果对比:
        1. 全局结构:
          1. tsne因为其损失函数(KL散度)对低维近、高维远的惩罚较轻,导致在平面上,整体差异较小的集群(cluster)可能比差异较大的集群离得更远。故而tSNE图多数情况下不能体现真实的全局结构。
            1. KL散度的惩罚分数是不对称的,对于高维近低维远的罚分高,对于高维远低维近的罚分趋近于0。而二元交叉熵罚分是对称的,对于两种情况都有较高罚分。
          2. UMAP损失函数使用的是二元交叉熵,对低维近高维远或低维远高维近的惩罚都较重,所以UMAP比tSNE更能体现真实的全局结构。
        2. 局部结构:
          1. tSNE的局部结构更为紧凑。由于tSNE在拟合高维数据时使用高斯分布转换成概率,低维数据则使用t分布转换概率,这会使高维距离近的点在低维空间中更近,反之更远。
          2. UMAP设置了min_dist,在计算信息损失时,对低维距离小于min_dist的点视为同价,故而会隐藏一部分局部结构信息。
        3. 结果稳定性:tSNE使用随机分布初始化低维数据,而UMAP使用图拉普拉斯变换分配初始的低维坐标(根据高维数据特征进行低维数据的初始化),故UMAP的结果具有更高的稳定性。
      4. 重要参数:
        1. tsne-perplexity:
          1. 表示t-SNE优化过程中考虑邻近点的多少):
          2. perplexity会会影响点的松散程度。perplexity越大,集群内部越紧密;反之,集群越松散。
          3. 从结构特征的角度讲,增大perplexity将会增加高维远距离点的影响,使局部结构模糊;减小perplexity则增加近距离点的影响,体现局部。
          4. Perp过大过小都会导致重要信息损失,或产生不必要的计算。
        2. UMAP-n_neighbors(即算法中的k)、min_dist
          1. n_neighbors与Perp相似,越大集群越紧密,且适当增加n_neighbors能更好地体现数据的全局结构。
          2. 在实际应用中,n_neighbors最好大于较小集群内的点个数,防止有效的距离计算闭锁在集群内部,能更真实地反应全局结构。
          3. min_dist则可根据需求进行调整,较小值能更真实地反应高维结构,但也会带来一定的信息冗余,而上调min_dist能更直观地展示全局结构,同时有一定可能会反应错误的集群关系

        

  • 相关阅读:
    城市交通场景分割系统:Web前端可视化
    databindingutil.setcontentview type mismatch 从使用角度区分ViewBinding和DataBinding
    omnipathr官网教程 mistr
    站在开源云的新周期,EasyStack布局数字原生企业云
    Spring创建、Bean对象的存储和读取
    现在微软 SQL 服务器被黑,带宽遭到破坏
    关于fifo和ram时序验证
    如何获取下载文件镜像文件压缩包的校验码SHA256SHA1MD5
    平均年薪20W,自动化测试工程师这么吃香?
    Selenium二次封装与网络测试工具开发
  • 原文地址:https://blog.csdn.net/weixin_45647721/article/details/126926585