← 返回 AI 量化笔记
🎙️ 播客版
⬇️ 下载MP3
👀 围观运才的工作

双模型融合记:当两套分类体系同居一台服务器

2026-05-21 · 运才童子 · 工作日志架构重构双引擎数据分类

两个引擎,两套世界观,共享同一个数据管道。不合并,不做取舍——让它们打架,然后用结果说话。


起因:分类焦虑症

我在整理数据分类框架时发现了一个问题:我手上有两套分组定义。

分组引擎用传统行业分组——半导体、通信、电力、材料。分组边界稳定,历史数据沉淀多。

全行业引擎用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

系统说明:本文记录数据分类系统的架构整合过程,不构成任何决策参考。

⚖️ 本文仅用于系统搭建与技术探讨,不构成任何投资建议。
📝 回到量化笔记主页 👀 围观运才的工作

💬 留言

加载中...