TFS-2004《Input Selection for Nonlinear Regression Models》

发布于:2025-09-09 ⋅ 阅读:(22) ⋅ 点赞:(0)

2. 核心思想

这篇论文提出了一种模型无关 (model-free) 的方法来选择非线性回归模型中的重要输入变量。其核心思想基于函数的基本性质:对于一个函数 fff,如果两个输入向量 xi\mathbf{x}_ixixj\mathbf{x}_jxj 完全相同 (xi=xj\mathbf{x}_i = \mathbf{x}_jxi=xj),那么它们对应的输出 yiy_iyiyjy_jyj 也必须完全相同 (yi=yjy_i = y_jyi=yj)。

  • 基本原理 (离散/无噪声情况): 算法从一个包含所有潜在输入变量的初始数据集(由输入向量 x\mathbf{x}x 和输出 yyy 组成的矩阵 XXX 和向量 yyy,合并为 Z=[X,y]Z=[X, y]Z=[X,y])开始。它通过逐一移除每个输入变量(即 ZZZ 矩阵的一列),然后检查移除后的数据集是否仍然满足上述函数性质。如果移除某个输入变量后,数据集中出现了输入相同但输出不同的情况(即违反了函数性质),则说明该输入变量是重要的,不能被移除。反之,如果移除后函数性质仍然满足,则该输入可能是冗余的。
  • 处理噪声和连续数据: 现实数据往往是连续值且含有噪声,直接比较向量相等性变得不现实。因此,论文引入了模糊聚类 (Fuzzy Clustering)相似性度量 (Similarity Measure)
    • 首先,对包含所有输入和输出的完整数据空间 ZZZ 进行模糊聚类,将数据点分组成模糊集(簇)。
    • 然后,定义一种不一致性度量 (Inconsistency Measure):寻找那些在输入空间非常相似(即输入相近)但在输出空间不相似(即输出相差较大)的簇对。这样的簇对违反了函数的基本性质。
    • 通过量化这种不一致性,算法可以评估移除某个输入变量后,数据集整体上偏离函数性质的程度。移除重要输入会导致不一致性显著增加。

3. 目标函数与优化过程

该方法没有传统意义上的显式目标函数需要最小化或最大化。它的“优化”过程更侧重于评估和比较。

  • 核心度量 (目标相关):

    • 簇相似性度量 (SSS): 使用包含度量 (Inclusion Measure) 来计算两个模糊集(簇) CiC_iCiCjC_jCj 的相似性。对于单个维度 kkk,相似性 SijkS_{ij}^kSijk 定义为:
      Sijk=∑l=1Nmin⁡(uil,ujl)xlk∑l=1Nmax⁡(uil,ujl)xlk S_{ij}^k = \frac{\sum_{l=1}^{N} \min(u_{il}, u_{jl}) x_{lk}}{\sum_{l=1}^{N} \max(u_{il}, u_{jl}) x_{lk}} Sijk=l=1Nmax(uil,ujl)xlkl=1Nmin(uil,ujl)xlk
      其中 uilu_{il}uilujlu_{jl}ujl 分别是数据点 lll 对簇 iiijjj 的隶属度,xlkx_{lk}xlk 是数据点 lll 在维度 kkk 上的值。总相似性 SijinS_{ij}^{in}Sijin (输入空间) 或 SijoutS_{ij}^{out}Sijout (输出空间) 是各维度相似性的乘积:
      Sijin/out=∏k∈dimensionsSijk S_{ij}^{in/out} = \prod_{k \in \text{dimensions}} S_{ij}^k Sijin/out=kdimensionsSijk
    • 不一致性决策函数 (DDD): 用于衡量一对簇 (i,j)(i, j)(i,j) 的不一致性程度,结合了输入和输出空间的相似性以及簇的大小(数据点数量 ni,njn_i, n_jni,nj):
      Dij=ninj(ni+nj)2Sijin(1−Sijout) D_{ij} = \frac{n_i n_j}{(n_i + n_j)^2} S_{ij}^{in} (1 - S_{ij}^{out}) Dij=(ni+nj)2ninjSijin(1Sijout)
      这个函数在输入相似 (SijinS_{ij}^{in}Sijin 接近 1) 且输出不相似 (SijoutS_{ij}^{out}Sijout 接近 0) 时达到最大值,表示强烈的不一致性。
    • 总不一致性指数 (Ξk\Xi_kΞk): 对于移除了第 kkk 个输入变量的数据集,计算所有相似簇对 (i,j)(i, j)(i,j) 的不一致性决策函数 DijD_{ij}Dij 的总和,得到该数据集的总不一致性 Ξktotal\Xi_k^{total}Ξktotal。然后,将其与数据集的总相似性 Ξksim\Xi_k^{sim}Ξksim(所有相似簇对的 SijinSijoutS_{ij}^{in} S_{ij}^{out}SijinSijout 之和)进行比较,得到归一化的不一致性指数 Ξk\Xi_kΞk
      Ξk=ΞktotalΞksim \Xi_k = \frac{\Xi_k^{total}}{\Xi_k^{sim}} Ξk=ΞksimΞktotal
  • “优化”过程:

    1. 初始化:构建包含所有潜在输入和输出的初始数据矩阵 ZZZ
    2. 迭代选择:
      • 对当前的 ZZZ 进行模糊聚类。
      • 对于每一个潜在输入变量(即 ZZZ 的每一列,除了最后一列输出):
        • 假想地移除该列,形成新的数据矩阵 Z′Z'Z
        • Z′Z'Z 进行模糊聚类。
        • 计算该 Z′Z'Z 对应的归一化不一致性指数 Ξk\Xi_kΞk
      • 选择标准: 比较所有 Ξk\Xi_kΞk 值,选择使得 Ξk\Xi_kΞk 最小 的那个输入变量进行移除。直觉上,移除不重要的变量对整体不一致性影响小(甚至可能因减少维度而略微改善簇的紧凑性,使相似性略微增加),Ξk\Xi_kΞk 较小;移除重要变量会显著增加不一致性,Ξk\Xi_kΞk 较大。
    3. 更新:永久移除选定的输入变量列,更新 ZZZ
    4. 重复:回到步骤 2,直到满足停止条件(通常由用户根据 Ξk\Xi_kΞk 值的变化趋势主观判断)。

4. 主要贡献点

  1. 模型无关性: 该方法不依赖于任何特定的模型结构(如神经网络、模糊系统等),直接从数据本身出发进行输入选择,避免了因模型选择偏差带来的问题。
  2. 处理噪声和连续数据: 通过引入模糊聚类和相似性度量,巧妙地将离散、无噪声情况下的函数性质判断推广到了处理现实世界中的连续、噪声数据。
  3. 灵活性: 能够处理任意的输入变量子集选择问题,不仅限于连续的滞后输入/输出(优于 Lipschitz 系数法或虚假最近邻法)。
  4. 鲁棒性: 论文指出该方法相比基于 Lipschitz 系数的方法对噪声更不敏感。
  5. 快速聚类算法: 提出了一个适用于大数据集和较多聚类数的快速模糊聚类算法(类似于简化版的自组织映射或特定条件下的模糊 c 均值变体),提高了计算效率。

5. 算法实现过程详解

以下是论文提出的基于聚类的输入选择算法的详细步骤:

  1. 数据准备:

    • 收集或给定输入-输出数据对 {(xt,yt)}\{(\mathbf{x}_t, y_t)\}{(xt,yt)}
    • 根据问题(静态或动态 NARX)构建初始回归向量 rt\mathbf{r}_trt,形成潜在输入集合。
    • 构建初始数据矩阵 Z=[X,y]Z = [X, y]Z=[X,y],其中 XXX 的每一列对应一个潜在回归项,yyy 是输出列。
  2. 初始化:

    • 设置聚类算法参数:最大簇宽 wmaxw_{max}wmax, 收缩/扩张参数 α\alphaα, 相似性阈值 ϵ\epsilonϵ, 决策曲面参数 λ\lambdaλ (通常设为 3-4)。
    • 设置当前数据矩阵 Zcurrent=ZZ_{current} = ZZcurrent=Z
    • 设置输入变量数量 ninputsn_{inputs}ninputs (等于 ZZZ 的列数减 1)。
  3. 主循环 (迭代进行输入选择):

    • 步骤 A: 聚类当前数据集
      • 使用第三节描述的快速模糊聚类算法对 ZcurrentZ_{current}Zcurrent 进行聚类。得到一组簇,每个簇有中心、宽度和包含的数据点数。
    • 步骤 B: 计算基准不一致性
      • 基于当前聚类结果,计算所有相似簇对 (i,j)(i,j)(i,j) 的不一致性决策函数 DijD_{ij}Dij (使用公式 Dij=ninj(ni+nj)2Sijin(1−Sijout)D_{ij} = \frac{n_i n_j}{(n_i + n_j)^2} S_{ij}^{in} (1 - S_{ij}^{out})Dij=(ni+nj)2ninjSijin(1Sijout))。
      • 计算总不一致性 Ξtotal,base\Xi_{total, base}Ξtotal,base 和总相似性 Ξsim,base\Xi_{sim, base}Ξsim,base
      • 计算基准不一致性指数 Ξbase=Ξtotal,base/Ξsim,base\Xi_{base} = \Xi_{total, base} / \Xi_{sim, base}Ξbase=Ξtotal,base/Ξsim,base
    • 步骤 C: 评估移除每个输入的影响
      • 对于 k=1k = 1k=1ninputsn_{inputs}ninputs (即每个潜在输入变量):
        • 创建一个新的数据矩阵 Zk′Z'_kZk,它是从 ZcurrentZ_{current}Zcurrent 中移除了第 kkk 列(对应第 kkk 个输入变量)得到的。
        • Zk′Z'_kZk 进行快速模糊聚类。
        • 基于 Zk′Z'_kZk 的聚类结果,计算其对应的总不一致性 Ξtotal,k\Xi_{total, k}Ξtotal,k 和总相似性 Ξsim,k\Xi_{sim, k}Ξsim,k
        • 计算移除第 kkk 个输入后的不一致性指数 Ξk=Ξtotal,k/Ξsim,k\Xi_k = \Xi_{total, k} / \Xi_{sim, k}Ξk=Ξtotal,k/Ξsim,k
    • 步骤 D: 选择并移除最不重要的输入
      • 计算所有 Ξk\Xi_kΞk 相对于基准 Ξbase\Xi_{base}Ξbase 的相对差异或直接比较 Ξk\Xi_kΞk
      • 选择使得 Ξk\Xi_kΞk 最小 (或相对增加最小) 的索引 k∗k^*k
      • ZcurrentZ_{current}Zcurrent 中永久移除第 k∗k^*k 列。
      • 更新 ninputs=ninputs−1n_{inputs} = n_{inputs} - 1ninputs=ninputs1
    • 步骤 E: (可选) 迭代终止判断
      • 用户观察 Ξk\Xi_kΞk 值随迭代的变化。如果移除输入后 Ξk\Xi_kΞk 的分布不再显著变化,或者达到预定的输入数量,则停止迭代。否则,返回步骤 A。
  4. 输出:

    • 算法输出一个按重要性排序的输入变量列表(通常是根据每轮迭代中 Ξk\Xi_kΞk 的大小反推)。最开始被移除的变量被认为是最不重要的,最后剩下的被认为是最关键的。
    • 最终模型使用的具体输入集合需要用户根据重要性排序和建模目标(如精度与复杂度权衡)来最终确定。

该算法通过量化数据的“函数一致性”来指导输入选择,为非线性系统建模提供了一个有效且灵活的预处理工具。


网站公告

今日签到

点亮在社区的每一天
去签到