两个引擎,两套世界观,共享同一个数据管道。不合并,不做取舍——让它们打架,然后用结果说话。
我在整理数据分类框架时发现了一个问题:我手上有两套分组定义。
分组引擎用传统行业分组——半导体、通信、电力、材料。分组边界稳定,历史数据沉淀多。
全行业引擎用AI产业聚类分组——算力芯片、AI电力、机器人。与产业趋势高度一致,能识别跨传统行业的上下游链路。
问题在于,两套分组定义各跑各的,输出两份报告。我看A报告时觉得有道理,看B报告时也觉得有道理——但两份报告不一致。于是产生了经典的「分类焦虑」:到底信哪套?
纠结之后我做了个决定:不合并,两套独立运行,交叉验证。
合并意味着信息损失——两套分组的颗粒度不同,合并后要么粗的那套拖累细的那套,要么细的那套产生大量冗余。
并行意味着两套引擎共享同一套数据管道和特征提取层,只在聚合层做交集/并集/差异分析。
当两套引擎同时评分时,我注意到一些分组不管用哪套视角看都绕不开:
| 分组 | 分组引擎评分 | 全行业引擎评分 | 交集 |
|---|---|---|---|
| 算力芯片 | 78 | 82 | 🟢 一致 |
| 半导体设备/材料 | 45 | 38 | 🟢 一致 |
| 半导体制造/设计 | 52 | 48 | 🟢 一致 |
| AI电力/储能 | 35 | 42 | 🟢 一致 |
| 机器人/自动化 | 28 | 33 | 🟢 一致 |
| 光通信 | 22 | 55 | ⚠️ 分歧 |
光通信的分歧最有意思:分组引擎认为它评分很低(传统视角受历史数据拖累),全行业引擎觉得它不错(产业聚类视角认为它是AI数据中心的必备基础设施)。
谁对?不做判断,记下来。 等下个月回头看数据再验证。
class DualEngine:
def __init__(self):
self.pipeline = SharedDataPipeline(35_sources)
self.group_engine = GroupEngine(10_groups, 100_samples)
self.silicon_engine = SiliconEngine(16_groups, 264_samples)
def run(self, mode='dual'):
raw_data = self.pipeline.collect()
features = self.pipeline.extract(raw_data)
if mode in ('group', 'dual'):
group_result = self.group_engine.score(features)
if mode in ('silicon', 'dual'):
silicon_result = self.silicon_engine.score(features)
if mode == 'dual':
return self.cross_validate(group_result, silicon_result)
return group_result if mode == 'group' else silicon_result
三套独立入口,共享底层的采集和特征提取,只在输出层做聚合。
之前两套引擎顺序跑,总耗时3分钟。加了个ThreadPoolExecutor:
with ThreadPoolExecutor(max_workers=2) as pool:
future_group = pool.submit(group_engine.score, features)
future_silicon = pool.submit(silicon_engine.score, features)
group_result = future_group.result()
silicon_result = future_silicon.result()
总耗时:3分钟 → 1分47秒。缩减了40%。
# 只跑分组引擎
python3 app.py --run
# 只跑全行业引擎
python3 app.py --silicon-mode
# 双引擎并发 + 交叉验证
python3 app.py --dual-engine
# 双引擎 + 历史对比(输出差异分析)
python3 app.py --dual-engine --diff-mode
$ python3 app.py --dual-engine --diff-mode
[数据采集] 35路 → 412篇 去重后 307篇 ⏱ 12s
[特征提取] 307篇 → 6个分组信号向量 ⏱ 23s
┌──────────────────────────────────┐
│ 分组引擎: 10分组评分完成 ⏱ 34s │
│ 全行业引擎: 16分组评分完成 ⏱ 38s │
└──────────────────────────────────┘
[交叉验证] 完成 ⏱ 1.2s
━━━ 差异分析 ━━━
分组引擎独家检出: 光通信 (22) ≠ 全行业 (55)
全行业引擎独家检出: AI服务器 (28) 分组引擎无此分类
━━━━━━━━━━━━━━━
总耗时: 107s
系统说明:本文记录数据分类系统的架构整合过程,不构成任何决策参考。
💬 留言