TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》


核心思想

这篇论文的核心思想是提出一种全新的、数据驱动自主模糊聚类(Autonomous Fuzzy Clustering, AFC)算法。其核心创新在于,它巧妙地结合了模糊聚类的灵活性和基于中位数(medoids)聚类的可解释性,并通过一个自适应的高斯核来控制模糊程度,从而实现了两大目标:

  1. 自主确定聚类数量(C):无需用户预先指定聚类数,算法能根据数据的内在结构(局部模式)自动推断出最优的聚类数量。
  2. 获得高质量的初始划分:避免了传统模糊C均值(FCM)等算法因随机初始化而陷入局部次优解的问题,提供了一个稳健且高质量的初始聚类中心集。

该算法通过一个巧妙的“微聚类”(microcluster)机制,将所有数据点视为一个微聚类,利用高斯核计算它们之间的相互隶属度,然后通过计算每个数据点的“累积隶属度”(cumulative membership)并寻找其局部最大值,来一次性地、自主地选出初始的聚类中位数。


目标函数

AFC算法的目标函数是整个优化过程的基石,它定义了算法需要最小化的准则。

其目标函数如下:

J(U,P)=∑k=1K∑i=1Cμˉi,k∥xk−pi∥2J(U, P) = \sum_{k=1}^{K} \sum_{i=1}^{C} \bar{\mu}_{i,k} \|x_k - p_i\|^2J(U,P)=k=1Ki=1Cμˉi,kxkpi2

其中:

  • J(U,P)J(U, P)J(U,P) 是需要最小化的目标函数值。
  • U=[μˉi,k]i=1:C,k=1:KU = [\bar{\mu}_{i,k}]_{i=1:C, k=1:K}U=[μˉi,k]i=1:C,k=1:K模糊隶属度矩阵μˉi,k\bar{\mu}_{i,k}μˉi,k 表示数据样本 xkx_kxk 属于由中位数 pip_ipi 代表的第 iii 个聚类的归一化隶属度
  • P=[pi]i=1:CP = [p_i]_{i=1:C}P=[pi]i=1:C中位数矩阵pip_ipi 是第 iii 个聚类的中位数,它必须是数据集中的一个实际存在的样本点
  • KKK 是数据集中的总样本数。
  • CCC 是聚类的数量(在算法开始时是未知的)。
  • ∥xk−pi∥2\|x_k - p_i\|^2xkpi2 是数据样本 xkx_kxk 与聚类中位数 pip_ipi 之间的欧几里得距离的平方。

这个目标函数可以理解为加权的平方误差和。算法的目标是找到一组中位数 PPP 和对应的隶属度 UUU,使得所有样本到其所属聚类中心的加权距离平方和最小。


目标函数的优化过程

AFC算法对目标函数的优化过程分为两个主要阶段:

第一阶段:自主初始化 (核心创新)

这一阶段不直接优化上述目标函数,而是为第二阶段提供一个极佳的起点。其核心思想是:

  1. 计算自适应核宽 σG\sigma_GσG:根据所有数据点间的相互距离和用户设定的“粒度级别”GGG,通过公式(5)计算出一个全局的高斯核宽度 σG\sigma_GσG。这个 σG\sigma_GσG 控制了“影响范围”,是算法数据驱动特性的体现。
  2. 构建微聚类隶属度矩阵 UmicroU_{micro}Umicro:将每个数据点 xkx_kxk 都视为一个微聚类的中位数,利用高斯函数计算它对所有其他数据点 xjx_jxj 的隶属度:
    μ(xk,xj,σG)=e−∥xk−xj∥2/σG2\mu(x_k, x_j, \sigma_G) = e^{-\|x_k - x_j\|^2 / \sigma_G^2}μ(xk,xj,σG)=exkxj2/σG2
    然后进行归一化,得到微聚类隶属度矩阵 UmicroU_{micro}Umicro
  3. 计算累积隶属度 λ(xk)\lambda(x_k)λ(xk):对于每个数据点 xkx_kxk,计算它作为微聚类中位数时,对所有 KKK 个样本(包括自己)的隶属度之和:
    λ(xk)=∑j=1Kμˉk,j′\lambda(x_k) = \sum_{j=1}^{K} \bar{\mu}'_{k,j}λ(xk)=j=1Kμˉk,j
    这个 λ(xk)\lambda(x_k)λ(xk) 可以看作是该点作为“局部模式代表”的综合吸引力或代表性强度
  4. 自主选择初始中位数 P0P^0P0:找出所有满足 条件1 的数据点:
    如果 λ(xk)>max⁡∥xk−xj∥≤σG;k≠j(λ(xj)), 则 xk∈{p}C0\text{如果 } \lambda(x_k) > \max_{\|x_k - x_j\| \leq \sigma_G; k \neq j} (\lambda(x_j)) \text{, 则 } x_k \in \{p\}_C^0如果 λ(xk)>xkxjσG;k=jmax(λ(xj)) xk{p}C0
    这意味着,xkx_kxk 的累积隶属度在其以 σG\sigma_GσG 为半径的邻域内是最大的。这些点就是局部模式的峰值,被选为初始聚类中位数 P0P^0P0。此时,聚类数 CCC 也就被自主确定了。

第二阶段:迭代优化

在获得高质量的初始中位数 P0P^0P0 后,算法进入标准的交替优化过程,以最小化目标函数 J(U,P)J(U, P)J(U,P)

  1. 更新中位数 PtP^tPt (固定 Ut−1U^{t-1}Ut1):对于每个聚类 iii,在所有数据样本中寻找一个新的中位数 pitp_i^tpit,使得该聚类内所有样本的加权距离平方和最小:
    pit=arg⁡min⁡z∈{x}(∑k=1Kμˉi,kt−1∥xk−z∥2)p_i^t = \arg \min_{z \in \{x\}} \left( \sum_{k=1}^{K} \bar{\mu}^{t-1}_{i,k} \|x_k - z\|^2 \right)pit=argz{x}min(k=1Kμˉi,kt1xkz2)
    由于中位数必须是实际数据点,因此这是一个在有限集合 {x}\{x\}{x} 上的搜索问题。
  2. 更新隶属度 UtU^tUt (固定 PtP^tPt):根据新的中位数位置 PtP^tPt,重新计算所有样本的归一化隶属度:
    μˉi,kt=μ(pit,xk,σG)∑j=1Cμ(pjt,xk,σG)\bar{\mu}^t_{i,k} = \frac{\mu(p_i^t, x_k, \sigma_G)}{\sum_{j=1}^{C} \mu(p_j^t, x_k, \sigma_G)}μˉi,kt=j=1Cμ(pjt,xk,σG)μ(pit,xk,σG)
    这里使用的仍然是第一阶段计算出的、固定的 σG\sigma_GσG
  3. 收敛判断:重复步骤1和2,计算新的目标函数值 J(Ut,Pt)J(U^t, P^t)J(Ut,Pt)。当目标函数值的变化小于预设阈值,或达到最大迭代次数时,停止迭代。

主要贡献点

  1. 数据驱动的自主聚类:这是最核心的贡献。算法通过“累积隶属度”和局部最大值搜索,完全自主地确定了聚类数量 CCC,无需任何复杂的迭代搜索或外部参数调整,解决了FCM等算法的一大痛点。
  2. 稳健的高质量初始化:提出的初始化方法基于数据的全局结构,避免了随机初始化的不稳定性,为后续优化提供了极佳的起点,提高了算法的鲁棒性和收敛速度。
  3. 可解释的聚类中心:采用中位数(实际数据点)而非均值(虚拟点)作为聚类中心,使得聚类结果更具可解释性,尤其适用于需要理解“典型样本”是什么的应用场景。
  4. 数据驱动的模糊度控制:用一个从数据中自适应计算的高斯核宽度 σG\sigma_GσG 来控制模糊度,取代了传统FCM中需要手动设定的模糊加权指数 mmm,使算法更加自主。
  5. 高效的流式数据扩展:提出了一种“逐块”(chunk-by-chunk)的流式数据聚类机制。它能高效地处理数据流,通过融合新旧聚类中心并移除冗余,实现了对概念漂移和概念突变的自适应。
  6. 计算效率:对于静态数据,其时间复杂度为 O(K2+HCK)O(K^2 + HCK)O(K2+HCK),其中 K2K^2K2 项来自初始化,HCKHCKHCK 项来自迭代优化,整体效率较高。

实验结果

论文在16个基准数据集(包括合成数据、真实世界数据和图像数据)上进行了大量实验,结果证明了AFC算法的有效性。

  1. 静态数据聚类:在6个合成数据集和8个真实世界数据集上,AFC算法(G=4G=4G=4)在总体排名(Table V)上优于12种最先进的对比算法(如FCM, K-means, DBSCAN, AP等)。它在Calinski Harabasz指数(CHI)、Davies-Bouldin指数(DBI)和轮廓系数(SC)等质量指标上表现最佳,表明其聚类结果紧凑且分离度好。
  2. 流式数据聚类:在8个真实世界数据集上,AFC算法与5种在线聚类算法(如EC, OKM)相比,同样取得了优异的性能(Table VI),在CHI和SC等指标上排名第一或前三,证明了其在处理数据流时的有效性。
  3. 大规模高维数据:在MNIST和FMNIST两个大规模高维数据集上,AFC算法的计算效率远高于对比算法(ADP),同时聚类质量(CHI)也显著更好
  4. 参数 GGG 的影响:实验表明,粒度级别 GGG 控制着聚类的精细程度。较小的 GGG(如1,2)导致粗粒度、少聚类;较大的 GGG(如5,6)导致细粒度、多聚类。推荐值 G=4G=4G=4555 能在多数情况下取得良好平衡。

算法实现过程详解

以下是AFC算法(静态数据)的详细实现步骤,对应论文中的 Algorithm 1

  1. 输入:静态数据集 {x}={x1,x2,...,xK}\{x\} = \{x_1, x_2, ..., x_K\}{x}={x1,x2,...,xK} 和粒度级别 GGG
  2. 计算自适应核宽 σG\sigma_GσG
    • 根据公式(5),利用所有数据点对之间的距离和用户设定的 GGG,计算出 σG2\sigma_G^2σG2。这个值在整个算法过程中保持不变。
  3. 构建微聚类隶属度矩阵 UmicroU_{micro}Umicro
    • 对于每个数据点 xkx_kxk(作为微聚类中位数),计算它对所有 KKK 个数据点 xjx_jxj 的高斯隶属度 μ(xk,xj,σG)\mu(x_k, x_j, \sigma_G)μ(xk,xj,σG)
    • 对每个 xjx_jxj,将其对所有微聚类的隶属度进行归一化,得到 μˉk,j′\bar{\mu}'_{k,j}μˉk,j。最终形成一个 K×KK \times KK×K 的矩阵 UmicroU_{micro}Umicro
  4. 计算累积隶属度 λ(xk)\lambda(x_k)λ(xk)
    • UmicroU_{micro}Umicro 的每一行(对应一个微聚类中位数 xkx_kxk)求和,得到该点的累积隶属度 λ(xk)\lambda(x_k)λ(xk)
  5. 自主选择初始中位数 P0P^0P0
    • 遍历所有数据点 xkx_kxk,检查其是否满足条件1:即在以 σG\sigma_GσG 为半径的邻域内,其 λ(xk)\lambda(x_k)λ(xk) 是否是最大的。
    • 将所有满足条件的 xkx_kxk 收集起来,构成初始聚类中位数集合 P0={p10,p20,...,pC0}P^0 = \{p^0_1, p^0_2, ..., p^0_C\}P0={p10,p20,...,pC0}。此时,聚类数 CCC 被确定。
  6. 初始化隶属度矩阵 U0U^0U0
    • 使用初始中位数 P0P^0P0 和固定的 σG\sigma_GσG,根据公式(3)计算所有样本的归一化隶属度,得到 U0U^0U0
  7. 迭代优化
    • 初始化t=1t = 1t=1,计算初始目标函数值 J(U0,P0)J(U^0, P^0)J(U0,P0)
    • 循环
      • 步骤1 (更新 PtP^tPt):对每个聚类 iii,根据公式(9),在原始数据集 {x}\{x\}{x} 中搜索一个新的中位数 pitp_i^tpit,使得该聚类的加权距离平方和最小。
      • 步骤1 (更新 UtU^tUt):根据新的中位数 PtP^tPt,根据公式(10)重新计算所有样本的归一化隶属度 UtU^tUt
      • 步骤2 (收敛判断):计算新的目标函数值 J(Ut,Pt)J(U^t, P^t)J(Ut,Pt)。如果 JJJ 的变化足够小(收敛),则跳出循环;否则,令 t=t+1t = t + 1t=t+1,返回步骤1。
  8. 输出:最终的聚类中位数矩阵 PPP 和隶属度矩阵 UUU

综上所述,这篇论文提出了一种思想新颖、实现巧妙的自主模糊聚类算法。它通过“累积隶属度”这一核心概念,成功地将模糊聚类的优势与自主性、可解释性相结合,为解决聚类分析中的核心难题提供了新的思路。

问题分析

公式 (5) 是论文中用于计算自适应核宽度 σG2\sigma_G^2σG2 的核心公式,它是 AFC 算法中的一个关键步骤。该公式通过数据点之间的相互距离和用户设定的“粒度级别” GGG 来计算高斯核的宽度,从而控制隶属度函数的模糊程度。以下是对其数学原理的详细分析:


公式回顾

公式 (5) 表达如下:

σg2=1∑i=1K−1∑j=i+1Kwg,i,j∑i=1K−1∑j=i+1Kwg,i,j∥xi−xj∥2 \sigma_g^2 = \frac{1}{\sum_{i=1}^{K-1} \sum_{j=i+1}^{K} w_{g,i,j}} \sum_{i=1}^{K-1} \sum_{j=i+1}^{K} w_{g,i,j} \|x_i - x_j\|^2 σg2=i=1K1j=i+1Kwg,i,j1i=1K1j=i+1Kwg,i,jxixj2

其中:

  • g=1,2,…,Gg = 1, 2, \dots, Gg=1,2,,G:表示粒度级别的索引,GGG 是用户选择的非负整数。
  • wg,i,jw_{g,i,j}wg,i,j 是一个权重函数,定义为:
    wg,i,j={1,如果 ∥xi−xj∥≤σg−1,0,否则. w_{g,i,j} = \begin{cases} 1, & \text{如果 } \|x_i - x_j\| \leq \sigma_{g-1}, \\ 0, & \text{否则}. \end{cases} wg,i,j={1,0,如果 xixjσg1,否则.
  • σ02=2K(K−1)∑i=1K−1∑j=i+1K∥xi−xj∥2\sigma_0^2 = \frac{2}{K(K-1)} \sum_{i=1}^{K-1} \sum_{j=i+1}^{K} \|x_i - x_j\|^2σ02=K(K1)2i=1K1j=i+1Kxixj2:这是初始核宽度的计算公式。

数学原理分析

1. σ02\sigma_0^2σ02 的计算
  • σ02\sigma_0^2σ02 是所有数据点对之间欧几里得距离平方的平均值,乘以一个常数因子 2K(K−1)\frac{2}{K(K-1)}K(K1)2
  • 它的作用是提供一个全局尺度,衡量数据集的整体分布范围。具体来说:
    σ02=2K(K−1)∑i=1K−1∑j=i+1K∥xi−xj∥2 \sigma_0^2 = \frac{2}{K(K-1)} \sum_{i=1}^{K-1} \sum_{j=i+1}^{K} \|x_i - x_j\|^2 σ02=K(K1)2i=1K1j=i+1Kxixj2
    这里的分母 K(K−1)K(K-1)K(K1) 是所有可能的数据点对的数量(无序对),因此 σ02\sigma_0^2σ02 可以看作是对数据点间平均距离平方的一种归一化估计。
  • σ02\sigma_0^2σ02 是整个算法的起点,后续的 σg2\sigma_g^2σg2 都是基于它递归计算的。
2. 递归计算 σg2\sigma_g^2σg2
  • 对于 g>0g > 0g>0σg2\sigma_g^2σg2 的计算依赖于前一步的 σg−12\sigma_{g-1}^2σg12。具体来说,公式 (5) 中的 wg,i,jw_{g,i,j}wg,i,j 使用了 σg−1\sigma_{g-1}σg1 作为阈值,来决定是否将数据点对 (xi,xj)(x_i, x_j)(xi,xj) 的距离平方纳入加权平均的计算。
  • wg,i,jw_{g,i,j}wg,i,j 的作用是:
    • 如果两个数据点 xix_ixixjx_jxj 的距离小于或等于 σg−1\sigma_{g-1}σg1,则认为它们在当前粒度级别 ggg 下是“邻近”的,权重为 1。
    • 否则,权重为 0,表示这两个点在当前粒度级别下不相关。
  • 因此,σg2\sigma_g^2σg2 的计算可以理解为:
    σg2=邻近点对的距离平方之和邻近点对的数量 \sigma_g^2 = \frac{\text{邻近点对的距离平方之和}}{\text{邻近点对的数量}} σg2=邻近点对的数量邻近点对的距离平方之和
    其中,“邻近点对”是指满足 ∥xi−xj∥≤σg−1\|x_i - x_j\| \leq \sigma_{g-1}xixjσg1 的点对。
3. 自适应性与粒度控制
  • 通过递归地计算 σg2\sigma_g^2σg2,算法能够根据数据的局部结构动态调整核宽度。具体来说:
    • g=1g = 1g=1 时,σ12\sigma_1^2σ12 基于 σ02\sigma_0^2σ02 计算,此时的邻近关系较为宽松,因为 σ02\sigma_0^2σ02 是全局尺度。
    • 随着 ggg 的增加,σg−1\sigma_{g-1}σg1 逐渐减小,邻近点对的定义变得越来越严格,这使得 σg2\sigma_g^2σg2 能够捕捉到更精细的局部模式。
  • 用户可以通过选择不同的 GGG 来控制聚类结果的精细程度:
    • 较小的 GGG 导致较大的 σg2\sigma_g^2σg2,聚类结果较粗略。
    • 较大的 GGG 导致较小的 σg2\sigma_g^2σg2,聚类结果更精细。
4. 高斯核宽度的意义
  • 在 AFC 算法中,高斯核宽度 σG2\sigma_G^2σG2 最终用于计算隶属度函数:
    μ(pi,xk,σG)=e−∥pi−xk∥2σG2 \mu(p_i, x_k, \sigma_G) = e^{-\frac{\|p_i - x_k\|^2}{\sigma_G^2}} μ(pi,xk,σG)=eσG2pixk2
    其中,pip_ipi 是聚类中心(中位数),xkx_kxk 是数据点。
  • σG2\sigma_G^2σG2 控制了隶属度函数的“影响范围”。较大的 σG2\sigma_G^2σG2 表示每个聚类中心的影响范围较大,数据点更容易被分配到多个聚类;较小的 σG2\sigma_G^2σG2 则表示影响范围较小,聚类结果更加明确。
  • 通过从数据中自适应地计算 σG2\sigma_G^2σG2,AFC 算法避免了手动调参的困难,同时能够更好地适应数据的内在结构。
5. 递归过程的稳定性
  • 由于 σg2\sigma_g^2σg2 是基于前一步的 σg−12\sigma_{g-1}^2σg12 计算的,这种递归方式确保了计算的稳定性和一致性。
  • 每一步的 σg2\sigma_g^2σg2 都是从数据中提取的统计量,而不是人为设定的参数,因此具有很强的数据驱动特性。

总结

公式 (5) 的数学原理在于通过递归的方式,利用数据点之间的距离信息和用户设定的粒度级别 GGG,自适应地计算出适合当前数据分布的高斯核宽度 σG2\sigma_G^2σG2。这一过程的核心思想是:

  1. 全局到局部的过渡:从全局尺度 σ02\sigma_0^2σ02 开始,逐步细化到更局部的结构。
  2. 数据驱动的自适应性:通过递归计算,算法能够自动调整核宽度,无需人工干预。
  3. 粒度控制:用户可以通过调整 GGG 来控制聚类结果的精细程度,从而灵活应对不同复杂度的数据分布。

这种设计不仅提高了算法的鲁棒性和通用性,还使得 AFC 算法能够在多种场景下(静态数据和流式数据)表现出优异的性能。

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

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

相关文章

ELK是什么

ELK 是一个广受欢迎的开源技术栈,用于实时采集、处理、存储、搜索、分析和可视化海量的日志数据(log)和机器生成的数据(machine data),尤其是在 IT 系统监控、应用故障排查、安全分析和业务智能等领域应用广…

[硬件电路-123]:模拟电路 - 信号处理电路 - 常见的高速运放芯片、典型电路、电路实施注意事项

一、高速运放常见芯片型号及特性高速运放(高速运算放大器)通常指带宽(GBW)超过10MHz、压摆率(SR)高于10V/μs的器件,适用于视频处理、通信系统、高速数据采集等场景。以下是典型芯片及其特性&am…

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题 一、WinRiver项目流量汇总XML内容 1.1、索引可变,索引下 XmlElement 元素内容固定 1.2、如何将对象 BottomTrack 的动态内容序列化为 XML ? 1.3、如何将 XML 动态内容反序列化为对象 BottomTrack ? 二、XML 动态…

【力扣 Hot100】 刷题日记

D3 128.最长连续序列 错解 class Solution {public int longestConsecutive(int[] nums) {Arrays.sort(nums);int maxCnt 0;int cnt 0;for (int i 0; i < nums.length - 1; i) {if(nums[i] ! nums[i 1] - 1){//如果不连续&#xff0c;取cnt与maxCnt较大值&#xff0c…

飞算JavaAI编程插件:以AI之力赋能Java开发,让编码效率再升级

你是否希望自己敲代码的时候总有一位大佬在你背后帮你保驾护航。想象一下&#xff0c;当你对着Java编辑器敲代码时&#xff0c;身后站了位“隐形大神”——你刚敲出for&#xff0c;它就预判到你要遍历集合&#xff0c;自动补全带泛型的循环逻辑&#xff1b;你手滑把equals写成&…

机器学习通关秘籍|Day 03:决策树、随机森林与线性回归

目录 一、决策树 1、概念 2、基于信息增益的决策树的建立 &#xff08;1&#xff09;信息熵 &#xff08;2&#xff09;信息增益 &#xff08;3&#xff09;信息增益决策树建立步骤 3、基于基尼指数的决策树的建立 4、API 二、随机森林 1、算法原理 2、API 三、线性…

C++进阶—C++的类型转换

第一章&#xff1a;C语言中的类型转换在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与接收返回值类型不一致时&#xff0c;就需要发生类型转化&#xff0c;C语言中总共有两种形式的类型转换&#xff1a…

基于Flask的微博话题多标签情感分析系统设计

基于Flask的微博话题情感分析系统设计与实现 一、项目概述 本项目是一个轻量化的微博话题情感分析系统&#xff0c;通过Flask框架整合情感分析模型&#xff0c;实现对微博话题及评论的情感标签识别与结果展示。系统面向普通用户和研究者&#xff0c;提供简单易用的操作界面&…

TDengine 中 TDgpt 的模型评估工具

模型评估工具 TDgpt 在企业版中提供预测分析模型和异常检测模型有效性评估工具 analytics_compare&#xff0c;该工具能够使用 TDengine 中的时序数据作为 回测依据&#xff0c;评估不同预测模型或训练模型的有效性。该工具在开源版本中不可用使用评估工具&#xff0c;需要在其…

【DL学习笔记】DataLoader类功能和参数说明

文章目录一、Dataset 与 DataLoader 功能介绍抽象类Dataset的作用DataLoader 作用两者关系二、torch.utils.data.DataLoader代码示例常用参数图示num_workers设置多少合适数据加载子进程如何并行的pin_memorysampler两种sampler顺序采样 SequentialSampler随机采样 RandomSampl…

JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存管理是自动化的&#xff0c;这主要通过垃圾回收机制实现。JVM将堆内存划分为不同的区域&#xff0c;以便更高效地管理和回收对象。以下是关于年轻代、老年代、永久代&#xff08;或元空间&#xff09;、Eden区和Surv…

译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例

来自上传文件中的文章《Using Causal Inference for Measuring Marketing Impact: How BBC Studios Utilises Geo Holdouts and CausalPy》 本篇介绍了在传统A/B测试不适用时&#xff0c;如何利用贝叶斯合成控制方法和地理区域保留来评估营销活动效果。其亮点在于通过构建“反事…

Web开发-PHP应用TP框架MVC模型路由访问模版渲染安全写法版本漏洞

我们先使用/index.php/index/index/test&#xff0c;就是图中的test()方法 /index.php/index/index/index&#xff0c;这个回显就是111 http://127.0.0.1:83/index.php/index/index/test2?x123456 public function test2() {$x$_GET[x];return $x; } 这里再做一个案例更详细一…

FreeRTOS列表系统深度解析

FreeRTOS列表系统深度解析 一、核心数据结构 1. 列表控制块 (List_t) typedef struct xLIST {volatile UBaseType_t uxNumberOfItems; // 当前列表项数量ListItem_t * pxIndex; // 遍历指针&#xff08;用于轮询调度&#xff09;MiniListItem_t xListEnd; …

《Linux编译器:gcc/g++食用指南》

坚持用 清晰易懂的图解 代码语言&#xff0c;让每个知识点变得简单&#xff01; &#x1f680;呆头个人主页详情 &#x1f331; 呆头个人Gitee代码仓库 &#x1f4cc; 呆头详细专栏系列 座右铭&#xff1a; “不患无位&#xff0c;患所以立。” 《Linux编译器&#xff1a;GCC…

SparkKV转换算子实战解析

目录 KV算子 parallelizePairs mapToPair mapValues groupByKey reduceByKey sortByKey 算子应用理解 reduceByKey和groupByKey的区别 groupByKeymapValues实现KV数据的V的操作 改进用reduceByKey groupby通过K和通过V分组的模板代码 问题集锦 宝贵的经验 这里会…

深度解析 TCP 三次握手与四次挥手:从原理到 HTTP/HTTPS 的应用

TCP 的三次握手和四次挥手是网络通信的基石&#xff0c;无论是 HTTP 还是 HTTPS&#xff0c;它们都依赖 TCP 提供可靠的传输层服务。本文将用万字篇幅&#xff0c;结合 Mermaid 图表和代码示例&#xff0c;深入讲解 TCP 三次握手、四次挥手的原理、过程、状态变化&#xff0c;以…

Hyper-V + Centos stream 9 搭建K8s集群(一)

一、创建虚拟机一台32G内存&#xff0c;16核心的Win11&#xff0c;已经安装了Hyper-V 管理器。然后也下载了CentOS-Stream-9-latest-x86_64-dvd1.iso的镜像文件。这里Hyper-V创建虚拟机的过程就不赘述了&#xff0c;如果出现虚拟机加载不到镜像的问题&#xff0c;先把这个使用安…

Pygame如何制作小游戏

以下是 Pygame 的详细使用指南&#xff0c;从安装到开发完整游戏的步骤说明&#xff0c;包含代码示例和最佳实践&#xff1a; 一、安装与环境配置 1. 安装 Pygame pip install pygame2. 验证安装 import pygame pygame.init() print(pygame.version.ver) # 应输出版本号&am…

@【JCIDS】【需求论证】联合能力集成与开发系统知识图谱

JCIDS(联合能力集成与开发系统)知识图谱 1. JCIDS概述 2. JCIDS的提出背景 3. JCIDS核心流程 4. JCIDS分析方法 5. JCIDS优势 6. JCIDS与采办系统的关系 7. JCIDS知识图谱结构 8. 对我的启示 9.JCIDS(联合能力集成与开发系统)相关术语列表 10. 参考文献 1. JCIDS概述 定义:…