多重样本分割:提升异质性处理效应估计稳定性的关键技术

news2026/5/24 6:10:22
1. 项目概述为什么我们需要更稳定的异质性处理效应估计在政策评估、药物临床试验或者互联网产品的A/B测试中我们常常想知道一个干预措施比如一项新政策、一种新药、一个产品功能对不同人群的效果是否一样。这个“不一样的效果”在因果推断领域被称为异质性处理效应。简单来说就是“一刀切”的干预可能并不存在对张三有效的策略对李四可能无效甚至有害。精准识别出谁受益、谁不受益甚至受损是实现个性化医疗、精准施策和精细化运营的关键。然而准确估计HTE是个老大难问题。传统的回归方法在面临高维特征比如成百上千的用户画像标签时往往力不从心容易过拟合。于是机器学习ML模型如随机森林、梯度提升树如XGBoost甚至神经网络因其强大的预测能力被引入。但直接使用ML模型估计因果效应会引入“正则化偏差”——模型为了防止过拟合而进行的自我约束可能会错误地“平滑”掉真实的效应异质性。为了解决这个问题去偏机器学习应运而生。其核心思想是“样本分割”把数据分成两部分一部分用来训练复杂的ML模型捕捉信号另一部分用来对模型的预测进行无偏的统计推断。这就像让一个“侦探”ML模型根据一部分线索做出推理然后由另一位“法官”统计推断程序在另一部分独立的证据上进行公正的审判避免侦探先入为主的偏见影响最终判决。但DML有个软肋它通常只做一次分割。这就好比法官的判决严重依赖于第一次随机抽选的证据样本。如果这次抽选恰好比较“偏”比如训练集里恰好都是对干预反应强烈的人那么最终的效应估计就会不稳定波动很大。在学术界这被称为“估计风险”高。更糟糕的是如果研究者无意或有意地尝试多个随机种子直到找到一个能得出“漂亮”结论的分割即“数据挖掘”那么基于单次分割的推断结果就可能严重失真导致错误的科学发现或商业决策。因此我们面临的核心挑战是如何在利用ML强大预测能力的同时获得一个稳定、可靠、对数据分割随机性不敏感的HTE估计这正是多重样本分割技术要解决的问题。它不再把宝押在一次随机分割上而是进行成百上千次随机分割每次都用DML框架进行估计最后将所有结果聚合起来比如取中位数。这种方法的思想朴素而强大既然一次分割的结果可能“看运气”那我就用大量分割的结果来“投票”用集体的智慧来抵消单次随机性的影响。这不仅能显著降低估计的波动性更小的标准差和平均绝对偏差还能有效抵御“数据挖掘”带来的风险因为无论你怎么换种子大量分割的聚合结果都异常稳定。接下来我将以一个模拟实验和实际考量为线索拆解多重样本分割以CDDF方法为例如何工作为什么有效以及在实践中你会遇到哪些坑、该如何规避。2. 核心原理拆解从单次分割到多重分割稳定性如何而来要理解多重分割为什么能提升稳定性我们得先深入看看单次分割的DML到底在干什么以及它的软肋在哪里。2.1 去偏机器学习与样本分割的本质假设我们想估计在给定用户特征Z的条件下处理Treatment对结果Outcome的效应即条件平均处理效应CATE。一个天真的想法是直接用所有数据训练一个ML模型来预测Y同时输入处理变量T和特征Z。但这样得到的模型对T的依赖关系混杂了模型为了提升整体预测精度而可能引入的偏差。DML的经典双样本分割法也称为“交叉拟合”提供了一个解决方案分割将数据集随机分为两个部分辅助样本集Auxiliary Sample和验证样本集Validation Sample。建模仅使用辅助样本集训练一个ML模型来预测结果Y。这个模型会学习特征Z和处理T与Y之间的复杂关系。去偏与推断在未曾参与建模的验证样本集上利用第一步训练的模型构造一个“去偏”的估计量例如基于Neyman正交得分函数并进行统计推断计算置信区间、p值。这个过程的关键在于“样本分割”保证了推断阶段的独立性从而消除了ML模型过拟合带来的偏差。这好比用一批矿石辅助集训练出一个高精度的金属探测器ML模型然后拿这个探测器去一片全新的矿区验证集探矿在新矿区的发现才是可信的。2.2 单次分割的阿喀琉斯之踵方差与“数据挖掘”风险尽管DML在理论上保证了无偏性但单次分割在实践中暴露出两个突出问题估计方差大稳定性差估计结果严重依赖于那一次特定的随机分割。如果验证集恰好包含了许多效应异常大或异常小的个体那么点估计值就会偏离真实值其置信区间也会很宽。在模拟中这表现为较高的标准差SD和平均绝对偏差MAD。对于依赖该结论做决策的研究者或工程师来说这种不稳定性是无法接受的。对“数据挖掘”极度敏感在科研或商业分析中一个常见的有时是无意识的操作是如果第一次随机分割得到的结果不显著或不符合预期研究者可能会换一个随机种子重新分割数据再跑一次分析。重复这个过程比如5次F5然后有意或无意地报告那个最“好看”比如p值最小、效应量最大的结果。这种操作会严重膨胀第一类错误误报效应因为即使真实效应为零你反复尝试也总能碰上一个“显著”的结果。单次分割方法对此毫无招架之力。2.3 多重分割的聚合优势降低方差抵抗挖掘多重样本分割的思路是对上述问题的直接回应。以CDDF方法为例其流程如下重复进行DML的样本分割流程B次例如B100次。每次都独立地随机将数据划分为辅助集和验证集。对于每一次分割b在验证集上计算我们关心的目标参数如CATE的某个摘要特征如GATES的估计值 θ̂_b 及其标准误。聚合最终的点估计取这B个估计值的中位数Median而非平均值。中位数对异常值某次特别“倒霉”的分割更稳健。最终的推断如置信区间则基于这B次估计的分布来构建。为什么这样做能提升稳定性降低方差根据大数定律多次独立估计的聚合尤其是中位数会平滑掉单次估计中的极端随机波动。想象一下天气预报如果只有一个气象站它的预报可能不准但如果汇总成百上千个气象站的数据得到的整体天气趋势就会可靠得多。多重分割通过聚合大量独立估计有效降低了最终估计的方差和平均绝对偏差。抵抗数据挖掘当研究者尝试不同随机种子即不同分割时在单次分割方法下每次尝试都会得到一个差异很大的结果这为“挑选”结果提供了可能。但在多重分割框架下即使你换了种子重新运行整个“100次分割-聚合”流程由于每次都是基于大量分割的聚合最终结果的变化会非常微小。这就从根本上剥夺了“数据挖掘”的操作空间因为你怎么挖结果都差不多。注意多重分割提升的是估计的稳定性降低方差和稳健性抵抗挖掘它并不直接解决模型设定错误或遗漏变量偏差等因果识别的基本问题。其前提是DML所依赖的识别假设如无混淆性已经满足。3. 方法实现与实操要点以CDDF方法为例理论很美好但落地到代码和实际分析中我们需要关注一系列细节。下面我将结合模拟实验的设置拆解CDDF方法实现的关键步骤和参数选择。3.1 模拟实验环境搭建为了复现和验证方法的性能我们首先需要构建一个可控的模拟环境。这能帮助我们透彻理解方法在何种条件下有效。数据生成过程 我们采用一个经典的设置模拟一个随机化实验其中处理分配T是随机的例如通过抛硬币决定用户是否看到新界面。特征生成生成一个包含p个协变量的特征向量Z通常来自多元正态分布。维度p可以设置得较高比如20或100以模拟高维场景。CATE函数定义真实的异质性处理效应函数 τ(Z)。例如一个简单的线性形式τ(Z) β * Z1效应只依赖于第一个特征或者更复杂的非线性形式如τ(Z) sin(Z1) * max(Z2, 0)。为了检验第一类错误我们也会设置τ(Z) 0的零效应场景。结果生成结果变量Y由基线效应、处理效应和噪声构成Y b(Z) T * τ(Z) ε。其中b(Z)是复杂的基线函数模拟未受处理时的结果ε是随机噪声。基线函数b(Z)通常也设定为非线性并用ML模型来拟合。核心参数n: 样本量如1000。p: 特征维度。B: 多重分割的次数如100。split_ratio: 每次分割中辅助集与验证集的比例如2/3 vs 1/3。# 伪代码示例数据生成 import numpy as np def generate_data(n1000, p20, tau_typelinear, seed42): np.random.seed(seed) Z np.random.normal(0, 1, (n, p)) # 高维特征 T np.random.binomial(1, 0.5, n) # 随机处理分配 # 复杂的基线函数 b_Z np.sin(Z[:, 0]) np.log(1 np.abs(Z[:, 1])) Z[:, 2]**2 # 定义CATE if tau_type linear: tau_Z 0.5 * Z[:, 0] # 效应随Z1线性变化 elif tau_type zero: tau_Z np.zeros(n) # 零效应用于检验size elif tau_type nonlinear: tau_Z np.sin(Z[:, 0]) * np.maximum(Z[:, 1], 0) # 结果变量 epsilon np.random.normal(0, 0.1, n) Y b_Z T * tau_Z epsilon return Y, T, Z, tau_Z3.2 CDDF方法实现步骤拆解基于上述数据CDDF方法的实现可以分解为以下循环步骤一循环进行多重分割与估计对于b 1 to B随机分割将数据集{Y, T, Z}随机划分为辅助集D_aux和验证集D_val比例为split_ratio。辅助集建模仅在D_aux上训练两个ML模型通常使用交叉验证防止过拟合model_y: 用于预测结果Y特征包括Z和T。或者更常见的做法是分别拟合E[Y|T1, Z]和E[Y|T0, Z]的模型。model_t: 用于预测处理倾向得分E[T|Z]。在完全随机化实验中这个值是常数如0.5此步可省略但在观测性研究中至关重要。验证集预测与去偏将训练好的模型应用于D_val得到预测值。然后使用DML的双重稳健估计量或Neyman正交得分在验证集上计算目标参数θ的估计值θ̂_b及其方差估计σ̂_b²。目标参数可以是平均处理效应如果对所有个体取平均。分组平均处理效应将验证集样本按某个规则如基于model_y预测的CATE排序分组估计每组的平均效应。CATE在特定点的值。步骤二聚合估计结果点估计收集B个估计值{θ̂_1, θ̂_2, ..., θ̂_B}。最终的点估计θ̂_CDDF取其中位数。为什么用中位数而非均值中位数对少数几次极端糟糕的分割异常值不敏感稳健性更强。均值容易受到这些异常值的拉扯。方差估计与推断这是关键且微妙的一步。不能简单地计算θ̂_b的样本方差因为每次分割的估计并非独立同分布数据有重叠。CDDF方法通常采用以下两种策略之一分位数法利用θ̂_b的经验分布直接构造分位数置信区间。例如95%的置信区间可以取θ̂_b的2.5%分位数和97.5%分位数。基于中位数标准误的调整先计算每个θ̂_b的标准误σ̂_b然后取这些标准误的中位数median(σ̂_b)。最终的标准误可以近似为median(σ̂_b) / sqrt(B)的某种调整形式但更常见和稳健的做法是直接使用分位数法进行推断。# 伪代码示例CDDF核心循环 def cddf_estimate(Y, T, Z, B100, split_ratio0.67): n len(Y) n_aux int(n * split_ratio) estimates [] std_errors [] for b in range(B): # 1. 随机分割 idx np.random.permutation(n) idx_aux, idx_val idx[:n_aux], idx[n_aux:] Y_aux, T_aux, Z_aux Y[idx_aux], T[idx_aux], Z[idx_aux] Y_val, T_val, Z_val Y[idx_val], T[idx_val], Z[idx_val] # 2. 辅助集建模 (以随机森林为例) from sklearn.ensemble import RandomForestRegressor # 拟合处理组和对照组的模型 rf_t1 RandomForestRegressor().fit(Z_aux[T_aux1], Y_aux[T_aux1]) rf_t0 RandomForestRegressor().fit(Z_aux[T_aux0], Y_aux[T_aux0]) # 预测倾向得分随机化实验中为常数 prop_score np.mean(T_aux) # 简单处理 # 3. 验证集预测与去偏估计 (简化版以ATE为例) # 预测潜在结果 Y1_hat_val rf_t1.predict(Z_val) Y0_hat_val rf_t0.predict(Z_val) # 双重稳健估计量 ipw T_val / prop_score - (1 - T_val) / (1 - prop_score) dr_scores Y0_hat_val ipw * (Y_val - (T_val * Y1_hat_val (1 - T_val) * Y0_hat_val)) theta_hat_b np.mean(dr_scores) # 计算本次估计的标准误基于经验影响函数 sigma_hat_b np.std(dr_scores) / np.sqrt(len(Y_val)) estimates.append(theta_hat_b) std_errors.append(sigma_hat_b) # 4. 聚合 theta_hat_cddf np.median(estimates) # 使用分位数法构建95%置信区间 ci_lower np.percentile(estimates, 2.5) ci_upper np.percentile(estimates, 97.5) return { point_estimate: theta_hat_cddf, confidence_interval: (ci_lower, ci_upper), all_estimates: estimates, all_std_errors: std_errors }3.3 关键参数选择与经验法则分割次数BB越大聚合效果越稳定但计算成本线性增加。模拟研究表明B100通常能在稳定性和计算量之间取得很好的平衡。B50可能略显不足B200或500的收益边际递减。建议从B100开始。分割比例常见的做法是split_ratio 2/3辅助集和1/3验证集。这个比例需要在建模精度和推断精度之间权衡辅助集越大ML模型估计越准验证集越大统计推断的精度越高。2/3和1/3是一个经验上的甜点。不建议使用对分50/50因为这会同时削弱两端的表现。ML模型选择理论上CDDF对底层ML模型是“通用”的。你可以使用随机森林、梯度提升树、LASSO、神经网络等。选择标准应与你的数据特性匹配非线性、交互作用多可选树模型特征维度极高且可能稀疏可选LASSO。关键是要在辅助集上使用交叉验证来调参防止过拟合因为过拟合的模型在验证集上的表现会失真。聚合统计量CDDF原文推荐使用中位数。这是出于稳健性的考虑。在少数情况下如果B次估计的分布大致对称且没有严重异常值均值也可以考虑但中位数是更安全的选择。实操心得在实际项目中我通常会先跑一个B20的“快速预览”版本查看估计值的分布情况绘制直方图或箱线图。如果分布严重偏态或存在多个离群点那中位数的优势就非常明显。同时这也能提前感知计算时间是否可接受。4. 性能验证与对比分析从模拟数据看优劣让我们回到开篇提到的论文中的模拟实验看看CDDF与单次分割方法如Imai和Li的IMLI方法以及应对“数据挖掘”场景时的表现。下表总结了在零效应τ(Z)0和有效应τ(Z)(Z1)场景下的关键结果表1零效应检验与有效性检验对比显著性水平5%方法场景错误拒绝率正确拒绝率单次分割 (Wager)零效应8.40%-单次分割 (Wager)有效应-81.01%多重分割 (CDDF)零效应0.81%-多重分割 (CDDF)有效应-84.25%表2估计风险与抗挖掘能力对比零效应场景指标IMLI (单次分割)CDDF (多重分割)IMLI (挖掘F5)CDDF (挖掘F5)偏差0.000.000.140.03标准差0.150.090.120.09平均绝对偏差0.100.060.130.06错误拒绝率0.40%0.00%1.66%0.01%结果解读与启示控制第一类错误错误拒绝率的能力在检验零假设效应为0时单次分割的“Naïve” DML方法错误拒绝率高达8.4%远超5%的预设水平这意味着它有较高的“假阳性”风险。而CDDF方法将错误拒绝率大幅降低到0.81%表现出极强的保守性和可靠性。这在需要严格控制错误发现的严肃科学研究和政策评估中至关重要。估计的精确度与稳定性无论是标准差还是平均绝对偏差CDDF的值都显著低于单次分割方法IMLI。这说明多重分割聚合后的估计值波动更小更稳定。研究者可以更确信CDDF给出的估计值更接近真实值重复实验的结果变化也更小。对抗“数据挖掘”的鲁棒性模拟“数据挖掘”行为尝试5个不同随机种子并挑选最显著结果后单次分割方法IMLI的偏差和错误拒绝率急剧上升偏差从0.00增至0.14错误率从0.4%升至1.66%。而CDDF的各项指标几乎纹丝不动偏差仅从0.00微增至0.03错误率从0.00%微增至0.01%。这清晰地证明多重分割方法从根本上杜绝了因随机种子选择而“挑结果”的可能性保证了研究结论的客观性。检验效能正确拒绝率并未牺牲在存在真实效应的场景下CDDF的正确拒绝率84.25%甚至略高于单次分割的最佳方法81.01%。这表明稳定性提升的代价并不是“把信号也平滑掉了”而是在更好地控制噪声的同时保留了检测真实信号的能力。5. 常见问题、实战陷阱与进阶考量在实际应用CDDF或多重分割思想时你会遇到一些论文中不会细说的挑战。5.1 计算成本与效率优化问题进行B100次分割意味着要训练B个ML模型计算量是单次分割的百倍。对于大型数据集或复杂模型如深度学习这可能成为瓶颈。解决方案并行化这是最直接的优化手段。每次分割独立天然适合并行计算。可以使用Python的joblib、multiprocessing库或在Spark等分布式框架上运行。from joblib import Parallel, delayed results Parallel(n_jobs-1)(delayed(single_split_estimation)(i) for i in range(B))模型轻量化在辅助集上训练模型时不必追求极限精度。适当降低树模型的max_depth、神经网络的epoch数可以在几乎不影响最终聚合偏差的情况下大幅缩短单次训练时间。减少B在计算资源极度紧张时可以尝试B50甚至30并观察估计值分布的收敛情况。如果分布已经相对集中进一步增加B的收益很小。使用暖启动如果B次分割中使用的ML模型类型和参数相同可以考虑使用“暖启动”技巧但实现较复杂通常并行化是更简单的选择。5.2 置信区间构造的陷阱问题如何为基于中位数的点估计构造一个有效的置信区间简单使用θ̂_b的标准误来计算是不对的因为估计之间不独立。正确做法分位数法推荐直接使用θ̂_b的经验分位数。例如95%置信区间为[percentile(θ̂_b, 2.5), percentile(θ̂_b, 97.5)]。这种方法简单、非参数、无需假设分布且在实践中表现良好。自助法可以对原始数据进行重抽样然后在每个自助样本上运行整个CDDF流程B次分割得到一系列θ̂_CDDF再用这些值构造置信区间。但这计算量极大B * 自助次数。避免不要计算θ̂_b的样本标准差然后除以sqrt(B)来作为标准误这是错误的因为它错误地假设了θ̂_b是独立同分布的。5.3 目标参数的选择与解释问题CDDF估计的是什么是每个人的CATE吗澄清CDDF以及其基础的DML框架通常不直接输出对每个个体的CATE点估计。它更擅长且理论保证更完备的是估计CATE的摘要特征例如平均处理效应如果对所有人一样那就是ATE。分组平均处理效应比如将人群按预测的CATE分为高、中、低三组估计每组的平均效应。这回答了“对哪类人效果最好”的问题。CATE的排序检验CATE函数是否单调或评估个性化处理规则的价值。如果你需要每个个体的CATE预测值你可能需要依赖纯粹的ML模型如因果森林但那些方法的统计推断置信区间更为复杂。CDDF的优势在于它为这些摘要特征提供了稳健的统计推断。5.4 与序贯推断等替代方案的权衡Wager (2024) 提出的序贯推断方法在单次分割内优化了数据使用效率提升了检验效能。CDDF可以与它结合吗可以而且这是未来的一个方向。你可以在CDDF的每一次分割内部采用序贯推断的方法来利用数据然后再进行跨分割的聚合。这相当于在“稳定性”和“单次分割效率”两个维度上都做了优化但计算和理论复杂度更高。如何选择追求极致稳定性和抗挖掘能力首选标准的CDDF中位数聚合。样本量较小计算资源有限可以考虑单次分割的序贯推断方法如Wager的方法或Imai和Li的IMLI方法。样本量充足计算不是问题且对结论稳健性要求极高可以考虑将序贯推断嵌入CDDF框架。5.5 实战检查清单在应用CDDF分析你的数据前请自问识别假设我的数据满足无混淆性吗在随机化实验中自动满足在观测性研究中需要谨慎。样本量我的样本量足够大吗验证集需要足够大以保证推断可靠性辅助集需要足够大以训练一个好的ML模型。通常n1000是较为安全的起点。ML模型我选择的ML模型适合我的数据吗在辅助集上做过交叉验证调参吗B和分割比例我设定的B是否足够建议100分割比例是否合理建议2/3:1/3结果解读我报告的是中位数点估计和基于分位数的置信区间吗我是否检查了θ̂_b的分布画个直方图以确保没有极端异常值影响中位数计算可行性我是否利用了并行计算预计运行时间是否可以接受多重样本分割的CDDF方法为异质性处理效应的稳健推断提供了一个强大的工具。它用计算成本换取了估计稳定性和推断可靠性的巨大提升尤其适合那些结论至关重要、不容有失的决策场景。理解其原理掌握其实现细节并清醒地认识到其优缺点能让你在因果推断的实践中从“看天吃饭”的单次分割走向“稳如磐石”的聚合推断。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…