【菜狗每日记录】启发式算法、傅里叶变换、AC-DTC、Xmeans—20250909

🐱1、启发式算法

① 定义

② 特点

③ 案例

🐱2、快速傅里叶变换FFT

① DFT离散傅里叶变换

② FFT快速傅里叶变换

🐱3、AC-DTC聚类

🐱4、Xmeans


🐱1、启发式算法

        启发式算法是和最优化算法相对的。

        一般而言,最优化算法所需要解决的问题,都能分成三个部分:

  • 目标:什么是目标呢?简单点说就是要优化的东西,比如运筹学的背包问题中,要优化的就是所选物品的价值,使其最大。
  • 决策:顾名思义就是根据目标所作出的决策,比如在这里就是决定选取哪些物品装进我们的背包。
  • 约束:那么何又为约束呢?就是说再进行决策时必须遵循的条件,比如上面的背包问题,我们所选取的物品总的重量不能超过背包的容量。要是没有容量的约束,小学生才做选择呢,我全都要!

        在求最优解过程中,启发式策略可依个体或全局经验调整搜索路径,当求最优解困难时,它是高效得可行解的方法。这种算法主要用于解决NP-hard问题,NP即非确定性多项式。

① 定义

        基于直观、经验构造的算法,在一定成本下给出可以解决优化问题的一个可行解。主要以仿自然算法为主。

        遗传算法,模拟退火,各种群算法,蚁群,鱼群,粒子群,人工神经网络等模仿自然界或生命体行为模式的算法,一般又称人工智能算法或全局优化算法。

② 特点

  • 帮助寻求答案,告诉怎么去找,知道路怎么走,不知道路往哪里走
  • 结果具有偶然性,过程具有启发性,像是问路的过程中了解更多目的地相关的内容。(这里感觉很像人生,一直在路上,不断寻找自己想要追求的。)

③ 案例

通俗理解启发式算法 - 知乎

        最终目标:爬上最高的山峰。

  • 爬山法:一个人往更高的地方走,会变更高,但是那座山不一定是珠穆朗玛峰。
  • 模拟退火:一个人喝醉了,随机跳了很长时间,可能变高可能变低,但是慢慢朝更高的地方走。
  • 禁忌搜索:很多人,互相转告哪个地方的山已经去了,留下一个人做记号,制定了下一步往哪里找的策略。
  • 遗传算法:人活在地球,不知道自己要干什么,过几年就会杀死低海拔的土地上的人,人们也会自己去找最高的山峰。

🐱2、快速傅里叶变换FFT

① DFT离散傅里叶变换

        对于任意多项式系数表示转点值表示,可以随便取任意n个x值代入计算,但这样时间复杂度是O ( n 2 )所以伟大数学家傅里叶取了一些特殊的点代入,从而进行优化。
        他规定了点值表示中的n个x为n个模长为1的复数。这n个复数不是随机的,而是单位根。
        把上述的n个复数(单位根)ω n0 , ω n1 . . . . . , ωn−1代入多项式,能得到一种特殊的点值表示,这种点值表示就叫DFT(离散傅里叶变换)

        想象你有一个多项式,比如,通常我们用它的系数(这里是1、2、1)来表示它。但另一种方法是,你可以找一些点,比如 ,然后算出这些点对应的 的值,分别是1、4、9。这样,你就可以用这三个点(0,1)、(1,4)、(2,9)来表示这个多项式。这种方法就叫点值表示

        复数可以看成是平面上的点,有实部和虚部。模长就是这个点到原点的距离。如果一个复数的模长为1,那就意味着它在平面上离原点的距离正好是1。这些点都落在一个以原点为中心、半径为1的圆上,这个圆叫单位圆。

        现在,我们要在单位圆上均匀地找n个点。比如,n=4,我们就在单位圆上找4个等分的点。这些点在数学里叫单位根。它们有一个很特别的性质:当你把它们代入多项式的时候,计算会变得很方便

        所以,这句话的意思是:在点值表示法中,我们选择的n个x值,不是随便挑的,而是单位圆上的n个均匀分布的点。这些点都是模长为1的复数,它们在计算多项式的时候特别有用。

② FFT快速傅里叶变换

        虽然DFT能把多项式转换成点值但它仍然是暴力代入n nn个数,复杂度仍然是O(n2),所以它只是快速傅里叶变换的朴素版

原始信号:一首复杂的交响乐

        想象你听到一首交响乐,里面有:

        🎻 小提琴(高音)、🎺 小号(中音)、大鼓(低音等等各种乐器同时演奏

        你的耳朵听到的是​​混合在一起​​的复杂声音。

FFT就像"音乐分析师"

FFT的作用就是:戴上专业耳机​​:把混合的音乐分解开,​​分析频谱​​:告诉你这首曲子里有:

        30%的小提琴声(高频)

        25%的小号声(中频)

        45%的鼓声(低频)

概念

通俗解释

在您研究中的应用

​FFT​

音乐分解器

把驾驶动作分解成不同频率成分

​重采样​

重新编曲

把长短不一的驾驶片段变成统一长度

​保持特征​

保留原曲风格

加速还是加速,减速还是减速

        ​​一句话总结​​:FFT就像给每个驾驶片段做"DNA分析",找出它的本质特征,然后根据这个特征重新生成标准长度的片段,方便后续比较和分析。


🐱3、AC-DTC聚类

        聚类分为两个不同的类别:分层聚类(从很多类到几个类)和分区聚类(从一个类切分到很多类)。

        其中分层聚类使用:相似性递归聚类——构建树形图探索不同粒度级别的聚类。

        AC-DTC的层次特性有效地捕获 了行动阶段数据中的时间依赖性和变化,促进了相似行动 阶段的准确聚类,同时反映了细微的差异

        DTC(Dynamic Tree Cutting,动态树切) 是整个算法的关键部分。它的核心作用是:在层次聚类(得到一棵树状图 dendrogram)之后,自动决定如何切割树来得到合理的簇数,而不是人工设定某一个“水平线”来切。

        它是层次聚类(Hierarchical clustering)的一种后处理策略:层次聚类(AC)会生成一棵树状图(dendrogram),从“每个点单独一类”到“所有点合并成一类”的整个过程都能看到。但层次聚类本身不会告诉你“在哪一层切开”才是最佳聚类结果。

        动态树切分(DTC)就是自动分析这棵树的结构,根据数据的上下文,灵活决定在哪里剪枝,把数据划分成更合适的簇。

        AC:自底向上合并,先一个点一类,然后逐步合并。

        DTC:对生成的树图进行动态切分,得到最终聚类。

合起来,AC-DTC 能:

  • 自动调整簇的数量(不像普通层次聚类需要手动定层次)。

  • 更好地处理“动作阶段数据”这种长度不一、内部有细节差异的序列。

四种 linkage 方法(ward, average, complete, weighted)指的是在聚类分析中,用于计算样本点之间距离或相似度的四种不同的连接方式。下面分别解释一下这四种方法:

  1. ward:Ward方法是一种基于方差分析的方法。它通过最小化类内方差来确定簇,目的是使得每个簇内的样本点尽可能紧密地聚集在一起。在每次合并簇时,会选择使得总方差增加最小的簇对进行合并。这种方法适用于球形簇,并且对簇的大小较为敏感,簇大小差异较大时可能会影响聚类效果。

  2. average:平均连接法(也称为UPGMA,Unweighted Pair Group Method with Arithmetic mean)。它计算两个簇中所有样本点对之间的平均距离,作为这两个簇之间的距离。这种方法相对较为稳健,不会因为簇中个别异常点而对簇间距离产生过大影响,适用于不同形状和大小的簇。

  3. complete:最大连接法(也称为Furthest Neighbor)。它以两个簇中所有样本点对之间的最大距离作为这两个簇之间的距离。这种方法对异常值较为敏感,因为簇间距离由最远的点对决定,可能会导致一些较小的簇被过早地合并,适用于簇形状较为规则的情况。

  4. weighted:加权平均连接法(也称为WPGMA,Weighted Pair Group Method with Arithmetic mean)。它在计算簇间距离时,会考虑簇的大小,对簇中样本点的数量进行加权。这种方法在一定程度上平衡了簇的大小对簇间距离的影响,适用于簇大小差异较大的情况,能够更合理地反映簇之间的相似性。

🐱4、Xmeans

从较小的 k 开始(比如 k=2)。

在 K-means 收敛后,检查每个簇

  • 假设要把它再分成 2 个子簇,跑一次 K-means(局部)。

  • 对比“分裂前后”的拟合效果,看看是否真的更好。

用统计准则判断是否分裂,常用 BIC(Bayesian Information Criterion,贝叶斯信息准则

  • BIC 兼顾了“拟合优度”和“模型复杂度”。

  • 如果分裂后 BIC 变高 → 说明新模型更好,就保留分裂。

  • 如果分裂后 BIC 没变好 → 保持原状,不拆分。

X-means 是一种“自适应的 K-means”,通过尝试分裂簇并用 BIC 判断是否保留,从而自动决定最佳簇数 k

——小狗照亮每一天

20250909

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98539.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure移动端选择器案例:多类型选择器设计与动态效果实现

在移动端交互设计中,选择器是用户输入的核心组件。Axure移动端高保真元件库提供了四种关键选择器解决方案,通过动态效果提升操作真实感: 预览地址:Axure 1. 基础选择器 采用底部弹窗设计,支持单选项快速选择。点击触发…

Spring Boot图片验证码功能实现详解 - 从零开始到完美运行

Spring Boot图片验证码功能实现详解 - 从零开始到完美运行 📖 前言 大家好!今天我要和大家分享一个非常实用的功能:Spring Boot图片验证码。这个功能可以防止恶意攻击,比如暴力破解、刷票等。我们实现的是一个带有加减法运算的图片…

HarmonyOS实现快递APP自动识别地址

​ 大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,欢迎关注! 随着鸿蒙(HarmonyOS)生态发展,越来越多的APP需要进行鸿蒙适…

CUDA编程13 - 测量每个Block的执行时间

一:概述 GPU 程序性能不是靠 CPU 那样的“顺序执行”来衡量的,而是靠线程块(block)和多处理器(SM)利用率。每个 block 在 GPU 的不同多处理器上执行,顺序不确定。传统的 kernel 总体计时(比如 cudaEvent 计时整个 kernel)只能知道总时间,无法分析哪个 block 慢,为什…

敏捷开发-Scrum(下)

Scrum 核心构成:团队、事件与工件的协同价值体系 在 Scrum 框架中,“团队、事件、工件” 并非孤立的模块,而是相互咬合的有机整体:Scrum 团队是价值交付的执行核心,Scrum 事件是节奏把控与反馈调整的机制载体&#xff…

LeetCode 单调栈 739. 每日温度

739. 每日温度给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入…

Java-面试八股文-JVM篇

JVM篇 一.在JVM中,什么是程序计数器? 在 JVM(Java Virtual Machine) 中,程序计数器(Program Counter Register,简称 PC 寄存器) 是一块较小的内存空间,用于记录 当前线程所执行的字…

微算法科技(NASDAQ: MLGO)采用量子相位估计(QPE)方法,增强量子神经网络训练

随着量子计算技术的迅猛发展,传统计算机在处理复杂问题时所遇到的算力瓶颈日益凸显。量子计算以其独特的并行计算能力和指数级增长的计算潜力,为解决这些问题提供了新的途径。微算法科技(NASDAQ: MLGO)探索量子技术在各种应用场景…

MySQL 备份的方法和最佳实践

MySQL 是一种流行的开源关系数据库管理系统,用于在线应用程序和数据仓库。它以可靠性、有效性和简单性而闻名。然而,与任何计算机系统一样,由于硬件故障、软件缺陷或其他不可预见的情况,存在数据丢失的可能性。因此,保…

应用层自定义协议、序列化和反序列化

1.自定义协议开发者根据特定应用场景的需要,自行设计和制定的通信规则和数据格式 1.1 核心组成部分一个典型的自定义协议通常包含以下几个关键部分:​帧/报文格式 (Frame/Packet Format)​​:定义了数据是如何打包的。这通常包括&#xff1a…

Excel VBA 中可用的工作表函数

Visual Basic for Applications (VBA) 中可用的工作表函数。可以在 VBA 中通过 Application.WorksheetFunction 对象调用。 下面我将按照字母分组,对每个函数进行简要解释,并给出在 VBA 中使用的示例。A 组Acos: 返回数字的反余弦值。 result Applicati…

OpenWrt + Docker 完整部署方案:CFnat + Cloudflared 一体化集成

AI生成(可能是AI幻觉) 项目架构概述 基于您现有的网络配置(IP: 192.168.1.1),本方案将CFnat服务作为网络优化层整合到现有的Cloudflare隧道架构中,实现完整的网络加速解决方案。 优化后的流量路径 用户访问…

苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码

完整资料下载 通过网盘分享的文件:苍穹外卖 链接: https://pan.baidu.com/s/1JJaFOodXOF_lNJSUiZ6qtw?pwdps2t 提取码: ps2t 目录 1、缓存菜品 (1)问题说明 (2)使用redis缓存部分数据 1-2、代码完善 &#xff…

计算机毕业设计 基于Python+Django的医疗数据分析系统

精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、项目介绍二…

使用 chromedp 高效爬取 Bing 搜索结果

在数据采集领域,搜索引擎结果是重要的信息来源。但传统爬虫面对现代浏览器渲染的页面时,常因 JavaScript 动态加载、跳转链接加密等问题束手无策。本文将详细介绍如何使用 Go 语言的chromedp库,模拟真实浏览器行为爬取 Bing 搜索结果&#xf…

遗漏的需求

“编写执行者的目的,仅用别名来表达需要传递的数据”,就如客户信息用名字和地址表示一样,这是一个很好的建议。然而,对程序员来说,这没有提供软件开发所必需的详细信息。程序设计人员和用户界面设计者需要准确地知道地…

《云原生故障诊疗指南:从假活到配置漂移的根治方案》

当云原生架构成为企业数字化转型的标配,系统故障的形态也随之发生了根本性变化。曾经那些“一目了然”的报错信息逐渐消失,取而代之的是“指标正常却服务不可用”“偶发故障无规律可循”等隐性问题。这些故障如同架构中的“暗物质”,看不见却持续影响着系统的稳定性,其排查…

“从零到一:使用GitLab和Jenkins实现自动化CI/CD流水线”

GitLab仓库 简单的来说就是开发人员提交代码的仓库,用于团队开发,GitLab 上托管的仓库通常作为远程仓库使用,开发人员可以将本地的 Git 仓库推送到 GitLab 上,也可以从 GitLab 克隆仓库到本地进行开发。 Jenkins Jenkins 是一个开…

3D开发工具HOOPS助力造船业数字化转型,打造更高效、更智能的船舶设计与协作!

造船业是一个高度复杂且竞争激烈的行业,涵盖船体设计、结构分析、生产制造到运维管理的完整生命周期。面对庞大的CAD数据、多方协作的复杂流程以及数字化转型的迫切需求,传统工具往往显得力不从心。 Tech Soft 3D的HOOPS SDK系列,正以其卓越…

Python调用MCP:无需重构,快速为现有应用注入AI与外部服务能力!

文章目录 📖 介绍 📖 🏡 演示环境 🏡 ✨ MCP核心概念:AI世界的“USB-C” ✨ 🛠️ MCP安装与基础使用 🛠️ 🚀 安装模块 📝 创建第一个MCP服务端 📞 Python中MCP客户端的调用方案 📞 📖 概述 📑 深度解析 🔖 参数详情 🔖 常用方法 🚀 不同传输协…