V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeReamond
V2EX  ›  程序员

2022 有啥好用的聚类算法吗?

  •  1
     
  •   LeeReamond · 2022-07-25 17:09:02 +08:00 · 2351 次点击
    这是一个创建于 854 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求上有大量数据需要无监督聚类,结果搜了搜聚类算法全都是 kmeans ,dbscan 之类的东西,印象里这些东西都很老了,好奇这么多年了有没有啥新一些的技术。。

    我的具体数据是音频形式的,两两之间可以用差值算法计算距离,但是似乎很难把音频降维到一个范围里。。。我观察网上 kmeans 似乎是需要数据点本身能用向量表示,它以此为基础上再计算举例,才能用 kmeans ,否则也是不能算的,所以这种 m 个数据,两两之间都有距离,没有其他信息的数据能够聚类吗?

    11 条回复    2022-07-26 14:44:05 +08:00
    FakNoCNName
        1
    FakNoCNName  
       2022-07-25 17:47:34 +08:00
    均值漂移是无监督。

    聚类算法确实没太大变化,这是基础数学的东西,要靠时间磨才行,你想想从第一个聚类算法提出来到现在这么多年,才出来几个经典聚类算法。

    这些聚类算法都是计算特征向量的距离,特征向量是一种抽象概念,不是一般的距离+方向这种。

    简化一下,你可以提取音频的特征数据,每个音频生成一个特征数据的矩阵(不限维数),计算矩阵的特征向量,用特征向量聚类。
    再简化一下,直接把音频的特征数据整理成一维数组,当作特征向量传给聚类算法。
    yangyaofei
        2
    yangyaofei  
       2022-07-25 18:06:29 +08:00
    只要能把要聚类的东西很好的嵌入到空间里面, 后面怎么聚类效果都不太差吧, 关键是怎么嵌入.

    最简单的, 直接编码器<->解码器结构, 不管是经典概率模型还是神经网络都能套进去, 然后中间向量(嵌入位置)做聚类呗

    或者,更简单的,找个已经预训练好的音频相关的预训练模型, 一波梭
    LeeReamond
        3
    LeeReamond  
    OP
       2022-07-25 19:34:52 +08:00
    @FakNoCNName
    @yangyaofei 如果必须嵌入空间的话,问题确实是搞不懂怎么把音频特征抽出来,比如如果要简化成一个一维数组,音频信息很丰富,数组可能非常长,比如相当于一个数据有 1000 维表示,这种用来聚类能行么,印象里这些聚类能跑的维数都不高。另外我一个担心是维数太高的话它本身能不能比较好的抽离出来特征,毕竟我们不用聚类算法的话计算两两间距是有音频专用算法的,聚类计算距离的方法是不是可能驴唇不对马嘴
    java253738191
        4
    java253738191  
       2022-07-25 19:50:46 +08:00
    参考音频特征抽取及音频相似度检索的解决方案 https://milvus.io/cn/docs/audio_similarity_search.md
    Juszoe
        5
    Juszoe  
       2022-07-25 20:02:48 +08:00
    首先你聚类的目的是做什么?要明确了需求才能确定合适的算法。
    我推荐一个最近两年比较火的技术,“对比学习”( Contrastive Learning ),可以做无监督或者有监督,可以嵌入空间。
    error101
        6
    error101  
       2022-07-26 01:32:17 +08:00
    k-means 捏
    yangyaofei
        7
    yangyaofei  
       2022-07-26 09:23:12 +08:00
    @LeeReamond 担心这个担心那个, 不如先做出来看效果....既然有专门的算距离的算法,用就是了,大不了不好用再加空间变换让他能用
    vone
        8
    vone  
       2022-07-26 09:37:54 +08:00
    @LeeReamond SVD 可以降维
    ldyisbest
        9
    ldyisbest  
       2022-07-26 13:32:53 +08:00
    上预训大模型
    ldyisbest
        10
    ldyisbest  
       2022-07-26 13:33:14 +08:00
    上预训练大模型
    siluni
        11
    siluni  
       2022-07-26 14:44:05 +08:00
    随便用个现成的 music tagging 或者 speech tagging 的模型就可以了吧。。embedding vector 一般最大 512 ,256 和 128 比较常见。具体计算的话,现在的常规流程是用 mel spectrogram 做特征输入到网络,然后用 CRNN, resnet-conformer 之类的卷积混合模型做 encoder 。end-to-end 的音频模型这两年已经没人搞了。特征向量搞好了,现成的聚类算法应该是够用的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:13 · PVG 20:13 · LAX 04:13 · JFK 07:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.