工业大数据分析算法实战-day14
文章目录
- day14
- 最优化算法
- 模型分类
- 经典组合优化模型
- 规则推理算法
- 系统辨识算法
- 非参数模型
- 参数模型
- 更具体一点的理解
day14
昨日主要是针对时序数据挖掘剩余的算法进行阐述,包含:序列模式挖掘、时序异常检测、时序聚类、时序分类,今日开启第5篇章其他算法的讨论研究,诸如:最优化算法、规则推理算法、系统辨识算法、特定数据类型的算法,这些算法是属于非纯数据驱动的方式,属于运筹优化、专家规则、机理模型驱动的方式
最优化算法
最优化算法是帮助我们在满足某些条件的前提下,找到问题的最佳解决方案的数学工具。无论是企业决策、物流规划,还是人工智能模型训练,最优化算法都扮演着核心角色。简单来说,最优化算法就是在一片解的“海洋”中,找到那个最优解的“珍珠”。下图是优化算法的分类
模型分类
1.离散优化问题:指解空间是有限个或可数多个解的优化问题。决策变量通常是整数、布尔值或者有限集合中的元素。例如,选择哪些城市建仓库,决定哪些任务分配给哪台机器等。
- 经典例子:整数规划。
在整数规划中,变量只能取整数值,目标是找到在约束条件下的最优解。这类问题在生产管理、物流运输中非常常见。
2.连续优化问题:指变量可以在实数范围内任意取值,解的空间是连续的。连续优化问题进一步分为有约束和无约束两种。
- 有约束优化:
这类问题的解需要满足一定的限制条件,比如预算上限、产能限制、时间要求等。- 线性约束:约束和目标函数都是线性的。例如,如何在有限的预算内分配资源以获得最大利润。
- 非线性约束:约束条件是非线性函数。这种问题复杂性更高,常见于工程设计和经济分析中。
- 网络优化:优化网络结构中的流量分配或路径选择,例如互联网流量管理或电网规划。
- 边界约束:限制变量在某个范围内,比如温度控制在20-30度之间。
- 无约束优化:
解无需满足任何限制,直接在整个空间中寻找最优解。- 非线性最小二乘法:在数据拟合问题中,通过最小化误差平方和找到最佳模型参数。
- 非光滑优化:当目标函数中存在不可微分的部分时,传统方法可能失效,需要特别的优化手段。
- 全局优化:着眼于找到解空间中最优的全局解,而不仅是局部最优解。例如,在复杂的地形图中寻找最低点。
3.非确定性优化问题:是指问题中存在随机性或不确定性,比如需求的波动、天气的变化等。解决这类问题需要在不确定条件下,设计出鲁棒性强的方案。
- 应用场景:供应链管理(如何在需求波动下规划库存)、投资组合优化(股市波动中的收益最大化)。
4.多目标优化:需要同时优化多个目标,例如在制造业中既要降低成本又要提高产品质量。由于多个目标之间可能存在冲突,通常会通过以下方式处理:
- 加权法:给每个目标分配权重,合并为单一目标。
- Pareto前沿:找出所有不可被其他解完全优越的解,形成“折衷解集”。
经典组合优化模型
组合优化问题是最优化算法中最具有挑战性的部分。它们通常是NP难问题,求解过程复杂,但现实应用非常广泛。
1. 旅行商问题(TSP):旅行商问题要求找到一个经过所有城市一次且仅一次,并最终回到出发点的最短路径。这个问题被称为组合优化领域的“Hello World”问题。
- 应用场景:
- 快递物流:优化送货路线,减少油耗。
- 智能无人机:规划巡航路径,覆盖所有目标点。
2. 加工调度问题:加工调度问题的目标是优化任务分配和排序,比如在工厂中安排任务以最小化总生产时间或延迟。
- 应用场景:
- 工厂生产:如何合理安排生产线任务,提升效率。
- 云计算:将任务分配给多台服务器以缩短运行时间。
3. 背包问题:在背包问题中,需要在有限的空间和承重限制下选择最有价值的物品装入背包。
- 应用场景:
- 投资选择:在预算内选择最有价值的投资组合。
- 数据存储:在存储设备有限的情况下,如何选择重要数据优先存储。
4. 装箱问题:装箱问题是如何高效地将一组物品装入尽量少的容器中。
- 应用场景:
- 物流仓储:优化货物装箱方案,降低运输成本。
- 3D打印:将设计模型高效排布以节省材料。
5. 图着色问题:图着色问题是用尽量少的颜色对图的顶点进行上色,使相邻顶点颜色不同。
- 应用场景:
- 时间表安排:将考试安排到尽量少的时间段,避免冲突。
- 网络频率分配:为无线电台分配不同的频率,防止干扰。
6. 聚类问题:聚类问题的目标是将数据分组,使同组数据相似度高,不同组之间相似度低。
- 应用场景:
- 客户分类:将客户按消费习惯分组,制定精准营销策略。
- 图像处理:将图像像素分组,形成分割区域。
规则推理算法
规则引擎技术是专家系统中常见的一种技术,较为常用的是Rete算法,现有很多规则引擎,之前有调研过一些比较经典和较新的,比如:drools、ice、URule这些。其中重点介绍一下Rete算法。Rete算法是一种高效的规则匹配算法,广泛用于基于规则的推理系统中,例如专家系统或生产系统。它的主要任务是快速匹配大量的事实(或数据)与规则的前提条件(条件部分),以触发相应的规则动作部分。算法的关键点在于优化匹配效率,通过减少重复计算和重复检查。Rete算法的工作可以分为 规则编译 和 运行执行 两个主要部分。
规则编译阶段:像搭建多层过滤器 你可以把 Rete网络想象成一个多层过滤器:
- 第一层筛选与单个条件(模式)匹配的事实。
- 第二层将多层筛选结果组合,进一步筛选满足所有条件的事实。
运行执行阶段:像流水线式处理 当新的事实进入系统时,它像流水线上的一个部件,通过每一层过滤器(节点)被逐步加工。如果通过了所有过滤器,它会触发相关规则的动作。
一、规则编译:规则编译阶段是将规则转换为一种高效的内部表示形式,通常是一个称为 Rete网络 的数据结构。
- 规则表示:规则由**条件部分(IF 条件)和动作部分(THEN 动作)**组成:
- 条件部分由多个条件(谓词或模式)构成,描述规则触发的条件。
- 动作部分定义规则满足时执行的操作。例如:
规则:IF A(x) AND B(x, y) THEN C(x, y)
- 构建 Rete 网络:Rete网络是一种类似树形的结构,用于高效存储规则的条件部分:
- Alpha节点(α节点): 检查单个条件,与具体事实匹配。例如,条件
A(x)
会检查事实集中所有匹配A
模式的事实。 - Beta节点(β节点): 用于处理多个条件之间的联结(如 AND)。它合并多个 α 节点的结果,生成匹配多个条件的事实对。
每条规则的条件部分会被解析成一个 Rete网络路径,路径中的节点逐级筛选数据。
二、运行执行:运行执行阶段是基于 Rete网络匹配事实和规则的过程。主要包括以下步骤:
- 事实加入工作内存:事实被存储在系统的 工作内存(Working Memory)中,例如:
事实1:A(1)
事实2:B(1, 2)
- 匹配过程
- Alpha匹配: Rete网络的 α 节点检查新加入的事实,筛选出与单个条件匹配的事实。例如,
A(1)
会通过匹配节点A(x)
。 - Beta匹配: Rete网络的 β 节点将不同 α 节点的匹配结果组合起来。例如,
A(1)
和B(1, 2)
会在节点AND(A, B)
上被匹配为(1, 2)
。
- 触发规则:当所有条件都匹配时,规则的动作部分被放入冲突集合(Conflict Set)。系统根据某种策略(如优先级、时间顺序)从冲突集合中选择一个规则执行。
系统辨识算法
系统辨识算法是通过分析系统的输入和输出数据,建立数学模型,从而估计表征系统行为的重要参数。这些算法被广泛应用于信号处理、自动控制、机器学习等领域,用于系统建模、优化与预测。根据数学模型是否具有已知的模型结构,系统辨识可以分为以下两类:非参数模型和参数模型。
通俗地说,系统辨识算法的作用就是“通过观察系统的输入和输出,搞清楚这个系统是怎么工作的”。就像你拿到一个黑盒子,不知道里面是什么,但你可以给它输入不同的信号,然后观察输出,借此推测出这个黑盒子的规律或内部机制。下图为系统辨识的部分模型分类及其代表方法
非参数模型
非参数模型不需要预先假定模型的具体结构,而是直接从输入输出数据中提取系统特性。以下是几种主要的非参数模型方法及其核心功能:
- 频率响应测量
- 核心功能:通过分析系统对不同频率输入信号的响应,绘制频率响应曲线(如幅频特性和相频特性),以揭示系统的动态特性。
- 应用场景:适用于线性时不变系统(LTI)的频域分析,广泛用于控制系统设计与稳定性分析。
- 傅里叶分析
- 核心功能:利用傅里叶变换将系统输入输出信号从时域转换到频域,以频谱的形式描述系统的动态行为。
- 应用场景:信号处理与滤波设计,尤其适合周期性或频率相关的动态系统分析。
- 相关分析
- 核心功能:通过计算输入信号与输出信号的相关函数,分析输入输出之间的线性关系以及系统的延迟特性。
- 应用场景:随机信号分析,尤其在噪声环境下评估系统的稳态行为。
参数模型
参数模型需要预先假定数学模型的结构形式(如传递函数或状态空间模型),并通过辨识方法确定其具体参数值。以下是几种主要的参数模型方法及其核心功能:
- 特征值法
- 核心功能:通过求解系统矩阵的特征值,提取系统的自然频率、阻尼比等特性参数,用于描述系统的动态行为。
- 应用场景:机械系统的模态分析、电力系统的稳定性研究等。
- 参数估计
- 核心功能:通过最小二乘法或其他统计方法估计模型参数,使模型能够精确地描述输入输出关系。
- 应用场景:线性或非线性系统的静态与动态建模,适合应用于控制与预测任务。
- 迭代优化
- 核心功能:通过迭代优化算法(如梯度下降、牛顿法等)最小化目标函数(如误差平方和),求得最佳参数值。
- 应用场景:非线性复杂系统的建模与优化问题。
- 卡尔曼滤波
- 核心功能:基于状态空间模型,递归估计系统状态和参数,以实现动态系统的最优估计。
- 应用场景:动态系统的实时状态估计与噪声滤除,广泛用于导航与信号跟踪领域。
- 子空间法
- 核心功能:利用数据矩阵的子空间分解方法(如奇异值分解),直接估计系统的状态空间模型参数。
- 应用场景:多输入多输出(MIMO)系统的高效建模,尤其适用于大型复杂系统的辨识。
- 神经网络
- 核心功能:通过训练人工神经网络从数据中自动提取特征,建立非线性系统模型,尤其适合处理复杂的输入输出关系。
- 应用场景:广泛用于非线性系统建模、时间序列预测、模式识别等。
更具体一点的理解
- 输入和输出是什么?
比如你对一个弹簧系统施加不同的力(输入),观察弹簧的位移(输出)。输入是你给系统的刺激,输出是系统的反应。 - 系统辨识在干啥?
- 找规律:它就是在寻找输入和输出之间的数学关系,或者说规律,比如“输入翻倍,输出也翻倍”这样简单的关系,或者更复杂的动态变化。
- 建模型:一旦找到了这种规律,就可以用数学模型把系统的行为描述出来,比如用公式、方程、或者图表表示这个关系。
- 结果有什么用?
- 用模型来预测系统的行为(比如我知道弹簧的特性后,可以预测未来受力下的位移)。
- 用模型来优化或控制系统(比如控制机械手的运动)。