数学建模强化宝典(14)Fisher 最优分割法

news2024/11/13 8:56:21

前言

       Fisher最优分割法是一种对有序样品进行聚类的方法,它在分类过程中不允许打破样品的顺序。这种方法的目标是找到一种分割方式,使得各段内样品之间的差异最小,而各段之间的差异最大。以下是关于Fisher最优分割法的详细介绍:

一、概念与原理

  • 定义:Fisher最优分割法通过对有序样品的离差平方和进行计算,确定最优的分类数,使得同类样本间的差异最小,各类别样本间的差异最大。
  • 核心指标:离差平方和(即组内样本的方差)是衡量同类样本之间差异程度的重要指标。
  • 优化目标:找到一种分割方法,使得损失函数(通常定义为各段离差平方和的总和)达到最小。

二、计算流程

Fisher最优分割法的计算流程大致如下:

  1. 数据准备:确保样品数据是有序的,并按顺序排列。
  2. 计算损失函数
    • 定义损失函数为各段离差平方和的总和。
    • 对于每个可能的分割点,计算将样品分割成若干段后的损失函数值。
  3. 寻找最优分割
    • 通过迭代计算,找到使损失函数达到最小的分割方法。
    • 通常采用动态规划的方法,从将全部样品视为一段开始,逐步增加分类数,直到找到最优解。
  4. 结果输出:输出最优分割的结果,包括分类数和各类的样品范围。

三、重要公式与递推关系

  • 离差平方和的计算:对于第k组样品{xi, xi+1, ..., xj},其离差平方和计算公式为:

    D(i,j)=sums=ij​[xs​−barx(i,j)]2

    其中,xˉ(i,j)是第k组样品的均值。
  • 损失函数的递推公式:用b(N,K)表示将N个有序样品分为K类的一种方法,定义损失函数为:

    L[b(N,K)]=k=1∑K​Dk​(i,j)

    则最优分割的损失函数可以写成递推形式:

    L[P(N,K)]=k≤j≤Nmin​{L[P(j−1,K−1)]+D(j,N)}

四、应用场景

       Fisher最优分割法在多个领域都有广泛的应用,特别是在需要对有序数据进行聚类的场景中。例如,在交通信控领域,可以使用Fisher最优分割法对交通流量数据进行时段划分,以便在不同时段采用不同的信号控制策略。此外,该方法还可以应用于金融数据分析、环境监测数据处理等领域。

五、优缺点

  • 优点
    • 能够保持样品的原始顺序,适合有序数据的聚类分析。
    • 通过最小化损失函数,能够得到较为合理的分类结果。
  • 缺点
    • 计算量较大,特别是对于大规模数据集。
    • 损失函数的定义和最优解的求解方法可能因具体问题而异,需要针对具体情况进行调整。

六、实现 

       以下是一个简化的MATLAB实现示例,用于演示Fisher最优分割法的基本思想。请注意,这个示例可能需要根据你的具体需求进行调整和优化。

function [cut_points, cost] = fisher_optimal_partitioning(data, K)  
    % 输入:  
    % data - 一维有序数据数组  
    % K - 分割成的段数  
    %  
    % 输出:  
    % cut_points - 分割点的索引(不包括最后一个点)  
    % cost - 最小损失函数值(段内方差之和)  
  
    n = length(data);  
    if K >= n  
        error('K must be less than the number of data points');  
    end  
  
    % 初始化  
    cost_matrix = inf(n-1, K); % 存储每个可能分割点的最小成本  
    cut_points_matrix = zeros(n-1, K); % 存储每个可能分割点的位置  
  
    % 计算所有可能的段内方差  
    segment_variances = zeros(n-1, 1);  
    for i = 1:n-1  
        mean_val = mean(data(1:i));  
        segment_variances(i) = sum((data(1:i) - mean_val).^2);  
    end  
  
    % 动态规划求解  
    for k = 1:K  
        for j = k:(n-1)  
            % 尝试所有可能的分割点  
            for i = (k-1):j-1  
                % 计算当前分割的成本  
                current_cost = cost_matrix(i, k-1) + segment_variances(j) - segment_variances(i);  
                  
                % 更新最小成本和分割点  
                if current_cost < cost_matrix(j, k)  
                    cost_matrix(j, k) = current_cost;  
                    cut_points_matrix(j, k) = i + 1; % 分割点索引(MATLAB索引从1开始)  
                end  
            end  
        end  
    end  
  
    % 提取最终分割点和总成本  
    [~, last_index] = min(cost_matrix(:, K));  
    cut_points = cut_points_matrix(last_index, 1:K-1);  
    cost = cost_matrix(last_index, K);  
  
    % 注意:cut_points给出的是段与段之间的分割点索引,不包括最后一个点  
end  
  
% 示例用法  
data = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]; % 示例数据  
K = 3; % 分割成3段  
[cut_points, cost] = fisher_optimal_partitioning(data, K);  
disp(['分割点索引: ', num2str(cut_points)]);  
disp(['最小成本(方差之和): ', num2str(cost)]);

注意

  1. 这个示例中的“成本”是简单地使用段内方差之和来计算的,这在实际应用中可能不是最优的选择,具体取决于你的数据和需求。
  2. 这个实现假设数据已经是有序的。如果数据未排序,你需要在调用函数之前先对数据进行排序。
  3. 这个实现可能不是最高效的,特别是对于大数据集。在实际应用中,你可能需要考虑使用更高效的算法或数据结构来优化性能。
  4. segment_variances数组的计算方式在这个示例中是为了简化而设计的,它只计算了从数据开始到当前点的方差。在实际应用中,你可能需要更精确地计算每个段的方差。

总结 

       总的来说,Fisher最优分割法是一种有效的有序样品聚类方法,它通过最小化损失函数来找到最优的分割方式,为数据分析和决策提供了有力的支持。

 结语  

勇气不是没有恐惧

而是尽管害怕也依然前行

!!!

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

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

相关文章

【LeetCode热题100】前缀和

这篇博客共记录了8道前缀和算法相关的题目&#xff0c;分别是&#xff1a;【模版】前缀和、【模版】二维前缀和、寻找数组的中心下标、除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和。 #include <iostream> #include <vector> …

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽 “弃工从研”的路上很孤独&#xff0c;于是我记下了些许笔记相伴&#xff0c;希望能够帮助到大家 知识点 1. 散列查找 散列查找是一种高效的查找方法&#xff0c;它通过散列函数将关键字映射到数组的一个位置&#xff0c;从而实现快速查找。这种方法的时间复杂度平均为…

自我指导:提升语言模型自我生成指令的能力

人工智能咨询培训老师叶梓 转载标明出处 传统的语言模型&#xff0c;尤其是经过指令微调的大型模型&#xff0c;虽然在零样本&#xff08;zero-shot&#xff09;任务泛化上表现出色&#xff0c;但它们高度依赖于人类编写的指令数据。这些数据往往数量有限、多样性不足&#xf…

配置Java(JDK)环境变量

一、配置JDK环境变量 将JDK-22压缩包加压缩到指定目录下面&#xff0c;本机路径是&#xff1a;C:\Program Files\Java&#xff08;可以加压缩到自己的指定路径&#xff0c;记住这个路径&#xff0c;配置环境变量时候要使用&#xff09;。 鼠标右键“此电脑”&#xff0c;点击“…

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考 MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触…

Spring框架-----ioc

基本概念 Spring 是一个轻量级的,IOC和AOP的一站式Java 开发框架&#xff0c;是为了简化企业级应用开发而生的 轻量级&#xff1a;框架核心模块体积小 IOC:Inversion of Control&#xff08;控制反转&#xff09;把创建对象的控制权反转给Spring框架管理 以前我们程序中需要…

Linux下构建Docker镜像

Docker在Linux构建镜像 Docker是一种轻量级的容器化技术&#xff0c;可以让开发者将应用程序及其所有依赖项打包到一个独立的容器中&#xff0c;从而实现跨平台和快速部署&#xff0c;在Linux系统上&#xff0c;我们可以使用D0cker来构建自己的镜像&#xff0c;并且可以通过简…

RocketMQ学习(三)

文章目录 1. 高级功能1.1 消息存储1.1.1 存储介质关系型数据库DB文件系统 1.1.2 性能对比1.1.3 消息的存储和发送1&#xff09;消息存储2&#xff09;消息发送 1.1.4 消息存储结构1.1.5 刷盘机制1&#xff09;同步刷盘2&#xff09;异步刷盘3&#xff09;配置 1.2 高可用性机制…

软件设计之JavaWeb(1)

软件设计之JavaWeb(1) 此篇应在MySQL之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈 资料可以去尚硅谷官网免费领取 此章节最好学完JDBC观看 学习内容&#xff1a; XML概述T…

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼&#xff1f;项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时&#xff0c;效率和理解度都会大打折扣。别担心&#xff0c;只需3分钟&#xff0c;我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是…

解决浏览器自动将http网址转https

删除浏览器自动使用https的方式 在浏览器地址栏输入&#xff1a;chrome://net-internals/#hsts PS:如果是edge浏览器可输入&#xff1a;edge://net-internals/#hsts 在Delete domain security policies搜索框下&#xff0c;输入要删除的域名,然后点击delete 解决方法&#…

VMware中共享文件夹没了怎么办?

1.进入root su root 需要提前设置密码 sudo passwd root 2.创建一个hgfs文件夹&#xff0c;share就在这里面 sudo mkdir /mnt/hgfs/ 3.输入下面的命令 sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 4.然后就能找到share文件夹了&#xff0c;注意每…

CCF推荐B类会议和期刊总结(计算机网络领域)

CCF推荐B类会议和期刊总结&#xff08;计算机网络领域&#xff09; 在计算机网络领域&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的B类会议和期刊代表了该领域的较高水平。以下是对所有B类会议和期刊的总结&#xff0c;包括全称、出版社、dblp文献网址以及所属…

串口通信协议(UART)

简介 uart通讯协议&#xff0c;是一种成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信的协议&#xff1b;是一种全双工&#xff0c;设备点对点通信的协议。下面从硬件电路、电平标准和串口参数等方面来了解uart通信协议。 硬件电路 硬件电路非常简单&am…

如何限制与管控员工上网行为?五个管控方法让员工效率倍增!

在现代企业中&#xff0c;互联网是工作中不可或缺的工具&#xff0c;但与此同时&#xff0c;员工在工作时间浏览与工作无关的网站、进行网络娱乐等行为&#xff0c;也成为了影响企业生产力和效率的主要因素之一。如何有效限制和管控员工的上网行为&#xff0c;从而提升工作效率…

利士策分享,逆境破局关键:精准策略

利士策分享&#xff0c;逆境破局关键&#xff1a;精准策略 在人生的征途上&#xff0c;逆境如同试炼场&#xff0c;考验着我们的智慧与勇气。 为了在这片试炼场上稳健前行&#xff0c;我们需要一套具体而精准的应对策略。 以下&#xff0c;是结合实践经验与智慧总结的应对策略…

机器意识的可能性:从计算功能主义到生物自然主义的思考

引言 近年来&#xff0c;人工智能&#xff08;AI&#xff09;的飞速发展引发了关于机器能否具备意识的激烈讨论。这个话题不仅涉及技术层面的挑战&#xff0c;还触及了哲学和神经科学的基本问题。Anil Seth教授作为意识研究领域的权威&#xff0c;他在近期发表的论文中提出了一…

ESP32-驱动ST7789显示

前言 一、TFT_eSPI库的安装 二、TFT_eSPI 的设置 1.文件的路径 2.User_Setup.h的设置 4.连线 三.显示 总结 前言 环境&#xff1a; 芯片&#xff1a;ESP32 软件&#xff1a;Arduino 一、TFT_eSPI库的安装 1.安装TFT_eSPI库,安装时注意安装内容不要错了 如果提示还有…

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2757 标注数量(xml文件个数)&#xff1a;2757 标注数量(txt文件个数)&#xff1a;2757 标注…